【问题标题】:Pandas - Fill in missing values choosing values from a normal distributionPandas - 从正态分布中选择值填充缺失值
【发布时间】:2018-11-01 15:43:51
【问题描述】:

下面的代码将只生成一个正态分布的一个值,并用这个相同的值填充所有缺失的值:

helper_df = df.dropna()
df = df.fillna(numpy.random.normal(loc=helper_df.mean(), scale=numpy.std(helper_df)))

我们可以做些什么来为每个缺失值生成一个值?

【问题讨论】:

    标签: python pandas dataframe missing-data


    【解决方案1】:

    您可以创建具有正常值的系列。您应该提取正在处理的列中 Nan 值的索引。

    df:你的数据框

    col:包含Nan值的col

    index = df[df.col.isna()].index
    value = np.random.normal(loc=data.col.mean(), scale=data.col.std(), size=data.Age.isna().sum())
    
    data.Age.fillna(pd.Series(value, index=index), inplace=True)
    

    【讨论】:

      【解决方案2】:

      您可以创建一系列与数据框长度相同的随机变量,然后应用 fillna:

      df.fillna(pd.Series([np.random.normal() for x in range(len(df))]))
      

      如果一行中的某个值没有丢失,fillna 会忽略它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-25
        • 2016-12-20
        相关资源
        最近更新 更多