จะตรวจสอบได้อย่างไรว่าแพนด้าDataFrame
ว่างเปล่า ในกรณีของฉันฉันต้องการพิมพ์ข้อความใน terminal ถ้าDataFrame
ว่างเปล่า
จะตรวจสอบได้อย่างไรว่าแพนด้าDataFrame
ว่างเปล่า ในกรณีของฉันฉันต้องการพิมพ์ข้อความใน terminal ถ้าDataFrame
ว่างเปล่า
คำตอบ:
คุณสามารถใช้แอตทริบิวต์df.empty
เพื่อตรวจสอบว่าว่างหรือไม่:
if df.empty:
print('DataFrame is empty!')
ที่มา: เอกสาร Pandas
ฉันใช้len
ฟังก์ชั่น มันเร็วกว่าempty
มาก len(df.index)
เร็วยิ่งขึ้น
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
'''
ฉันชอบเดินทางไกลมากกว่า เหล่านี้คือการตรวจสอบที่ฉันทำตามเพื่อหลีกเลี่ยงการใช้ข้อยกเว้นลอง -
นี่DATA
คือตัวแปรต้องสงสัย -
DATA is not None and isinstance(DATA, pd.DataFrame) and not DATA.empty
try/except
นั้นราคาถูกและif
มีราคาแพง Python ไม่ใช่ทั้ง Java และ C ที่นี่มันง่ายกว่าที่จะถามการให้อภัยมากกว่าการอนุญาต
ปรากฏว่าการยอมรับคำจำกัดความที่ว่างเปล่าในหัวข้อนี้เป็น dataframe ที่มีศูนย์แถวเท่านั้น แต่มีความแตกต่างระหว่างdataframe ว่างเปล่ากับศูนย์แถวและศูนย์คอลัมน์และdataframe ว่างเปล่ากับศูนย์แถวและคอลัมน์อย่างน้อยหนึ่ง ในแต่ละกรณีความยาวของดัชนีคือ 0 และว่าง = True ตามที่แสดงที่นี่:
ตัวอย่างที่ 1: dataframe ที่ว่างเปล่าที่มี 0 แถวและ 0 คอลัมน์
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
ตัวอย่างที่ 2: dataframe ที่ว่างเปล่าที่มี 0 แถวและอย่างน้อย 1 คอลัมน์
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
วิธีหนึ่งที่จะแยกแยะความแตกต่างระหว่างdataframe ที่เป็นที่ว่างของส่วนหัวและส่วนข้อมูลหรือเพียงแค่ล้างข้อมูลคือการทดสอบความยาวของดัชนีคอลัมน์ dataframe ที่ถูกโหลดครั้งแรกจะคืนค่าศูนย์คอลัมน์ส่วน dataframe ตัวที่สองจะคืนค่าจำนวนคอลัมน์ว่าง
In [7]: len(df1.columns)
Out[7]: 0
In [8]: len(df2.columns)
Out[8]: 2
1) ถ้า DataFrame ได้รับค่าน่านและไม่ใช่ค่าว่างและคุณต้องการค้นหาว่าเป็น DataFrame หรือไม่ ว่างเปล่าหรือไม่ลองรหัสนี้ 2) เมื่อสถานการณ์นี้สามารถเกิดขึ้นได้? สถานการณ์นี้เกิดขึ้นเมื่อใช้ฟังก์ชันเดียวเพื่อพล็อตมากกว่าหนึ่ง DataFrame ซึ่งจะถูกส่งเป็นพารามิเตอร์ในสถานการณ์เช่นนี้ฟังก์ชั่นพยายามที่จะลงจุดข้อมูลได้ เมื่อ DataFrame ว่างเปล่าและพล็อตตัวเลขที่ว่างเปล่า! มันจะสมเหตุสมผลถ้าเพียงแค่แสดงข้อความ 'DataFrame ไม่มีข้อมูล' 3) ทำไม ถ้า DataFrame ว่างเปล่า (เช่นไม่มีข้อมูลเลยให้ใส่ DataFrame ด้วยค่า Nan ถือว่าไม่ว่างเปล่า) จากนั้นเป็นที่พึงประสงค์ที่จะไม่พล็อต แต่เขียนข้อความ: สมมติว่าเรามี DataFrames สองรายการ df1 และ df2 ฟังก์ชัน myfunc รับ DataFrame ใด ๆ (df1 และ df2 ในกรณีนี้) และพิมพ์ข้อความ ถ้า DataFrame ว่างเปล่า (แทนที่จะลงจุด):
df1 df2
col1 col2 col1 col2
Nan 2 Nan Nan
2 Nan Nan Nan
และฟังก์ชั่น:
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')