使用Train Data Statistics填充熊猫中的NaN值

里沙卜·饶

我将解释我的问题陈述:

假设我有训练数据和测试数据。对于训练和测试,我在同一列中有NaN值。现在,我对nan推算的策略是:用某列分组,并用该组的平均值填充nan。例:

x_train = pd.DataFrame({
'Occupation': ['driver', 'driver', 'mechanic', 'teacher', 'mechanic', 'teacher',
    'unemployed', 'driver', 'mechanic', 'teacher'],
'salary': [100, 150, 70, 300, 90, 250, 10, 90, 110, 350],
'expenditure': [20, 40, 10, 100, np.nan, 80, 0, np.nan, 40, 120]})

    Occupation  salary  expenditure
0   driver      100     20.0    
1   driver      150     40.0    
2   mechanic    70      10.0
3   teacher     300     100.0
4   mechanic    90      NaN 
5   teacher     250     80.0
6   unemployed  10      0.0  
7   driver      90      NaN   
8   mechanic    110     40.0    
9   teacher     350     120.0   

对于火车数据,我可以这样做:

x_train['expenditure'] = x_train.groupby('Occupation')['expenditure'].transform(lambda x:x.fillna(x.mean())

但是我该如何对测试数据执行类似的操作。平均值就是训练组的平均值。我正在尝试使用for循环来执行此操作,但是这是永远的。

耶斯列尔

创建meanSeries

mean = x_train.groupby('Occupation')['expenditure'].mean()
print (mean)
Occupation
driver         30.0
mechanic       25.0
teacher       100.0
unemployed      0.0
Name: expenditure, dtype: float64

然后通过替换缺失值Series.mapSeries.fillna

x_train['expenditure'] = x_train['expenditure'].fillna(x_train['Occupation'].map(mean))
print (x_train)
   Occupation  salary  expenditure
0      driver     100         20.0
1      driver     150         40.0
2    mechanic      70         10.0
3     teacher     300        100.0
4    mechanic      90         25.0
5     teacher     250         80.0
6  unemployed      10          0.0
7      driver      90         30.0
8    mechanic     110         40.0
9     teacher     350        120.0

并以相同的方式使用test数据:

x_test['expenditure'] = x_test['expenditure'].fillna(x_test['Occupation'].map(mean))

编辑:

多列解决方案-改为map使用DataFrame.join

x_train = pd.DataFrame({
'Occupation': ['driver', 'driver', 'mechanic', 'teacher', 'mechanic', 'teacher',
    'unemployed', 'driver', 'mechanic', 'teacher'],
'salary': [100, 150, 70, 300, 90, 250, 10, 90, 110, 350],
'expenditure': [20, 40, 10, 100, np.nan, 80, 0, np.nan, 40, 120],
'expenditure1': [20, 40, 10, 100, np.nan, 80, 0, np.nan, 40, 120],
'col':list('aabbddeehh')})
    
mean = x_train.groupby('Occupation').mean()
print (mean)
                salary  expenditure  expenditure1
Occupation                                       
driver      113.333333         30.0          30.0
mechanic     90.000000         25.0          25.0
teacher     300.000000        100.0         100.0
unemployed   10.000000          0.0           0.0

x_train = x_train.fillna(x_train[['Occupation']].join(mean, on='Occupation'))
print (x_train)
   Occupation  salary  expenditure  expenditure1 col
0      driver     100         20.0          20.0   a
1      driver     150         40.0          40.0   a
2    mechanic      70         10.0          10.0   b
3     teacher     300        100.0         100.0   b
4    mechanic      90         25.0          25.0   d
5     teacher     250         80.0          80.0   d
6  unemployed      10          0.0           0.0   e
7      driver      90         30.0          30.0   e
8    mechanic     110         40.0          40.0   h
9     teacher     350        120.0         120.0   h

x_test = x_test.fillna(x_test[['Occupation']].join(mean, on='Occupation'))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

熊猫使用与其他一些熊猫列对应的先验值填充NaN

来自分类Dev

在熊猫中使用值之前和之后的平均值分组并填充NaN

来自分类Dev

如何使用熊猫在数据框的同一行中用值填充NaN

来自分类Dev

分组后在熊猫中填充NaN值

来自分类Dev

在熊猫中,使用“ where”选择时,删除不满足条件的列,而不是用NaN填充

来自分类Dev

通过查找不同列中的值,使用字典中的键填充 DataFrame 列中的 NaN

来自分类Dev

使用熊猫库基于csv中的其他列值填充空白值

来自分类Dev

使用日期比较条件对非NAN值的熊猫数据框中的值进行计数

来自分类Dev

使用另一个netcdf文件将nan值填充到netcdf文件中

来自分类Dev

使用 Pandas 中的先前值填充多列内容的 nan 行

来自分类Dev

如何使用指定间隔的移位来填充熊猫中的缺失值?

来自分类Dev

熊猫使用由列名组成的列将值动态填充到另一列中

来自分类Dev

如何使用数据条件填充熊猫数据框中的缺失值?

来自分类Dev

如何在使用`rjust()`时忽略熊猫数据框中的`NaN`值?

来自分类Dev

如何在使用`rjust()`时忽略熊猫数据框中的`NaN`值?

来自分类Dev

用熊猫中的条件用df填充NaN值

来自分类Dev

警告消息:使用rpart的插入符号train()中的“重新采样的性能度量中缺少值”

来自分类Dev

如何使用一列中的值填充另一列中的nan,反之亦然在Pandas中?

来自分类Dev

大熊猫:使用索引中的唯一值对矩阵进行分组和转置,并填充空白值

来自分类Dev

使用熊猫读取.data文件

来自分类Dev

熊猫用列值填充NaN

来自分类Dev

使用同一数据框的特定列作为参考同时填充多个列中的NaN值的最佳方法

来自分类Dev

使用同一数据框的特定列作为参考同时填充多个列中的NaN值的最佳方法

来自分类Dev

如何使用熊猫根据列模式填充缺失值?

来自分类Dev

使用列表理解来填充熊猫值字典

来自分类Dev

如何使用熊猫根据列模式填充缺失值?

来自分类Dev

需要基于其他列中的值在列中填充自定义序列索引,以便使用Mulesoft中的Data Weave进行流处理

来自分类Dev

使用NaN值将熊猫系列转换为int

来自分类Dev

大熊猫:根据一列中的相似值,使用多个数据框中的值填充数据框中的空列

Related 相关文章

  1. 1

    熊猫使用与其他一些熊猫列对应的先验值填充NaN

  2. 2

    在熊猫中使用值之前和之后的平均值分组并填充NaN

  3. 3

    如何使用熊猫在数据框的同一行中用值填充NaN

  4. 4

    分组后在熊猫中填充NaN值

  5. 5

    在熊猫中,使用“ where”选择时,删除不满足条件的列,而不是用NaN填充

  6. 6

    通过查找不同列中的值,使用字典中的键填充 DataFrame 列中的 NaN

  7. 7

    使用熊猫库基于csv中的其他列值填充空白值

  8. 8

    使用日期比较条件对非NAN值的熊猫数据框中的值进行计数

  9. 9

    使用另一个netcdf文件将nan值填充到netcdf文件中

  10. 10

    使用 Pandas 中的先前值填充多列内容的 nan 行

  11. 11

    如何使用指定间隔的移位来填充熊猫中的缺失值?

  12. 12

    熊猫使用由列名组成的列将值动态填充到另一列中

  13. 13

    如何使用数据条件填充熊猫数据框中的缺失值?

  14. 14

    如何在使用`rjust()`时忽略熊猫数据框中的`NaN`值?

  15. 15

    如何在使用`rjust()`时忽略熊猫数据框中的`NaN`值?

  16. 16

    用熊猫中的条件用df填充NaN值

  17. 17

    警告消息:使用rpart的插入符号train()中的“重新采样的性能度量中缺少值”

  18. 18

    如何使用一列中的值填充另一列中的nan,反之亦然在Pandas中?

  19. 19

    大熊猫:使用索引中的唯一值对矩阵进行分组和转置,并填充空白值

  20. 20

    使用熊猫读取.data文件

  21. 21

    熊猫用列值填充NaN

  22. 22

    使用同一数据框的特定列作为参考同时填充多个列中的NaN值的最佳方法

  23. 23

    使用同一数据框的特定列作为参考同时填充多个列中的NaN值的最佳方法

  24. 24

    如何使用熊猫根据列模式填充缺失值?

  25. 25

    使用列表理解来填充熊猫值字典

  26. 26

    如何使用熊猫根据列模式填充缺失值?

  27. 27

    需要基于其他列中的值在列中填充自定义序列索引,以便使用Mulesoft中的Data Weave进行流处理

  28. 28

    使用NaN值将熊猫系列转换为int

  29. 29

    大熊猫:根据一列中的相似值,使用多个数据框中的值填充数据框中的空列

热门标签

归档