给定一个pandas数据框架,其中包含可能分散在这里和那里的NaN值:
问:如何确定哪些列包含NaN值?特别是,我能得到包含nan的列名的列表吗?
给定一个pandas数据框架,其中包含可能分散在这里和那里的NaN值:
问:如何确定哪些列包含NaN值?特别是,我能得到包含nan的列名的列表吗?
当前回答
df.isna()返回NaN值为True,其余为False。所以,做:
.any df.isna () ()
将返回True的任何列有NaN, False的其余
其他回答
您可以使用df.isnull().sum()。它显示了每个特征的所有列和总nan。
我有一个问题,我必须有许多列在屏幕上进行视觉检查,所以一个筛选并返回违规列的短列表比较
nan_cols = [i for i in df.columns if df[i].isnull().any()]
如果这对大家有帮助的话
此外,如果您想过滤掉nan值多于阈值的列,那么就使用85%
Nan_cols85 = [i for i in df.]if df[i].isnull().sum() > 0.85*len(data)]
我知道这是一个很好的回答问题,但我想做一个小小的调整。这个答案只返回包含空值的列,并且仍然显示空值的计数。
1-liner:
pd.isnull(df).sum()[pd.isnull(df).sum() > 0]
描述
在每一列中计算空值
null_count_ser = pd.isnull(df).sum()
True|False序列,描述该列是否为空
is_null_ser = null_count_ser > 0
使用T|F系列来过滤那些没有
null_count_ser[is_null_ser]
示例输出
name 5
phone 187
age 644
在有大量列的数据集中,最好能看到有多少列包含空值,有多少列不包含空值。
print("No. of columns containing null values")
print(len(df.columns[df.isna().any()]))
print("No. of columns not containing null values")
print(len(df.columns[df.notna().all()]))
print("Total no. of columns in the dataframe")
print(len(df.columns))
例如,在我的数据框架中,它包含82列,其中19列包含至少一个空值。
此外,您还可以自动删除cols和行,这取决于哪个有更多的空值 下面是智能执行此操作的代码:
df = df.drop(df.columns[df.isna().sum()>len(df.columns)],axis = 1)
df = df.dropna(axis = 0).reset_index(drop=True)
注意:上面的代码删除了所有的空值。如果需要空值,请在此之前处理它们。
Features_with_na =[feature用于数据帧中的特征。列if dataframe[features].isnull().sum()>0]
对于features_with_na中的feature: Print (feature, np.round(dataframe[feature].isnull().mean(), 4), '%缺失值') 打印(features_with_na)
它将为dataframe中的每一列提供缺失值的%