如何使用模式/均值估算熊猫数据框中的整个缺失值?

问题描述

我知道每个列的填充代码如下

data['Native Country'].fillna(data['Native Country'].mode(),inplace=True)

但我正在处理一个有 50 行的数据集,有 20 个分类值需要估算。 是否有单行代码用于输入整个数据集?

解决方法

DataFrame.fillnaDataFrame.mode 一起使用并选择第一行,因为如果返回所有值的最大出现次数相同:

data = pd.DataFrame({
        'A':list('abcdef'),'col1':[4,5,4,4],'col2':[np.nan,8,3,2,3],'col3':[3,np.nan,np.nan],'E':[5,6,9,'F':list('aaabbb')
})

cols = ['col1','col2','col3']

print (data[cols].mode())
   col1  col2  col3
0     4   3.0   3.0
1     5   NaN   5.0

data[cols] = data[cols].fillna(data[cols].mode().iloc[0])
    
print (data)
   A  col1  col2  col3  E  F
0  a     4   3.0   3.0  5  a
1  b     5   8.0   3.0  3  a
2  c     4   3.0   5.0  6  a
3  d     5   3.0   5.0  9  b
4  e     5   2.0   3.0  2  b
5  f     4   3.0   3.0  4  b