gpt4 book ai didi

python - 使用 groupby 和模式的 Pandas fillna

转载 作者:行者123 更新时间:2023-12-01 06:48:18 26 4
gpt4 key购买 nike

我最近开始使用 Pandas,目前正在尝试估算数据集中的一些缺失值。

我想根据中位数(对于数字条目)和众数(对于分类条目)来估算缺失值。但是,我不想整个数据集计算中值和众数,而是基于我名为 "make"的列的 GroupBy 计算每个组的中值和众数.

对于数值 NA 值我执行了以下操作:

data = data.fillna(data.groupby("make").transform("median"))

...它工作得很好,并将我的所有数值 NA 值替换为其 “make” 的中值。

但是,对于分类 NA 值,我无法对模式执行相同的操作,即将所有分类 NA 值替换为其“make”的模式.

有人知道怎么做吗?

最佳答案

您可以使用GroupBy.transform对于数字,使用 if-else 表示 median,对于分类列使用 mode:

df = pd.DataFrame({
'A':list('ebcded'),
'B':[np.nan,np.nan,4,5,5,4],
'C':[7,np.nan,9,4,2,3],
'D':[1,3,5,np.nan,1,0],
'F':list('aaabbb'),
'make':list('aaabbb')
})

df.loc[[2,4], 'A'] = np.nan
df.loc[[2,5], 'F'] = np.nan
print (df)
A B C D F make
0 e NaN 7.0 1.0 a a
1 b NaN NaN 3.0 a a
2 NaN 4.0 9.0 5.0 NaN a
3 d 5.0 4.0 NaN b b
4 NaN 5.0 2.0 1.0 b b
5 d 4.0 3.0 0.0 NaN b
<小时/>
f = lambda x: x.median() if np.issubdtype(x.dtype, np.number) else x.mode().iloc[0]
df = df.fillna(df.groupby('make').transform(f))
print (df)

A B C D F make
0 e 4 7 1 a a
1 b 4 7 3 a a
2 b 4 9 5 a a
3 d 5 4 0 b b
4 d 5 2 1 b b
5 d 4 3 0 b b

关于python - 使用 groupby 和模式的 Pandas fillna,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59127458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com