Một câu hỏi rất phổ biến trong ngữ cảnh của gấu trúc là liệu bạn có thực sự có thể tạo một DataFrame trống và sau đó lặp lại điền nó vào bằng cách nối thêm -say- một hàng tại một thời điểm hay không. Tuy nhiên, cách tiếp cận này có xu hướng khá kém hiệu quả và nên tránh bằng mọi giá
Trong bài viết hôm nay, chúng ta sẽ thảo luận về một phương pháp thay thế sẽ mang lại cho bạn kết quả tương tự nhưng hiệu quả hơn nhiều so với việc tạo một DataFrame trống và sau đó sử dụng các vòng lặp để nối các hàng trong đó
Những gì để tránh
Tất nhiên, thực sự có thể tạo một DataFrame gấu trúc trống và sau đó nối thêm các hàng theo kiểu lặp đi lặp lại. Cách tiếp cận này đặc biệt sẽ giống như dưới đây
import numpy as np
import pandas as pd
from numpy.random import randint# Make sure results are reproducible
np.random.seed[10]# Instantiate an empty pandas DF
df = pd.DataFrame[columns=['colA', 'colB', 'colC']]# Fill in the dataframe using random integers
for i in range[7]:
df.loc[i] = [i] + list[randint[100, size=2]]print[df]
colA colB colC
0 0 9 15
1 1 64 28
2 2 89 93
3 3 29 8
4 4 73 0
5 5 40 36
6 6 16 11
Mặc dù cách tiếp cận ở trên sẽ thực hiện được mẹo, nhưng phải tránh cách này vì nó khá kém hiệu quả và chắc chắn có nhiều cách tiếp cận hiệu quả hơn là tạo một DataFrame trống và sau đó xây dựng nó bằng cách sử dụng các vòng lặp
Một cách tiếp cận thậm chí còn tồi tệ hơn, đó là việc sử dụng các phương thức append[]
hoặc concat[]
bên trong các vòng lặp
Điều đáng chú ý là
concat[]
[và do đóappend[]
] tạo một bản sao đầy đủ của dữ liệu và việc liên tục sử dụng lại chức năng này có thể tạo ra hiệu suất đáng kể. Nếu bạn cần sử dụng thao tác trên một số bộ dữ liệu, hãy sử dụng cách hiểu danh sách— tài liệu gấu trúc
Thay vào đó, sử dụng danh sách
Thay vì nối thêm các hàng theo kiểu lặp lại bằng cách sử dụng thuộc tính loc[]
hoặc phương pháp append/concat
, bạn thực sự có thể nối thêm dữ liệu vào một danh sách và cuối cùng khởi tạo một Khung dữ liệu gấu trúc mới trực tiếp từ danh sách được tạo trước. Điều này thậm chí còn được đề cập trong tài liệu chính thức về gấu trúc
Lặp đi lặp lại các hàng nối vào DataFrame có thể chuyên sâu hơn về mặt tính toán so với một phép nối đơn lẻ. Một giải pháp tốt hơn là nối các hàng đó vào danh sách rồi nối tất cả danh sách với DataFrame ban đầu cùng một lúc
— tài liệu gấu trúc
import numpy as np
import pandas as pd
from numpy.random import randint# Make sure results are reproducible
np.random.seed[10]data = []
for i in range[7]:
data.append[[i] + list[randint[100, size=2]]df = pd.DataFrame[data, columns=['colA', 'colB', 'colC']]print[df]
colA colB colC
0 0 9 15
1 1 64 28
2 2 89 93
3 3 29 8
4 4 73 0
5 5 40 36
6 6 16 11
Làm việc với các danh sách [nối thêm hoặc loại bỏ các phần tử] hiệu quả hơn nhiều và bạn phải luôn thích cách tiếp cận này khi nói đến việc lặp lại các hàng nối thêm vào DataFrames của gấu trúc
Suy nghĩ cuối cùng
Trong bài viết hôm nay, chúng ta đã thảo luận về lý do tại sao điều quan trọng là tránh tạo DataFrames trống và lặp đi lặp lại việc lấp đầy chúng vì điều này sẽ ảnh hưởng đáng kể đến hiệu suất
Thay vào đó, chúng tôi đã khám phá cách xây dựng lặp đi lặp lại các cấu trúc như vậy bằng cách sử dụng danh sách và cuối cùng tạo DataFrames gấu trúc mới từ danh sách đã tạo
Trở thành thành viên và đọc mọi câu chuyện trên Medium. Phí thành viên của bạn hỗ trợ trực tiếp cho tôi và các nhà văn khác mà bạn đọc. Bạn cũng sẽ có toàn quyền truy cập vào mọi câu chuyện trên Phương tiện
bạn có thể lưu kết quả filter
của mình [đúng] vào danh sách, sau đó sử dụng pd.concat
để nhận df mới
thử cái này
filtered = []
for i in list_holidays:
filter = df[df['date'].str.contains[i]]
filtered.append[filter]
new_df = pd.concat[filtered]
print[new_df]
hoặc với một danh sách hiểu đơn giản
new_df = pd.concat[[df[df['date'].str.contains[i]] for i in list_holidays]]
print[new_df]
Hãy thảo luận về cách tạo một DataFrame trống và nối các hàng & cột vào nó trong Pandas n Python. Có nhiều cách để chúng ta có thể thực hiện nhiệm vụ này. Sau đây chúng tôi sẽ đề cập đến phần sau
- Tạo một Dataframe trống trong Pandas
- Nối hàng vào Dataframe trong Pandas
- Nối hàng vào Dataframe trong Pandas
Tạo Dataframe trống
Python3
# import pandas library as pd
import
pandas as pd
# create an Empty DataFrame object
df
=
pd.DataFrame[]
# import pandas library as pd
0____13_______1
đầu ra
Empty DataFrame Columns: [] Index: []
Nối thêm cột vào khung dữ liệu
ví dụ 1
Tạo một DataFrame trống hoàn chỉnh mà không có bất kỳ tên cột hoặc chỉ mục nào, sau đó nối từng cột trong Pandas vào đó.
Python3
# import pandas library as pd
import
pandas as pd
# create an Empty DataFrame object
df
=
pd.DataFrame[]
# import pandas library as pd
0____13_______1
import
4
import
5import
6import
7=
import
9pandas as pd
0pandas as pd
1pandas as pd
2pandas as pd
1pandas as pd
4import
7
import
5pandas as pd
8import
7=
import
9
2pandas as pd
1
4pandas as pd
1
6import
7
import
5# create an Empty DataFrame object
0import
7=
import
9# create an Empty DataFrame object
4pandas as pd
1# create an Empty DataFrame object
6pandas as pd
1# create an Empty DataFrame object
8import
7
df
đầu ra.
ví dụ 2
Phương pháp này sẽ tạo một Dataframe mới với một cột mới được thêm vào Dataframe cũ bằng cách sử dụng gán trong Pandas
Python3
df
2
import
pandas as pd
df
6
df
7=
df
9import
6=
1=
2pandas as pd
1=
4pandas as pd
1=
6pandas as pd
1=
8=
9
pd.DataFrame[]
0_______20_______1=
1pd.DataFrame[]
3pandas as pd
1pd.DataFrame[]
5pandas as pd
1pd.DataFrame[]
3pandas as pd
1pd.DataFrame[]
9=
9
pd.DataFrame[]
0_______16_______2=
1
4pandas as pd
1
6pandas as pd
1
4pandas as pd
1
4# import pandas library as pd
01
# import pandas library as pd
04
df
=
# import pandas library as pd
07
# import pandas library as pd
09
# import pandas library as pd
10=
# import pandas library as pd
12=
___import
9# import pandas library as pd
15pandas as pd
1# import pandas library as pd
17pandas as pd
1# import pandas library as pd
19pandas as pd
1# import pandas library as pd
21# import pandas library as pd
22
# import pandas library as pd
24
# import pandas library as pd
0_______13_______26
đầu ra.
Nối hàng vào Dataframe
ví dụ 1
Tạo một DataFrame trống chỉ với tên cột, sau đó nối từng hàng một vào nó bằng cách sử dụng.
Python3
# import pandas library as pd
import
pandas as pd
# import pandas library as pd
31
# import pandas library as pd
32
df
19_______ # import pandas library as pd
35_______19_______ import
9import
6pandas as pd
1pandas as pd
8pandas as pd
1# create an Empty DataFrame object
0# import pandas library as pd
22
# import pandas library as pd
0____13_______1
# import pandas library as pd
47
df
19_______ # import pandas library as pd
50import
6 # import pandas library as pd
52pandas as pd
0pandas as pd
1pandas as pd
8 # import pandas library as pd
52
2pandas as pd
1# create an Empty DataFrame object
0 # import pandas library as pd
52# create an Empty DataFrame object
4# import pandas library as pd
62
# import pandas library as pd
63# import pandas library as pd
64____19_______ # import pandas library as pd
66# import pandas library as pd
67
df
19_______ # import pandas library as pd
50import
6 # import pandas library as pd
52# import pandas library as pd
74pandas as pd
1pandas as pd
8 # import pandas library as pd
52# import pandas library as pd
78pandas as pd
1# create an Empty DataFrame object
0 # import pandas library as pd
52# import pandas library as pd
82# import pandas library as pd
62
# import pandas library as pd
63# import pandas library as pd
64____19_______ # import pandas library as pd
66# import pandas library as pd
67
df
19_______ # import pandas library as pd
50import
6 # import pandas library as pd
52# import pandas library as pd
95pandas as pd
1pandas as pd
8 # import pandas library as pd
52# import pandas library as pd
99pandas as pd
1# create an Empty DataFrame object
0 # import pandas library as pd
52import
03# import pandas library as pd
62
import
05# import pandas library as pd
64____19_______ # import pandas library as pd
66# import pandas library as pd
67
df
đầu ra.
ví dụ 2.
Tạo một DataFrame trống với tên cột và các chỉ mục, sau đó nối từng hàng một với nó bằng phương thức loc[].
Python3
# import pandas library as pd
import
pandas as pd
import
16
import
17
df
19_______ # import pandas library as pd
35_______19_______ import
9import
6pandas as pd
1pandas as pd
8pandas as pd
1# create an Empty DataFrame object
0=
9
# import pandas library as pd
63import
30=
import
9import
33pandas as pd
1import
35pandas as pd
1import
37# import pandas library as pd
22
# import pandas library as pd
0_______14_______41import
42import
43
import
45
import
46
import
47import
33import
7=
import
9pandas as pd
2pandas as pd
1# import pandas library as pd
82pandas as pd
1# create an Empty DataFrame object
8import
7
import
47import
35import
7=
import
9pandas as pd
0pandas as pd
1import
65pandas as pd
1import
67import
7
import
47import
37import
7=
import
9import
74pandas as pd
1# import pandas library as pd
78pandas as pd
1import
65import
7