1 函数介绍
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
功能:使用指定的方法填充NA / NaN值
参数:value : 变量, 字典, Series, or DataFrame
用于填充缺失值(例如0),或者指定为每个索引(对于Series)或列(对于DataFrame)使用哪个字典/Serise/DataFrame的值。(不在字典/Series/DataFrame中的值不会被填充)这个值不能是一个列表。
method : {‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}, 默认值 None ; 在Series中使用方法填充空白(‘backfill’, ‘bfill’向前填充,‘pad’, ‘ffill’向后填充)
axis : {0 or ‘index’, 1 or ‘columns’}
inplace : boolean, 默认值 False。如果为Ture,在原地填满。注意:这将修改次对象上的任何其他视图(例如,DataFrame中的列的无复制贴片)
limit : int, 默认值 None; 如果指定了方法,则这是连续的NaN值的前向/后向填充的最大数量。 换句话说,如果连续NaN数量超过这个数字,它将只被部分填充。 如果未指定方法,则这是沿着整个轴的最大数量,其中NaN将被填充。 如果不是无,则必须大于0。
downcast : dict, 默认是 None; 如果可能的话,把 item->dtype 的字典将尝试向下转换为适当的相等类型的字符串(例如,如果可能的话,从float64到int64)
返回:被充满的DataFrame
以上部分转载:https://blog.csdn.net/brucewong0516/article/details/80406564
2 实例
数据源链接:https://pan.baidu.com/s/1hEPsGtFm7n43n10uNtn0vw
提取码:wit7
import pandas as pd
df=pd.read_csv('fillna.csv') #读取数据
df.head() #查看数据前5行
Age | Fare | Embarked | |
---|---|---|---|
0 | 22.0 | 7.2500 | NaN |
1 | NaN | 71.2833 | C |
2 | 26.0 | NaN | S |
3 | NaN | 53.1000 | NaN |
4 | 35.0 | 8.0500 | S |
df.isnull().sum() #查看每一列缺失值的数目
Age 179
Fare 2
Embarked 8
dtype: int64
#Age列与Fare列的缺失值用平均值填充
age_mean=df['Age'].mean()
df['Age']=df['Age'].fillna(age_mean)
fare_mean=df['Fare'].mean()
df['Fare']=df['Fare'].fillna(fare_mean)
#Embarked列的缺失值用‘S’填充
df['Embarked']=df['Embarked'].fillna('S')
#再次查看前5列
df.head()
Age | Fare | Embarked | |
---|---|---|---|
0 | 22.000000 | 7.250000 | S |
1 | 29.680014 | 71.283300 | C |
2 | 26.000000 | 32.232437 | S |
3 | 29.680014 | 53.100000 | S |
4 | 35.000000 | 8.050000 | S |
缺失值已经被填充