python pandas fillna 函数的使用详解

34 min read

fillna() 函数是 pandas 库中一个用于填充缺失值的函数。缺失值通常用 NaN(Not a Number)或 None 表示。fillna() 函数可以用指定的值或方法填充缺失值。

使用语法如下:

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

参数说明如下:

  • value: 填充缺失值的标量值或字典对象,其中键是需要填充的列名,值是对应的填充值。
  • method: 填充缺失值的方法,可选的值有 'backfill'、'bfill'、'pad'、'ffill'。
  • axis: 指定填充缺失值的轴,可选的值有 0、'index'、1、'columns',其中 0 或 'index' 表示填充行方向上的缺失值,1 或 'columns' 表示填充列方向上的缺失值。
  • inplace: 是否对原 DataFrame 进行就地修改,默认为 False。
  • limit: 沿轴填充缺失值的最大数量。
  • downcast: 指定缺失值填充之后的数据类型,常用的有 'infer'、'integer'、'signed'、'unsigned'、'float'。

下面是 fillna() 函数的应用示例:

import pandas as pd

# 创建一个包含缺失值的 DataFrame
data = {'A': [1, 2, None, 4, None],
        'B': [None, 6, 7, 8, None],
        'C': [9, None, 11, None, 13]}
df = pd.DataFrame(data)

# 使用指定的值填充缺失值
df_filled = df.fillna(0)
print(df_filled)

# 使用字典对象填充缺失值
fill_values = {'A': -1, 'B': -2, 'C': -3}
df_filled = df.fillna(fill_values)
print(df_filled)

# 使用前向填充方法填充缺失值
df_filled = df.fillna(method='ffill')
print(df_filled)

# 使用后向填充方法填充缺失值
df_filled = df.fillna(method='bfill')
print(df_filled)

# 填充行方向上的缺失值
df_filled = df.fillna(method='ffill', axis=0)
print(df_filled)

# 填充列方向上的缺失值
df_filled = df.fillna(method='ffill', axis=1)
print(df_filled)

以上示例代码输出的结果分别为:

     A    B     C
0  1.0  0.0   9.0
1  2.0  6.0   0.0
2  0.0  7.0  11.0
3  4.0  8.0   0.0
4  0.0  0.0  13.0

     A    B     C
0  1.0 -2.0   9.0
1  2.0  6.0   7.0
2 -1.0  7.0  11.0
3  4.0  8.0  -3.0
4 -1.0 -2.0  13.0

     A    B     C
0  1.0  NaN   9.0
1  2.0  6.0   9.0
2  2.0  6.0  11.0
3  4.0  8.0  11.0
4  4.0  8.0  13.0

     A    B     C
0  1.0  6.0   9.0
1  2.0  6.0  11.0
2  4.0  6.0  11.0
3  4.0  8.0  13.0
4  NaN  NaN   NaN

     A    B     C
0  1.0  6.0   9.0
1  2.0  6.0   7.0
2  2.0  7.0  11.0
3  4.0  8.0  13.0
4  NaN  NaN   NaN

     A    B     C
0  1.0  9.0   9.0
1  2.0  6.0   7.0
2  2.0  7.0  11.0
3  4.0  8.0  13.0
4  NaN  NaN   NaN

其中,第一个填充了缺失值为指定的值或字典对象,第二个使用了前向填充方法,第三个使用了后向填充方法,第四个和第五个分别填充了行方向和列方向上的缺失值。