gpt4 book ai didi

python - 在 pandas dataframe 中随机引入 NaN 值

转载 作者:太空狗 更新时间:2023-10-30 01:24:51 24 4
gpt4 key购买 nike

考虑到我的起始数据中已有的空值,我如何将 NaN 值随机引入我的数据集中的每一列。

我想按列有例如 20% 的 NaN 值。

例如:
如果我的数据集中有 3 列:每列的“A”、“B”和“C” 我有 NaN 值比率 如何按列随机引入 NaN 值以达到每列 20%:

A: 10% nan
B: 15% nan
C: 8% nan

目前我尝试了这段代码,但它大大降低了我的数据集,我认为这不是好方法:

df = df.mask(np.random.choice([True, False], size=df.shape, p=[.20,.80]))

最佳答案

我不确定最后一部分(“降级太多”)是什么意思,但这是一个粗略的方法。

import numpy as np
import pandas as pd

A = pd.Series(np.arange(99))

# Original missing rate (for illustration)
nanidx = A.sample(frac=0.1).index
A[nanidx] = np.NaN

###
# Complementing to 20%
# Original ratio
ori_rat = A.isna().mean()

# Adjusting for the dataframe without missing values
add_miss_rat = (0.2 - ori_rat) / (1 - ori_rat)

nanidx2 = A.dropna().sample(frac=add_miss_rat).index
A[nanidx2] = np.NaN

A.isna().mean()

显然,它不会总是恰好是 20%...

更新将其应用于整个数据框

for col in df:
ori_rat = df[col].isna().mean()

if ori_rat >= 0.2: continue

add_miss_rat = (0.2 - ori_rat) / (1 - ori_rat)
vals_to_nan = df[col].dropna().sample(frac=add_miss_rat).index
df.loc[vals_to_nan, col] = np.NaN

更新 2我进行了更正,以便在计算比率时也考虑到丢弃 NaN 值的影响。

关于python - 在 pandas dataframe 中随机引入 NaN 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54330454/

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