![4c8a61059c584b2cfb27193d083c7e0d.png](https://img-blog.csdnimg.cn/img_convert/4c8a61059c584b2cfb27193d083c7e0d.png)
在使用python里的pandas库进行数据分析工作时,很多时候我们都会遇到这样一个问题:数据缺失。这也是大部分数据分析工作所会遇到的之一。而正确处理缺失值,也是我们在数据分析中数据预处理环节的关键的一环。下面我将讲讲在我学习Pandas的时候,对缺失值处理的一些总结(入门篇2).
这一次我们来说说如何使用fillna()函数填充缺失值。
(2)填充(fillna)
函数
函数作用:填充缺失值
主要参数:
- value:需要用什么值去填充缺失值
- axis:确定填充维度,从行开始或是从列开始
- method:填充缺失值所用的方法。
- 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](https://img-blog.csdnimg.cn/img_convert/df0cbe9d037d384f6324fe5dfe3b076c.png)
(1)ffill:用缺失值前面的一个值代替缺失值,如果axis =1,那么就是横向的前面的值替换后面的缺失值,如果axis=0,那么则是上面的值替换下面的缺失值。横向用缺失值前面的值替换缺失值"/"纵向用缺失值上面的值替换缺失值",
这一种方法,都是用缺失值前面的值对缺失值进行填充。(行/列都可以指定)
(2)backfill/bfill:缺失值后面的一个值代替前面的缺失值(具体用法与前面类似)。
注意~用这种方法时不能与value同时出现。
以下以ffill为例:
df.fillna(axis=1,method='ffill')
![0035e79f28ddd0c5e1bb1e9a412ee9fa.png](https://img-blog.csdnimg.cn/img_convert/0035e79f28ddd0c5e1bb1e9a412ee9fa.png)
df.fillna(axis=0,method='ffill')
![c488d47bf74cf3aa060437ff4e5edd6f.png](https://img-blog.csdnimg.cn/img_convert/c488d47bf74cf3aa060437ff4e5edd6f.png)
(bfill的用法与上面一致,我们就不举例了)
(3)用指定的值进行填充。
下面我们以填充0为例:
df.fillna(0)
![b7a99f39d29af605f80aa6f95b9212c8.png](https://img-blog.csdnimg.cn/img_convert/b7a99f39d29af605f80aa6f95b9212c8.png)
可以看到,缺失值都被填充成0.
(4)针对不同的列,我们用不同的值填充(行也是类似用法):
trans={"A":9,"B":8,"C":7,"D":6}
df.fillna(value=trans)
![5ce7a6e72e6190c29c25b4d4489741ea.png](https://img-blog.csdnimg.cn/img_convert/5ce7a6e72e6190c29c25b4d4489741ea.png)
(5)还是针对不同的列,我们用不同的值填充,但是这一次我们试着用limit对填充的次数进行限制,也就是说,对每列出现的替换值,我们都可以进行替换次数的限制:
下面我们对替换值限制为每列只替换一次。
trans={"A":9,"B":8,"C":7,"D":6}
df.fillna(value=trans,limit=1)
![c6b2ab466f29e1e85866746e0b69e8e9.png](https://img-blog.csdnimg.cn/img_convert/c6b2ab466f29e1e85866746e0b69e8e9.png)
(6)使用均值mean( )的方法进行缺失值填充:(注意下面两种的不同)
![ac083069f2b1ca926aaf3661bea6b0ed.png](https://img-blog.csdnimg.cn/img_convert/ac083069f2b1ca926aaf3661bea6b0ed.png)
![f17592972b7cd5a7a71c2f81360b8114.png](https://img-blog.csdnimg.cn/img_convert/f17592972b7cd5a7a71c2f81360b8114.png)
由于在本例中,只有A、B列符合均值填充的条件,因此我们是否指定A、B列,在本例中不影响。
在实际工作和学习中,针对缺失值填充还有许多更高级的做法,由于本篇是入门向,因此未做提及,未来有时间将为大家介绍关于缺失值填充更高级的做法(机器学习等)。
以上便是<如何处理Pandas里的缺失值(入门篇2)>的内容,欢迎感兴趣的小伙伴一起讨论、学习,更多内容请看我的其他文章。