用概率填写缺失值

时间:2017-01-24 09:41:42

标签: pandas

假设给出了一个水果柱,我有57个香蕉,54个苹果和其他Null值。 现在我想用fillna填充空值,其概率为57 /(57 + 54)概率为banana,54 /(57 + 54)为apple,我该怎么做?

Fruit
------
None
Banana
Fruit
Banana
....(with 57 banana, 54 apple, 10 None)

1 个答案:

答案 0 :(得分:5)

设置

fruit = pd.Series(['banana'] * 57 + ['apple'] * 54 + [None] * 10, name='fruit')

使用pd.Series.sample

nullfruit = fruit.isnull()
fruit.loc[nullfruit] = fruit.dropna().sample(nullfruit.sum()).values

使用np.random.choicenp.unique

nullfruit = fruit.isnull().values
u, c = np.unique(fruit.values[~nullfruit], return_counts=1)

fruit.loc[nullfruit] = np.random.choice(u, nullfruit.sum(), p=c / c.sum())