fillna()函数

fillna函数:

作用:补充缺失值

参数:fillna(inplace,method,limit,axis)

参数解释+代码演示


自定义DataFrame类型的数据

>>> import pandas as pd
>>> import numpy as np
>>> from numpy import nan as NaN
>>> df = pd.DataFrame([[1,2,3],[NaN,NaN,3],[NaN,NaN,NaN]])
>>> df
     0    1    2
0  1.0  2.0  3.0
1  NaN  NaN  3.0
2  NaN  NaN  NaN

一、不指定任何参数的情况下进行缺失值填充

# 用常数填充

>>> df.fillna(100)
       0      1      2
0    1.0    2.0    3.0
1  100.0  100.0    3.0
2  100.0  100.0  100.0
>>> df
     0    1    2
0  1.0  2.0  3.0
1  NaN  NaN  3.0
2  NaN  NaN  NaN

# 用字典填充
>>> df.fillna({0:1,1:2,2:3})
     0    1    2
0  1.0  2.0  3.0
1  1.0  2.0  3.0
2  1.0  2.0  3.0
>>> df
     0    1    2
0  1.0  2.0  3.0
1  NaN  NaN  3.0
2  NaN  NaN  NaN

# 可以看到在不指定任何参数的情况下进行缺失值填充,原对象df并没有发生改变

二、指定参数的情况下进行缺失值填充

1、inplace参数的取值:True、False

       True:直接修改原对象

       Fasle:创建一个副本,修改副本,原对象不变(缺失默认

# 指定inplace参数
>>> df.fillna(0,inplace=True) # df对象发生改变
>>> df
     0    1    2
0  1.0  2.0  3.0
1  0.0  0.0  3.0
2  0.0  0.0  0.0

2、method参数的取值:{'pad','ffill','backfill','bfill','None'}

       pad/ffill:用前一个非缺失值去填充该缺失值

       backfill/bfill:用下一个非缺失值填充该缺失值

       None:指定一个值去替换缺失值(缺失默认)

# 指定method参数
>>> df.iloc[1,1] = NaN
>>> df
     0    1    2
0  1.0  2.0  3.0
1  0.0  NaN  3.0
2  0.0  0.0  0.0
>>> df.fillna(method='ffill') # 用前一个非缺失值填充该缺失值
     0    1    2
0  1.0  2.0  3.0
1  0.0  2.0  3.0
2  0.0  0.0  0.0
>>> df.iloc[1,1] = NaN
>>> df
     0    1    2
0  1.0  2.0  3.0
1  0.0  NaN  3.0
2  0.0  0.0  0.0
>>> df.fillna(method='bfill') # 用下一个非缺失值填充该对象
     0    1    2
0  1.0  2.0  3.0
1  0.0  0.0  3.0
2  0.0  0.0  0.0

3、limit参数:限制填充个数

# 指定limit参数
>>> df.iloc[1,1] = NaN
>>> df.iloc[0,1] = NaN
>>> df
     0    1    2
0  1.0  NaN  3.0
1  0.0  NaN  3.0
2  0.0  0.0  0.0
>>> df.fillna(method='bfill',limit=1) # 用下一个非缺失值填充,只能填充一个
     0    1    2
0  1.0  NaN  3.0
1  0.0  0.0  3.0
2  0.0  0.0  0.0

4、axis参数:修改填充方向

       1:按行填充;0:按列填充

# 指定axis参数,注意必须至少和value或method一块使用
>>> df
     0    1    2
0  1.0  NaN  3.0
1  0.0  NaN  3.0
2  0.0  0.0  0.0
>>> df.fillna(2,axis=1)
     0    1    2
0  1.0  2.0  3.0
1  0.0  2.0  3.0
2  0.0  0.0  0.0
>>> df.fillna(2,axis=0)
     0    1    2
0  1.0  2.0  3.0
1  0.0  2.0  3.0
2  0.0  0.0  0.0
>>> df.iloc[0,2] = NaN
>>> df
     0    1    2
0  1.0  NaN  NaN
1  0.0  NaN  3.0
2  0.0  0.0  0.0
>>> df.fillna(2,axis=1)
     0    1    2
0  1.0  2.0  2.0
1  0.0  2.0  3.0
2  0.0  0.0  0.0
>>> df.fillna(2,axis=0)
     0    1    2
0  1.0  2.0  2.0
1  0.0  2.0  3.0
2  0.0  0.0  0.0
# 和value一块使用时,效果上看不出来区别

# 和method一块使用时,效果如下
>>> df
     0    1    2
0  1.0  NaN  NaN
1  0.0  NaN  3.0
2  0.0  0.0  0.0
>>> df.fillna(axis=0,method='bfill') # 按列填充,使用下一行非缺失值填充
     0    1    2
0  1.0  0.0  3.0
1  0.0  0.0  3.0
2  0.0  0.0  0.0
>>> df
     0    1    2
0  1.0  NaN  NaN
1  0.0  NaN  3.0
2  0.0  0.0  0.0
>>> df.fillna(axis=1,method='bfill') # 按行填充,用下一列非缺失值填充
     0    1    2
0  1.0  NaN  NaN
1  0.0  3.0  3.0
2  0.0  0.0  0.0

# 联合limit表示每行或每列限制填充的个数
>>> df.iloc[0,2] = 3
>>> df
     0    1    2
0  1.0  NaN  3.0
1  0.0  NaN  3.0
2  0.0  0.0  0.0

# 按行填充,每行填充一个,用前一列非缺失值填充
>>> df.fillna(method='ffill',limit=1,axis=1) 
     0    1    2
0  1.0  1.0  3.0
1  0.0  0.0  3.0
2  0.0  0.0  0.0
# 按列填充,每列填充一个,用前一列非缺失值填充,前一行无,所以未改变
>>> df.fillna(method='ffill',limit=1,axis=0)
     0    1    2
0  1.0  NaN  3.0
1  0.0  NaN  3.0
2  0.0  0.0  0.0
# 按列填充,用下一行非缺失值填充,总共一列缺失,两个缺失值,limit=1限制只能填充一个
>>> df.fillna(method='bfill',limit=1,axis=0)
     0    1    2
0  1.0  NaN  3.0
1  0.0  0.0  3.0
2  0.0  0.0  0.0
>>> df.iloc[0,2] = NaN
>>> df
     0    1    2
0  1.0  NaN  NaN
1  0.0  NaN  3.0
2  0.0  0.0  0.0
# 按列填充,每列填充一个,用后一行非缺失值填充
>>> df.fillna(method='bfill',limit=1,axis=0)
     0    1    2
0  1.0  NaN  3.0
1  0.0  0.0  3.0
2  0.0  0.0  0.0
'''
 从上面的代码演示中可以看到一块使用axis,method,limit参数时,
limit限制的是每行或每列(axis=1或axis=0)可以填充的个数,
method表示使用前一列/后一列或前一行或后一行非缺失值来填充缺失值
'''

总结:

在机器学习中,当数据有缺失时,如果直接删除某行或某列的数据一般是不可取的,特别当数据量偏小的时候,一般用前一个或下一个非缺失值填充缺失值,或使用均值填充缺失值,填充的语句和参数解释可参考上面的代码理解。

欢迎交流~

  • 24
    点赞
  • 94
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ("value") 是什么意思?可以简要解释一下吗? 答: data.fillna("value") 是 pandas 库中的一个函数,用于将数据中的缺失值(NaN)用指定的值(value)进行替代。函数的作用是对数据集中的缺失值进行处理,以便后续的数据分析和建模。 ### 回答2: data.fillna()是一个pandas库中的函数,用于填充数据中的缺失值。缺失值指的是数据中的空值、NaN或None等。在数据分析和处理过程中,经常会遇到数据缺失的情况,而这些缺失值会对后续的分析和建模造成影响。因此,需要对缺失值进行填充,以提高数据的完整性和准确性。 data.fillna()函数可以接受不同的参数进行填充操作。最常用的是使用固定的数值或者统计值来填充缺失值。例如,可以使用平均值、中位数或者众数填充数值型的缺失值,使用出现频率最高的值填充字符型的缺失值。 此外,data.fillna()函数还可以通过指定方法参数来进行填充。常用的方法有'ffill'和'bfill'。'ffill'表示用前一个非缺失值进行填充,即向前填充;'bfill'表示用后一个非缺失值进行填充,即向后填充。这种方法适用于连续变量或者时间序列数据。 总之,data.fillna()是一个很实用的函数,可以根据具体需求来填充数据中的缺失值。通过合理的填充策略,可以增加数据的完整性和准确性,进而提高后续分析和建模的效果。 ### 回答3: `data.fillna` 是Pandas库中一个方法,用于填充数据中缺失值的函数。缺失值通常表示为NaN(Not a Number)。 使用`data.fillna`可以将缺失值替换为指定的数值或者根据指定的方法进行填充。它的常用参数包括`value`和`method`。 - `value`参数用于指定替换缺失值的数值。可以是一个具体的数值,也可以是一个字典,用于针对不同的列填充不同的数值。例如:`data.fillna(value=0)`将所有的缺失值替换为0。 - `method`参数用于指定填充方法。常用的方法有`ffill`(向前填充)和`bfill`(向后填充)。`ffill`方法将缺失值用其前一个非缺失值进行填充,而`bfill`方法将缺失值用其后一个非缺失值进行填充。例如:`data.fillna(method='ffill')`将缺失值用其前一个非缺失值进行填充。 `data.fillna`方法还可以指定`axis`参数来指定填充的轴(列或行)。默认情况下,它会按列进行填充。 除了常用的替换数值和填充方法外,`data.fillna`方法还支持其他一些参数,例如`limit`参数可以限制每列或每行填充的缺失值的数量。 使用`data.fillna`方法可以简化数据预处理过程中的缺失值处理,使得数据的分析和建模更加准确和完整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值