我正在测试机器学习算法的性能,特别是它如何处理缺失数据,以及当变量缺失时会出现什么样的性能下降。
例如,当缺少 20% 的变量 x 时,模型的准确度会下降一定百分比。为此,我想通过替换数据框列中 20% 的行来模拟丢失的数据。
有现成的方法吗?
开始 df:
d = {'var1': [1, 2, 3, 4], 'var2': [5, 6, 7, 8]}
df = pd.DataFrame(data=d)
df
var1 var2
0 1 5
1 2 6
2 3 7
3 4 8
最终结果: 随机丢弃列 'var1' 的 50%
df
var1 var2
0 nan 5
1 2 6
2 nan 7
3 4 8
最佳答案
使用 sample
重新分配方法,由于自动对齐,pandas 将引入 NaN
值:
df['var1'] = df['var1'].sample(frac=0.5)
交互方式:
In [1]: import pandas as pd
...: d = {'var1': [1, 2, 3, 4], 'var2': [5, 6, 7, 8]}
...: df = pd.DataFrame(data=d)
...: df
...:
Out[1]:
var1 var2
0 1 5
1 2 6
2 3 7
3 4 8
In [2]: df['var1'] = df['var1'].sample(frac=0.5)
In [3]: df
Out[3]:
var1 var2
0 1.0 5
1 NaN 6
2 3.0 7
3 NaN 8
关于python - Pandas 随机用 NaN 替换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55149738/