Skip to main content
 首页 » 编程设计

python之Pandas 随机用 NaN 替换值

2025年05月04日22lovecherry

我正在测试机器学习算法的性能,特别是它如何处理缺失数据,以及当变量缺失时会出现什么样的性能下降。

例如,当缺少 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