Pandas 中组平均值的 NaN 插补
使用每个组内的平均值填充缺失值是处理表格数据时的一项常见任务。考虑以下带有缺失值的 DataFrame:
df = pd.DataFrame({'value': [1, np.nan, np.nan, 2, 3, 1, 3, np.nan, 3], 'name': ['A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C']})
我们的目标是根据“名称”列用每个组的平均值来估算缺失值。
为了实现这一目标,我们可以利用Pandas中的groupby()和transform()函数:
grouped = df.groupby('name').mean() df["value"] = df.groupby("name").transform(lambda x: x.fillna(x.mean()))
groupby()函数根据'name' 列,mean() 计算每个组的平均值。 Transform() 函数将此平均值应用于每个组中的每一行,并填充缺失值。
生成的 DataFrame:
print(df) name value 0 A 1 1 A 1 2 B 2 3 B 2 4 B 3 5 B 1 6 C 3 7 C 3 8 C 3
解释:
替代解决方案:
基于组的缺失值插补的另一种方法是:
impute_cols = ['value'] df[impute_cols] = df[impute_cols].fillna(df.groupby('name')[impute_cols].transform('mean'))
两种方法都达到相同的结果,但后一种方法在插补多个时提供了更大的灵活性专栏。
以上是如何使用群体均值估算 Pandas 中的缺失值?的详细内容。更多信息请关注PHP中文网其他相关文章!