问题:如何检查pandas DataFrame是否为空?
如何检查大熊猫是否DataFrame
为空?就我而言,如果终端DataFrame
为空,我想在终端打印一些消息。
回答 0
回答 1
我使用的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
'''
回答 2
我更喜欢长途旅行。这些是我为避免使用try-except子句而进行的检查-
- 检查变量是否不为None
- 然后检查其是否为数据框和
- 确保它不为空
这DATA
是可疑变量-
DATA is not None and isinstance(DATA, pd.DataFrame) and not DATA.empty
回答 3
似乎在该线程中接受的空定义是仅具有零行的数据帧。但是在零行零列的空数据框和零行零列至少一列的空数据框之间有区别。在每种情况下,索引的长度都是0,并且empty = True,如下所示:
示例1:具有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:具有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
区分没有标题和数据的数据帧或只是没有数据的数据帧的一种方法是测试列索引的长度。第一个加载的数据帧返回零列,第二个数据帧返回空列数。
In [7]: len(df1.columns)
Out[7]: 0
In [8]: len(df2.columns)
Out[8]: 2
回答 4
1)如果一个DataFrame具有Nan和Non Null值,并且您想查找该DataFrame是否 是否为空,然后尝试此代码。 2)什么时候会发生这种情况? 使用单个函数绘制多个DataFrame时会发生这种情况 作为参数传递的参数。在这种情况下,该函数甚至尝试绘制数据 当DataFrame为空并因此绘制一个空图时! 如果仅显示“ DataFrame has no data”消息,将很有意义。 3)为什么? 如果DataFrame为空(即完全不包含任何数据。请使用Nan值来提醒您DataFrame) 被认为是非空的),那么最好不要绘制而是显示一条消息: 假设我们有两个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')