【问题标题】:How to impute entire missing values in pandas dataframe with mode/mean?如何用模式/平均值估算熊猫数据框中的整个缺失值?
【发布时间】:2021-06-08 11:14:20
【问题描述】:

我知道下面的每一列分别填充的代码

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

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

【问题讨论】:

    标签: python pandas mode imputation


    【解决方案1】:

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

    data = pd.DataFrame({
            'A':list('abcdef'),
             'col1':[4,5,4,5,5,4],
             'col2':[np.nan,8,3,3,2,3],
             'col3':[3,3,5,5,np.nan,np.nan],
             'E':[5,3,6,9,2,4],
             '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
    

    【讨论】:

    • 您能解释一下我们为什么使用 iloc[0] 吗?
    • @AntonyJoy - 如果检查print (data[cols].mode()),则col1 和col3 的列有多种模式(因为这里是col1 中的3 次4、5 和@987654330 中的2 次4,5 @什么是最大计数),并且只需要替换一个值,所以使用第一个值。
    猜你喜欢
    • 1970-01-01
    • 2019-08-16
    • 2018-10-26
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多