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

spark dataframe 的 fillna 函数等同于 na.fill(),na.fill 函数底层也是调用 fillna,它的作用是 ...
数据丢失(缺失)在现实生活中总是一个问题。机器学习和数据挖掘等领域由于数据缺失导致的数据质量差,在模型预测的准确性上面临着严重的问题。在这些 ...
Pandas DataFrame 对象的 loc 属性函数用来通过行列标签选定指定索引区域的数据,从源码可以看出,loc 是 @proper ...
在实际开发中,常常遇到多个 dataframe 关联(即 join)操作后,有些字段或列的值为 null 的情况,我们需要对列值为空进行填充 ...
pandas 使用 describe 等函数输出相关统计信息时,由于对应的行或列数量太多,会导致打印的显示信息不全。 ...