pandas 教程

Pandas 数据结构

Pandas 基本操作

Pandas API

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/pandas-dataframe-how-to-fillna.html

pandas dataframe 填充 NaN(填补缺失值)的方法 fillna 函数使用说明

Pandas DataFrame 常用操作及基本知识点详解 Pandas DataFrame 常用操作及基本知识点详解


在基于 pandas 的 DataFrame 对象进行数据处理时(如样本特征的缺省值处理),可以使用 DataFrame 对象的 fillna 函数进行填充,同样可以针对指定的列进行填补空值,单列的操作是调用 Series 对象的 fillna 函数。

fillna 函数

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

fillna 函数将用指定的值(value)或方式(method)填充 NA/NaN 等空值缺失值。

value
用于填充的值,可以是数值、字典、Series 对象 或 DataFrame 对象。
method
当没有指定 value 参数时,可以该参数的内置方式填充缺失值,可选项有 {‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None},默认值为 None;backfill 和 bfill 用下一个非缺失值填充该缺失值,pad 和 ffill 用前一个非缺失值去填充该缺失值。该参数通常和 axis 一起使用,值得注意的是,method 参数不能与 value 同时出现
axis
指定填充维度,具体指行维度或列维度,也可以理解为指定填充的方向,可选值有整数 0 或 1,也可以是字符串,选项有 'index' 或 'columns',0 等同于 'index' 表示行维度,1 等同于 'columns' 表示列维度。
inplace
是否修改原对象的值,True 表示修改,默认是 False,表示创建一个副本,修改副本,原对象不变。
limit
指定填充的个数上限,默认为 None,即不限制。

示例

通过常数填充 NaN

填充前:

import pandas as pd 
  
df = pd.read_csv("nba.csv")

DataFrame 对象 df 如下图:

dataframe

下面将如上示例的 College 列的 NaN 填充为 'No College',同时改变原对象的值,代码如下:

import pandas as pd 
  
df = pd.read_csv("nba.csv") 
df["College"].fillna("No College", inplace = True)

执行上述代码后,df 变为如下输出:

dataframe nan

利用 method 参数填充 NaN

下面示例,指定 method 为 ffill,即缺失值的前一个值来填充 NaN,同样针对 College 列进行操作,会看到第 4、5 行的空值变为 Georgia State

import pandas as pd 
  
df = pd.read_csv("nba.csv") 
df["College"].fillna(method ='ffill', inplace = True)

输出如下:

dataframe nan

使用 limit 参数设置填充上限

设置 limit 参数为 1,这样只会按序填充完 1 个空值,具体示例如下:

import pandas as pd 
  
df = pd.read_csv("nba.csv") 
df["College"].fillna(method ='ffill', limit = 1, inplace = True)

代码执行完结果为只改变了第 4 行数据,第 5 行空值未填充,输出如下:

dataframe nan