我想找出我的数据的每一列中NaN的数量。
当前回答
我使用这个循环来计算每一列的缺失值:
# check missing values
import numpy as np, pandas as pd
for col in df:
print(col +': '+ np.str(df[col].isna().sum()))
其他回答
在我的代码中使用@sushmit提出的解决方案。
同样的一种可能的变体也可以是
colNullCnt = []
for z in range(len(df1.cols)):
colNullCnt.append([df1.cols[z], sum(pd.isnull(trainPd[df1.cols[z]]))])
这样做的好处是,它将返回df中每一列的结果。
我写了一个简短的函数(Python 3)来生成.info作为pandas数据框架,然后可以写入excel:
df1 = pd.DataFrame({'a':[1,2,np.nan], 'b':[np.nan,1,np.nan]})
def info_as_df (df):
null_counts = df.isna().sum()
info_df = pd.DataFrame(list(zip(null_counts.index,null_counts.values))\
, columns = ['Column', 'Nulls_Count'])
data_types = df.dtypes
info_df['Dtype'] = data_types.values
return info_df
print(df1.info())
print(info_as_df(df1))
这使:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 2 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 a 2 non-null float64
1 b 1 non-null float64
dtypes: float64(2)
memory usage: 176.0 bytes
None
Column Nulls_Count Dtype
0 a 1 float64
1 b 2 float64
数零:
df[df == 0].count(axis=0)
计算NaN:
df.isnull().sum()
or
df.isna().sum()
希望这能有所帮助,
import pandas as pd
import numpy as np
df = pd.DataFrame({'a':[1,2,np.nan], 'b':[np.nan,1,np.nan],'c':[np.nan,2,np.nan], 'd':[np.nan,np.nan,np.nan]})
df.isnull().sum()/len(df) * 100
Thres = 40
(df.isnull().sum()/len(df) * 100 ) < Thres
下面的代码将按降序打印所有Nan列。
df.isnull().sum().sort_values(ascending = False)
or
下面将按降序打印前15个Nan列。
df.isnull().sum().sort_values(ascending = False).head(15)