gpt4 book ai didi

python-2.7 - Pandas:根据现有值的分布填充要填充的 NA 值

转载 作者:行者123 更新时间:2023-12-03 16:25:01 25 4
gpt4 key购买 nike

我有一个 Pandas 数据框,其中一列 sign up 有多个空值。 sign up 列具有包含多个 OS 的分类值,例如 iOSandroidweb 等。
我想从现有的 NA 值填充 OS 值,但应根据 OS 值的现有分布填充 NA 值。

例子:
可以说,数据集的 OS 值计数分布如下:

signup
android web 14
ios web 16
mac 5
other 3
windows 6
Name: id, dtype: int64

我想根据上述不同操作系统值的分布来填充 NA 值。我想做的原因是保持当前分布,因为填充 Mode 值可能会扭曲结果。
有人可以帮助如何实现这一目标。

最佳答案

你可以使用类似 Numpy 的 random.choice

从符合您描述的框架开始

import numpy as np
import pandas as pd

print(df)
id signup
0 1 mac
1 2 mac
2 3 mac
3 4 other
4 5 other
5 6 windows
6 7 windows
7 8 windows
8 9 windows
9 10 NaN
10 11 NaN
11 12 NaN
12 13 NaN
13 14 NaN

使用 piRSquared 在评论中的提示更新了
找出当前的分布
s = df.signup.value_counts(normalize=True)
print(s)
windows 0.444444
mac 0.333333
other 0.222222
Name: signup, dtype: float64

接下来我们将使用 bool 索引来过滤我们想要更新的 nan。此外,这是我们通过传递索引(windows、mac、其他)使用随机选择的地方,所需的大小和每个注册的分布将用于 probabilities(p) 参数。
missing = df['signup'].isnull()
df.loc[missing,'signup'] = np.random.choice(s.index, size=len(df[missing]),p=s.values)
print(df)

id signup
0 1 mac
1 2 mac
2 3 mac
3 4 other
4 5 other
5 6 windows
6 7 windows
7 8 windows
8 9 windows
9 10 windows
10 11 windows
11 12 mac
12 13 windows
13 14 other

关于python-2.7 - Pandas:根据现有值的分布填充要填充的 NA 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44867219/

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