gpt4 book ai didi

pandas - 通过 Pandas 中其他值的比率填充缺失值

转载 作者:行者123 更新时间:2023-12-02 08:19:11 25 4
gpt4 key购买 nike

我在 Pandas 的 Dataframe 中有一列有大约 78% 的缺失值。

其余 22% 的值按以下比例分配给三个标签 - SC、ST、GEN。

SC - 16%ST - 8%创 - 76%

我需要用以上三个值替换缺失值,以便所有元素的比例保持与上面相同。只要比例保持如上,分配就可以是随机的。

我该如何实现?

最佳答案

从这个 DataFrame 开始(只是为了创建与您的类似的东西):

import numpy as np
df = pd.DataFrame({'C1': np.random.choice(['SC', 'ST', 'GEN'], p=[0.16, 0.08, 0.76],
size=1000)})
df.loc[df.sample(frac=0.22).index] = np.nan

它产生一个包含 22% NaN 的列,其余比例与您的相似:

df['C1'].value_counts(normalize=True, dropna=False)
Out:
GEN 0.583
NaN 0.220
SC 0.132
ST 0.065
Name: C1, dtype: float64

df['C1'].value_counts(normalize=True)
Out:
GEN 0.747436
SC 0.169231
ST 0.083333
Name: C1, dtype: float64

现在您可以将 fillna 与 np.random.choice 一起使用:

df['C1'] = df['C1'].fillna(pd.Series(np.random.choice(['SC', 'ST', 'GEN'], 
p=[0.16, 0.08, 0.76], size=len(df))))

结果列将具有以下比例:

df['C1'].value_counts(normalize=True, dropna=False)
Out:
GEN 0.748
SC 0.165
ST 0.087
Name: C1, dtype: float64

关于pandas - 通过 Pandas 中其他值的比率填充缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38934140/

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