Làm thế nào để tôi có được số lượng hàng của gấu trúc DataFrame?
Bảng này tóm tắt các tình huống khác nhau mà bạn muốn đếm một cái gì đó trong một khung dữ liệu [hoặc chuỗi, cho tính đầy đủ], cùng với [các] phương thức được đề xuất.
Chú thích
1 trả về số lượng cho mỗi cột làlen[df] # 5 df.shape[0] # 5 len[df.index] # 5
2 vì số không null thay đổi theo cột.len[df] # 5 df.shape[0] # 5 len[df.index] # 5
3 trả về mộtlen[df] # 5 df.shape[0] # 5 len[df.index] # 5
2, vì tất cả các cột trong cùng một nhóm có cùng số lượng hàng.len[df] # 5 df.shape[0] # 5 len[df.index] # 5
5 trả vềlen[df] # 5 df.shape[0] # 5 len[df.index] # 5
6, vì số lượng không null có thể khác nhau giữa các cột trong cùng một nhóm. Để có được số lượng không null theo nhóm cho một cột cụ thể, hãy sử dụnglen[df] # 5 df.shape[0] # 5 len[df.index] # 5
7 trong đó "X" là cột để đếm.len[df] # 5 df.shape[0] # 5 len[df.index] # 5
Ví dụ mã tối thiểu
Dưới đây, tôi hiển thị các ví dụ về từng phương pháp được mô tả trong bảng trên. Đầu tiên, thiết lập -
df = pd.DataFrame[{
'A': list['aabbc'], 'B': ['x', 'x', np.nan, 'x', np.nan]}]
s = df['B'].copy[]
df
A B
0 a x
1 a x
2 b NaN
3 b x
4 c NaN
s
0 x
1 x
2 NaN
3 x
4 NaN
Name: B, dtype: object
Số lượng hàng của DataFrame: len[df]
# 5
df.shape[0]
# 5
len[df.index]
# 5
8, len[df]
# 5
df.shape[0]
# 5
len[df.index]
# 5
9 hoặc df.shape[1]
# 2
len[df.columns]
# 2
0
len[df]
# 5
df.shape[0]
# 5
len[df.index]
# 5
len[df]
# 5
df.shape[0]
# 5
len[df.index]
# 5
df.shape[1]
# 2
len[df.columns]
# 2
len[df]
# 5
df.shape[0]
# 5
len[df.index]
# 5
Có vẻ ngớ ngẩn khi so sánh hiệu suất của các hoạt động thời gian liên tục, đặc biệt là khi sự khác biệt ở mức độ "nghiêm túc, đừng lo lắng về nó". Nhưng đây dường như là một xu hướng với các câu trả lời khác, vì vậy tôi cũng làm như vậy cho sự hoàn chỉnh.
Trong ba phương pháp ở trên,
df.shape[1]
# 2
len[df.columns]
# 2
0 [như được đề cập trong các câu trả lời khác] là nhanh nhất.Ghi chú
- Tất cả các phương thức trên là các hoạt động thời gian không đổi vì chúng là các tra cứu thuộc tính đơn giản.
2 [tương tự nhưdf.shape[1] # 2 len[df.columns] # 2
3] là một thuộc tính trả về một tuple làdf.shape[1] # 2 len[df.columns] # 2
4. Ví dụ:df.shape[1] # 2 len[df.columns] # 2
2 trả vềdf.shape[1] # 2 len[df.columns] # 2
6 cho ví dụ ở đây.df.shape[1] # 2 len[df.columns] # 2
Số lượng cột của DataFrame: df.shape[1]
# 2
len[df.columns]
# 2
7, df.shape[1]
# 2
len[df.columns]
# 2
8
df.shape[1]
# 2
len[df.columns]
# 2
df.shape[1]
# 2
len[df.columns]
# 2
df.shape[1]
# 2
len[df.columns]
# 2
Tương tự như
df.shape[1]
# 2
len[df.columns]
# 2
0, df.shape[1]
# 2
len[df.columns]
# 2
8 là nhanh hơn trong hai phương pháp [nhưng cần nhiều ký tự hơn để loại].Số lượng hàng của một loạt: len[s]
# 5
s.size
# 5
len[s.index]
# 5
1, len[s]
# 5
s.size
# 5
len[s.index]
# 5
2, len[s]
# 5
s.size
# 5
len[s.index]
# 5
3
len[s]
# 5
s.size
# 5
len[s.index]
# 5
len[s]
# 5
s.size
# 5
len[s.index]
# 5
len[s]
# 5
s.size
# 5
len[s.index]
# 5
len[s]
# 5
s.size
# 5
len[s.index]
# 5
len[s]
# 5
s.size
# 5
len[s.index]
# 5
2 và len[s]
# 5
s.size
# 5
len[s.index]
# 5
3 giống nhau về tốc độ. Nhưng tôi khuyên bạn nên len[df]
# 5
df.shape[0]
# 5
len[df.index]
# 5
8.Lưu ý
7 là một thuộc tính và nó trả về số lượng phần tử [= số lượng hàng cho bất kỳ chuỗi nào]. DataFrames cũng xác định một thuộc tính kích thước trả về kết quả tương tự nhưlen[s] # 5 s.size # 5 len[s.index] # 5
8.len[s] # 5 s.size # 5 len[s.index] # 5
7 is an attribute, and it returns the number of elements [=count of rows for any Series]. DataFrames also define a size attribute which returns the same result aslen[s] # 5 s.size # 5 len[s.index] # 5
8.len[s] # 5 s.size # 5 len[s.index] # 5
Số lượng hàng không null: len[df]
# 5
df.shape[0]
# 5
len[df.index]
# 5
1 và df.count[]
A 5
B 3
dtype: int64
0
len[df]
# 5
df.shape[0]
# 5
len[df.index]
# 5
df.count[]
A 5
B 3
dtype: int64
Các phương pháp được mô tả ở đây chỉ đếm các giá trị không null [có nghĩa là NAN bị bỏ qua].
Gọi
len[df]
# 5
df.shape[0]
# 5
len[df.index]
# 5
1 sẽ trả về số lượng không có NaN cho mỗi cột:df.count[]
A 5
B 3
dtype: int64
Đối với chuỗi, sử dụng
df.count[]
A 5
B 3
dtype: int64
0 với hiệu ứng tương tự:s.count[]
# 3
Số lượng hàng theo nhóm: df.count[]
A 5
B 3
dtype: int64
3
df.count[]
A 5
B 3
dtype: int64
Đối với
df.count[]
A 5
B 3
dtype: int64
4, hãy sử dụng len[df]
# 5
df.shape[0]
# 5
len[df.index]
# 5
3 để đếm số lượng hàng mỗi nhóm.df.groupby['A'].size[]
A
a 2
b 2
c 1
dtype: int64
Tương tự, đối với
len[df]
# 5
df.shape[0]
# 5
len[df.index]
# 5
2, bạn sẽ sử dụng df.count[]
A 5
B 3
dtype: int64
7.s.groupby[df.A].size[]
A
a 2
b 2
c 1
Name: B, dtype: int64
Trong cả hai trường hợp, một
len[df]
# 5
df.shape[0]
# 5
len[df.index]
# 5
2 được trả lại. Điều này cũng có ý nghĩa đối với df.count[]
A 5
B 3
dtype: int64
4 vì tất cả các nhóm đều có cùng số lượng hàng.Số lượng hàng không null theo nhóm: s.count[]
# 3
0
s.count[]
# 3
Tương tự như ở trên, nhưng sử dụng
s.count[]
# 3
0, không phải df.count[]
A 5
B 3
dtype: int64
3. Lưu ý rằng len[s]
# 5
s.size
# 5
len[s.index]
# 5
7 luôn trả về len[df]
# 5
df.shape[0]
# 5
len[df.index]
# 5
2, trong khi s.count[]
# 3
5 trả về len[df]
# 5
df.shape[0]
# 5
len[df.index]
# 5
2 nếu được gọi trên một cột cụ thể, hoặc nếu không thì len[df]
# 5
df.shape[0]
# 5
len[df.index]
# 5
6.Các phương pháp sau đây trả về điều tương tự:
df.groupby['A']['B'].size[]
df.groupby['A'].size[]
A
a 2
b 2
c 1
Name: B, dtype: int64
Trong khi đó, đối với
s.count[]
# 3
5, chúng tôi códf.groupby['A'].count[]
B
A
a 2
b 1
c 0
... được gọi trên toàn bộ đối tượng nhóm, so với,
len[df]
# 5
df.shape[0]
# 5
len[df.index]
# 5
0Được gọi trên một cột cụ thể.