【问题标题】: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 会忽略它。