python:详解pandas.DataFrame.fillna( )函数

缺失数据比较多的情况下,可以直接滤除,缺失数据比较少时,对数据进行填充就很有必要了。

数据填充函数fillna()默认参数如下:

fillna(self, value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)


import numpy as np
from numpy import nan
import pandas as pd
data=pd.DataFrame(np.arange(3,19,1).reshape(4,4),index=list('abcd'))
print(data)
data.iloc[0:2,0:3]=nan
print(data)

     0           1      2        3
a   NaN   NaN   NaN    6
b   NaN   NaN   NaN   10
c   11.0    12.0   13.0   14
d   15.0    16.0   17.0   18

print(data.fillna(0))   ### 用0填充缺失数据

      0       1        2       3
a   0.0    0.0     0.0     6
b   0.0    0.0     0.0    10
c  11.0  12.0   13.0    14
d  15.0  16.0   17.0   18

print(data.fillna(data.mean()))     ### 用每列特征的均值填充缺失数据

      0       1       2      3
a  13.0  14.0  15.0   6
b  13.0  14.0  15.0  10
c  11.0  12.0  13.0   14
d  15.0  16.0  17.0   18

print(data.fillna(data.median()))   ### 用每列特征的中位数填充缺失数据

     0       1        2      3
a  13.0  14.0  15.0   6
b  13.0  14.0  15.0  10
c  11.0  12.0  13.0   14
d  15.0  16.0  17.0   18

print(data.fillna(method='bfill'))   ### 用相邻后面(back)特征填充前面空值

 

      0      1        2     3
a  11.0  12.0  13.0   6
b  11.0  12.0  13.0  10
c  11.0  12.0  13.0  14
d  15.0  16.0  17.0  18

data=pd.DataFrame(np.arange(3,19,1).reshape(4,4),index=list('abcd'))
data.iloc[1:2,:]=nan
print(data)

      0       1       2     3
a  11.0  12.0  13.0   6
b  11.0  12.0  13.0  10
c  11.0  12.0  13.0  14
d  15.0  16.0  17.0  18

print(data.fillna(method='bfill'))   ### 用相邻前面(before)特征填充后面空值 

      0      1          2        3
a   3.0    4.0      5.0     6.0
b  NaN   NaN   NaN   10
c  11.0   12.0    13.0   14.0
d  15.0   16.0    17.0   18.0

values={0:10,1:20,2:30}
print(data.fillna(value=values))   ### 用字典对不同的列填充不同的缺失数据

      0       1       2     3
a  3.0    4.0    5.0    6.0
b  10.0  20.0  30.0  10
c  11.0  12.0  13.0  14
d  15.0  16.0  17.0  18

  • 10
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值