Bagaimana cara saya mendapatkan hitung baris dari DataFrame panda?
Tabel ini merangkum berbagai situasi di mana Anda ingin menghitung sesuatu dalam DataFrame (atau Seri, untuk kelengkapan), bersama dengan metode yang direkomendasikan.

Catatan kaki
DataFrame.countmengembalikan jumlah untuk setiap kolom sebagai Serieskarena jumlah bukan nol bervariasi berdasarkan kolom.
DataFrameGroupBy.sizemengembalikan a Series, karena semua kolom dalam grup yang sama berbagi jumlah baris yang sama.
DataFrameGroupBy.countmengembalikan a DataFrame, karena jumlah bukan nol dapat berbeda di seluruh kolom dalam grup yang sama. Untuk mendapatkan hitungan non-null grup-bijaksana untuk kolom tertentu, gunakan di df.groupby(...)['x'].count()mana "x" adalah kolom untuk menghitung.
Contoh Kode Minimal
Di bawah ini, saya menunjukkan contoh masing-masing metode yang dijelaskan dalam tabel di atas. Pertama, pengaturan -
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
Row Hitungan DataFrame sebuah: len(df), df.shape[0], ataulen(df.index)
len(df)
# 5
df.shape[0]
# 5
len(df.index)
# 5
Tampaknya konyol untuk membandingkan kinerja operasi waktu yang konstan, terutama ketika perbedaannya ada pada tingkat "serius, jangan khawatir tentang hal itu". Tapi ini tampaknya menjadi tren dengan jawaban lain, jadi saya melakukan hal yang sama untuk kelengkapan.
Dari 3 metode di atas, len(df.index)(sebagaimana disebutkan dalam jawaban lain) adalah yang tercepat.
Catatan
- Semua metode di atas adalah operasi waktu konstan karena mereka adalah pencarian atribut sederhana.
df.shape(Mirip dengan ndarray.shape) adalah atribut yang mengembalikan tuple dari (# Rows, # Cols). Misalnya, df.shapekembalikan (8,
2)untuk contoh di sini.
Kolom Hitungan DataFrame sebuah: df.shape[1],len(df.columns)
df.shape[1]
# 2
len(df.columns)
# 2
Analog dengan len(df.index), len(df.columns)adalah yang tercepat dari kedua metode (tetapi membutuhkan lebih banyak karakter untuk mengetik).
Row Hitungan Seri: len(s), s.size,len(s.index)
len(s)
# 5
s.size
# 5
len(s.index)
# 5
s.sizedan len(s.index)hampir sama dalam hal kecepatan. Tapi saya rekomendasikan len(df).
Catatan
size adalah atribut, dan mengembalikan jumlah elemen (= jumlah baris untuk Seri apa pun). DataFrames juga mendefinisikan atribut ukuran yang mengembalikan hasil yang sama dengan df.shape[0] * df.shape[1].
Hitungan Baris Non-Null: DataFrame.countdanSeries.count
Metode yang dijelaskan di sini hanya menghitung nilai-nilai non-nol (artinya NaN diabaikan).
Memanggil DataFrame.countakan mengembalikan jumlah non-NaN untuk setiap kolom:
df.count()
A 5
B 3
dtype: int64
Untuk Seri, gunakan Series.countefek yang serupa:
s.count()
# 3
Hitungan Baris menurut Kelompok: GroupBy.size
Untuk DataFrames, gunakan DataFrameGroupBy.sizeuntuk menghitung jumlah baris per grup.
df.groupby('A').size()
A
a 2
b 2
c 1
dtype: int64
Demikian pula, untuk Series, Anda akan menggunakan SeriesGroupBy.size.
s.groupby(df.A).size()
A
a 2
b 2
c 1
Name: B, dtype: int64
Dalam kedua kasus, a Seriesdikembalikan. Ini masuk akal DataFramesjuga karena semua grup memiliki jumlah baris yang sama.
Hitungan Baris Non-Null Kelompok-bijaksana: GroupBy.count
Mirip dengan di atas, tetapi gunakan GroupBy.count, tidak GroupBy.size. Perhatikan bahwa sizeselalu mengembalikan a Series, sementara countmengembalikan a Seriesjika dipanggil pada kolom tertentu, atau a DataFrame.
Metode berikut mengembalikan hal yang sama:
df.groupby('A')['B'].size()
df.groupby('A').size()
A
a 2
b 2
c 1
Name: B, dtype: int64
Sementara itu, untuk count, sudah
df.groupby('A').count()
B
A
a 2
b 1
c 0
... memanggil seluruh objek GroupBy, v / s,
df.groupby('A')['B'].count()
A
a 2
b 1
c 0
Name: B, dtype: int64
Dipanggil pada kolom tertentu.