python - Pandas 随机用 NaN 替换值

标签 python pandas dataframe

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

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

相关文章:

python - 在 iPython Notebook 中查看 pdf 图像

python - Pandas 中的日期时间格式不一致

python - 如何为 pandas qcut 标签定义函数?

python - 使用 Dataframe 中的现有列分配列值时出现问题

python - Pandas - 按月累积?

python - 使用for循环的pandas dataframe concat不起作用

python - 修复 python 中的 %s sql 查询

python - subprocess.Popen 在不同的控制台中

python - 如何使用点绘制 Pandas 数据框的两列

Python 选择具有相似名称的列