Bagaimana cara memeriksa apakah panda DataFrame
kosong? Dalam kasus saya, saya ingin mencetak beberapa pesan di terminal jika DataFrame
kosong.
Bagaimana cara memeriksa apakah panda DataFrame
kosong? Dalam kasus saya, saya ingin mencetak beberapa pesan di terminal jika DataFrame
kosong.
Jawaban:
Anda dapat menggunakan atribut df.empty
untuk memeriksa apakah itu kosong atau tidak:
if df.empty:
print('DataFrame is empty!')
Sumber: Dokumentasi Pandas
Saya menggunakan len
fungsinya. Ini jauh lebih cepat daripada empty
. len(df.index)
bahkan lebih cepat.
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10000, 4), columns=list('ABCD'))
def empty(df):
return df.empty
def lenz(df):
return len(df) == 0
def lenzi(df):
return len(df.index) == 0
'''
%timeit empty(df)
%timeit lenz(df)
%timeit lenzi(df)
10000 loops, best of 3: 13.9 µs per loop
100000 loops, best of 3: 2.34 µs per loop
1000000 loops, best of 3: 695 ns per loop
len on index seems to be faster
'''
Saya lebih suka menempuh rute panjang. Ini adalah cek yang saya ikuti untuk menghindari penggunaan klausa coba-kecuali -
Di sini, DATA
adalah variabel yang dicurigai -
DATA is not None and isinstance(DATA, pd.DataFrame) and not DATA.empty
try/except
itu murah dan if
mahal. Python bukan Java atau C; di sini lebih mudah untuk meminta maaf daripada izin
Tampaknya definisi kosong yang diterima di utas ini adalah kerangka data dengan nol baris saja. Tetapi ada perbedaan antara kerangka data kosong dengan nol baris dan nol kolom dan kerangka data kosong dengan nol baris dan setidaknya satu kolom . Dalam setiap kasus panjang indeks adalah 0 dan kosong = Benar seperti yang ditunjukkan di sini:
Contoh 1: kosongkan kerangka data dengan 0 baris dan 0 kolom
In [1]: import pandas as pd
df1 = pd.DataFrame()
df1
Out[1]: Empty DataFrame
Columns: []
Index: []
In [2]: len(df1.index)
Out[2]: 0
In [3]: df1.empty
Out[3]: True
Contoh 2: kosongkan kerangka data dengan 0 baris dan setidaknya 1 kolom
In [4]: df2 = pd.DataFrame({'AA' : [], 'BB' : []})
df2
Out[4]: Empty DataFrame
Columns: [AA, BB]
Index: []
In [5]: len(df2.index)
Out[5]: 0
In [6]: df2.empty
Out[6]: True
Salah satu cara untuk membedakan antara kerangka data yang kosong header dan data atau hanya kosong data adalah dengan menguji panjang indeks kolom . Kerangka data yang dimuat pertama mengembalikan nol kolom, kerangka data kedua mengembalikan jumlah kolom kosong.
In [7]: len(df1.columns)
Out[7]: 0
In [8]: len(df2.columns)
Out[8]: 2
1) Jika DataFrame telah mendapatkan nilai Nan dan Non Null dan Anda ingin menemukan apakah DataFrame kosong atau tidak maka coba kode ini. 2) kapan situasi ini bisa terjadi? Situasi ini terjadi ketika satu fungsi digunakan untuk memplot lebih dari satu DataFrame yang dilewatkan sebagai parameter. Dalam situasi seperti itu fungsi mencoba untuk merencanakan data secara merata ketika DataFrame kosong dan dengan demikian petak angka kosong !. Masuk akal jika hanya menampilkan pesan 'DataFrame tidak memiliki data'. 3) mengapa? jika DataFrame kosong (yaitu tidak berisi data sama sekali. Ingat DataFrame dengan nilai Nan dianggap tidak kosong) maka diinginkan untuk tidak merencanakan tetapi menyampaikan pesan: Misalkan kita memiliki dua DataFrames df1 dan df2. Fungsi myfunc mengambil DataFrame (df1 dan df2 dalam kasus ini) dan mencetak pesan jika DataFrame kosong (alih-alih memplot):
df1 df2
col1 col2 col1 col2
Nan 2 Nan Nan
2 Nan Nan Nan
dan fungsinya:
def myfunc(df):
if (df.count().sum())>0: ##count the total number of non Nan values.Equal to 0 if DataFrame is empty
print('not empty')
df.plot(kind='barh')
else:
display a message instead of plotting if it is empty
print('empty')