Saya mencoba untuk mendapatkan jumlah baris dataframe df dengan Panda, dan di sini adalah kode saya.
Metode 1:
total_rows = df.count
print total_rows +1
Metode 2:
total_rows = df['First_columnn_label'].count
print total_rows +1
Kedua cuplikan kode memberi saya kesalahan ini:
TypeError: jenis operan yang tidak didukung untuk +: 'instancemethod' dan 'int'
Apa yang saya lakukan salah?
df.count()
hanya akan mengembalikan jumlah baris non-NA / NaN untuk setiap kolom. Anda harus menggunakannyadf.shape[0]
sebagai gantinya, yang akan selalu memberi tahu Anda dengan benar jumlah baris.Jawaban:
Anda bisa menggunakan
.shape
properti atau adillen(DataFrame.index)
. Namun, ada perbedaan kinerja penting (len(DataFrame.index)
tercepat):EDIT: Seperti @ Dan Allen dicatat dalam komentar
len(df.index)
dandf[0].count()
tidak dapat dipertukarkan sebagaicount
tidak termasukNaN
s,sumber
shape
dalam karya interaktif, daripada len (df): Mencoba penyaringan yang berbeda, saya sering perlu tahu berapa banyak item yang tersisa. Dengan bentuk saya bisa melihatnya hanya dengan menambahkan .shape setelah pemfilteran. Dengan len () pengeditan baris perintah menjadi jauh lebih rumit, bolak-balik.df.empty
adalah pilihan terbaik.df.shape[0]
lebih cepat darilen(df)
ataulen(df.columns)
? Karena 1 ns (nanosecond) = 1000 µs (microsecond), maka 1.17µs = 1170ns, yang berarti kira-kira 3 kali lebih lambat dari 381nsMisalkan
df
adalah kerangka data Anda:Atau, lebih ringkasnya,
sumber
Gunakan
len(df)
. Ini berfungsi pada panda 0.11 atau bahkan lebih awal.__len__()
saat ini (0,12) didokumentasikan denganReturns length of index
. Info waktu, atur dengan cara yang sama seperti pada jawaban root:Karena satu fungsi panggilan tambahan itu sedikit lebih lambat daripada memanggil
len(df.index)
langsung, tetapi ini seharusnya tidak memainkan peran apa pun dalam kebanyakan kasus penggunaan.sumber
Tabel ini merangkum berbagai situasi di mana Anda ingin menghitung sesuatu dalam DataFrame (atau Seri, untuk kelengkapan), bersama dengan metode yang direkomendasikan.
Contoh Kode Minimal
Di bawah ini, saya menunjukkan contoh masing-masing metode yang dijelaskan dalam tabel di atas. Pertama, pengaturan -
Row Hitungan DataFrame sebuah:
len(df)
,df.shape[0]
, ataulen(df.index)
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.Kolom Hitungan DataFrame sebuah:
df.shape[1]
,len(df.columns)
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)
s.size
danlen(s.index)
hampir sama dalam hal kecepatan. Tapi saya rekomendasikanlen(df)
.Hitungan Baris Non-Null:
DataFrame.count
danSeries.count
Metode yang dijelaskan di sini hanya menghitung nilai-nilai non-nol (artinya NaN diabaikan).
Memanggil
DataFrame.count
akan mengembalikan jumlah non-NaN untuk setiap kolom:Untuk Seri, gunakan
Series.count
efek yang serupa:Hitungan Baris menurut Kelompok:
GroupBy.size
Untuk
DataFrames
, gunakanDataFrameGroupBy.size
untuk menghitung jumlah baris per grup.Demikian pula, untuk
Series
, Anda akan menggunakanSeriesGroupBy.size
.Dalam kedua kasus, a
Series
dikembalikan. Ini masuk akalDataFrames
juga karena semua grup memiliki jumlah baris yang sama.Hitungan Baris Non-Null Kelompok-bijaksana:
GroupBy.count
Mirip dengan di atas, tetapi gunakan
GroupBy.count
, tidakGroupBy.size
. Perhatikan bahwasize
selalu mengembalikan aSeries
, sementaracount
mengembalikan aSeries
jika dipanggil pada kolom tertentu, atau aDataFrame
.Metode berikut mengembalikan hal yang sama:
Sementara itu, untuk
count
, sudah... memanggil seluruh objek GroupBy, v / s,
Dipanggil pada kolom tertentu.
sumber
TL; DR
menggunakan
len(df)
len()
adalah teman Anda, dapat digunakan untuk jumlah baris sebagailen(df)
.Atau, Anda dapat mengakses semua baris dengan
df.index
dan semua kolom dengandf.columns
, dan karena Anda dapat menggunakanlen(anyList)
untuk mendapatkan hitungan daftar, gunakanlen(df.index)
untuk mendapatkan jumlah baris, danlen(df.columns)
untuk jumlah kolom.Atau, Anda dapat menggunakan
df.shape
yang mengembalikan jumlah baris dan kolom bersama-sama, jika Anda ingin mengakses jumlah baris hanya menggunakandf.shape[0]
dan untuk jumlah kolom hanya menggunakan:df.shape[1]
.sumber
Terlepas dari jawaban di atas, dapat digunakan
df.axes
untuk mendapatkan tuple dengan indeks baris dan kolom dan kemudian menggunakanlen()
fungsi:sumber
... membangun jawaban Jan-Philip Gehrcke.
Alasan mengapa
len(df)
ataulen(df.index)
lebih cepat daripadadf.shape[0]
. Lihatlah kodenya. df.shape adalah@property
yang menjalankan metode DataFrame memanggillen
dua kali.Dan di bawah tudung len (df)
len(df.index)
akan sedikit lebih cepat daripadalen(df)
karena memiliki satu panggilan fungsi kurang, tetapi ini selalu lebih cepat daripadadf.shape[0]
sumber
Saya datang ke panda dari
R
latar belakang, dan saya melihat panda lebih rumit ketika memilih baris atau kolom. Saya harus bergulat dengan itu untuk sementara waktu, kemudian saya menemukan beberapa cara untuk menghadapinya:mendapatkan jumlah kolom:
mendapatkan jumlah baris:
sumber
df.shape
. Ini mengembalikan jumlah baris dan kolom masing-masing.Jika Anda ingin mendapatkan jumlah baris di tengah operasi yang dirantai, Anda dapat menggunakan:
Contoh:
Ini bisa berguna jika Anda tidak ingin meletakkan pernyataan panjang di dalam suatu
len()
fungsi.Anda bisa menggunakan
__len__()
tetapi__len__()
terlihat agak aneh.sumber
count = len(df.reset_index())
daripadacount = df.reset_index().pipe(len)
. Yang pertama hanyalah pencarian atribut tanpa pemanggilan fungsi.Hai Anda dapat menggunakan melakukan ini juga:
Katakanlah
df
adalah kerangka data Anda. Kemudiandf.shape
memberi Anda bentuk yaitu dataframe Anda(row,col)
Jadi, berikan perintah di bawah ini untuk mendapatkan yang dibutuhkan
sumber
Untuk dataframe df, jumlah baris yang diformat koma dicetak digunakan saat menjelajahi data:
Contoh:
sumber
Metode alternatif untuk mengetahui jumlah baris dalam dataframe yang menurut saya adalah varian yang paling mudah dibaca adalah
pandas.Index.size
.Perhatikan bahwa ketika saya mengomentari jawaban yang diterima:
sumber
Saya tidak yakin apakah ini akan berhasil (data DAPAT dihilangkan), tetapi ini mungkin berhasil:
dan kemudian menggunakan ini, Anda bisa menemukan jumlah baris dengan menjalankan potongan kode dan melihat nomor baris yang diberikan kepada Anda.
sumber
Salah satu dari ini dapat dilakukan (
df
adalah nama DataFrame):Metode 1: Menggunakan
len
fungsi:len(df)
akan memberikan jumlah baris dalam nama DataFramedf
.Metode 2: menggunakan
count
fungsi:df[col].count()
akan menghitung jumlah baris dalam kolom yang diberikancol
.df.count()
akan memberikan jumlah baris untuk semua kolom.sumber