pandas缺失值填充
作用: 填充缺失值
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
主要参数:
value:需要用什么值去填充缺失值 axis:确定填充维度,从行开始或是从列开始 method:填充缺失值所用的方法。 limit:确定填充的个数,如果limit=2,则只填充两个缺失值。
method参数讲解 (1)ffill:用缺失值前面的一个值代替缺失值,如果axis =1,那么就是横向的前面的值替换后面的缺失值,如果axis=0,那么则是上面的值替换下面的缺失值。横向用缺失值前面的值替换缺失值"/“纵向用缺失值上面的值替换缺失值”,
这一种方法,都是用缺失值前面的值对缺失值进行填充。(行/列都可以指定)
(2)backfill/bfill:缺失值后面的一个值代替前面的缺失值(具体用法与前面类似)。
例子讲解:
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
沿Y轴方向,进行填充选择前面的值
df.fillna(axis=1,method='ffill')
沿X轴方向,进行填充选择前面的值
df.fillna(axis=1,method='ffill')
选择后面的值
df.fillna(0)
填充为特定的数 这里为0
trans={"A":9,"B":8,"C":7,"D":6}
df.fillna(value=trans)
指定不同的列填充不同的数 指定不同的列填充不同的数 同时 限定填充的数量
trans={"A":9,"B":8,"C":7,"D":6}
df.fillna(value=trans,limit=1)
填充为各自列的均值
df.fillna(df.mean())
df.fillna(df.mean()['A':'B'])
只填充A到B这两个列
|