pandas fillna_如何处理Pandas里的缺失值(入门篇2)

4c8a61059c584b2cfb27193d083c7e0d.png

在使用python里的pandas库进行数据分析工作时,很多时候我们都会遇到这样一个问题:数据缺失。这也是大部分数据分析工作所会遇到的之一。而正确处理缺失值,也是我们在数据分析中数据预处理环节的关键的一环。下面我将讲讲在我学习Pandas的时候,对缺失值处理的一些总结(入门篇2).

这一次我们来说说如何使用fillna()函数填充缺失值。

(2)填充(fillna)

函数

函数作用:填充缺失值

主要参数:

  1. value:需要用什么值去填充缺失值
  2. axis:确定填充维度,从行开始或是从列开始
  3. method:填充缺失值所用的方法。
  4. limit:确定填充的个数,如果limit=2,则只填充两个缺失值。
  • 下面我们举几个例子

首先还是先生成我们实验用的数据:

import pandas as pd
import numpy as np
df = pd.DataFrame([[np.nan, 2, np.nan, 0],
                  [3, 4, np.nan, 1],
                 [np.nan, np.nan, np.nan, 5],
                [np.nan, 3, np.nan, 4]],
                 columns=list('ABCD'))
df

df0cbe9d037d384f6324fe5dfe3b076c.png

(1)ffill:用缺失值前面的一个值代替缺失值,如果axis =1,那么就是横向的前面的值替换后面的缺失值,如果axis=0,那么则是上面的值替换下面的缺失值。横向用缺失值前面的值替换缺失值"/"纵向用缺失值上面的值替换缺失值",

这一种方法,都是用缺失值前面的值对缺失值进行填充。(行/列都可以指定)

(2)backfill/bfill:缺失值后面的一个值代替前面的缺失值(具体用法与前面类似)。

注意~用这种方法时不能与value同时出现。

以下以ffill为例:

df.fillna(axis=1,method='ffill')

0035e79f28ddd0c5e1bb1e9a412ee9fa.png
 df.fillna(axis=0,method='ffill')

c488d47bf74cf3aa060437ff4e5edd6f.png

(bfill的用法与上面一致,我们就不举例了)

(3)用指定的值进行填充。

下面我们以填充0为例:

df.fillna(0)

b7a99f39d29af605f80aa6f95b9212c8.png

可以看到,缺失值都被填充成0.

(4)针对不同的列,我们用不同的值填充(行也是类似用法):

trans={"A":9,"B":8,"C":7,"D":6}
df.fillna(value=trans)

5ce7a6e72e6190c29c25b4d4489741ea.png

(5)还是针对不同的列,我们用不同的值填充,但是这一次我们试着用limit对填充的次数进行限制,也就是说,对每列出现的替换值,我们都可以进行替换次数的限制:

下面我们对替换值限制为每列只替换一次。

trans={"A":9,"B":8,"C":7,"D":6}
df.fillna(value=trans,limit=1)

c6b2ab466f29e1e85866746e0b69e8e9.png

(6)使用均值mean( )的方法进行缺失值填充:(注意下面两种的不同)

ac083069f2b1ca926aaf3661bea6b0ed.png

f17592972b7cd5a7a71c2f81360b8114.png

由于在本例中,只有A、B列符合均值填充的条件,因此我们是否指定A、B列,在本例中不影响。

在实际工作和学习中,针对缺失值填充还有许多更高级的做法,由于本篇是入门向,因此未做提及,未来有时间将为大家介绍关于缺失值填充更高级的做法(机器学习等)。


以上便是<如何处理Pandas里的缺失值(入门篇2)>的内容,欢迎感兴趣的小伙伴一起讨论、学习,更多内容请看我的其他文章。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值