gpt4 book ai didi

Python:用底层分布替换值

转载 作者:行者123 更新时间:2023-12-01 02:44:13 26 4
gpt4 key购买 nike

我有一个数据框,其中一列有 3 个值,即 0.0、1.0 和 35.0。基本上,35.0 是空值,但不知何故空值被解释为 35.0。值计数如下所示:

home_ownership
0.0 1090
1.0 38531
35.0 379
Name: Id, dtype: int64

我需要根据 0 和 1 的底层现有分布,将所有 35.0 替换为 0 或 1。

希望得到任何指点。

最佳答案

根据您的数据分布,您可以使用简单的随机数生成

>> n_zeros, n_ones = 1090, 38531
>> n_samples = n_zeros + n_ones
>> n_nulls = 379
>> df.loc[np.isclose(df['home_ownership'], 35.0), 'home_ownership'] = \
[float(random.randint(0, n_samples) >= n_zeros) for _ in range(n_nulls)]

说明:float(random.randint(0, n_samples) >= n_zeros) 根据分布生成随机数{0.0: n_zeros/n_samples, 1.0: n_ones/n_samples}

注意:您可以替换

[float(random.randint(0, n_samples) >= n_zeros) for _ in range(n_nulls)]

np.random.choice([0.0, 1.0], n_nulls, p=[n_zeros/n_samples, n_ones/n_samples])

或与

np.random.binomial(1, n_ones/n_samples, n_nulls).astype(float)

关于Python:用底层分布替换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45390695/

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