pandas fillna方法详解

pandas fillna方法详解

pandas fillna方法详解

在数据处理过程中,经常会遇到缺失值的情况。在处理这类数据时,我们可以使用pandas库中的fillna方法来填充缺失值。fillna方法可以填充指定值、前一个非缺失值、后一个非缺失值等。本文将详细介绍pandas的fillna方法及其常见用法。

一、fillna方法的基本语法

fillna方法的基本语法如下:

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

参数说明:

  • value: 填充缺失值的值,可以是标量、字典、Series或DataFrame
  • method: 填充缺失值的方法,可选值有’backfill’、’bfill’、’pad’、’ffill’
  • axis: 填充的方向,0代表纵向填充,1代表横向填充
  • inplace: 是否在原DataFrame上进行填充,默认为False
  • limit: 沿填充方向最多填充的次数
  • downcast: 降低填充的数据类型到较小的类型,可选值有’int’, ‘float’

二、填充缺失值的常见方式

1. 使用指定值填充缺失值

我们可以使用一个指定的值来填充缺失值。示例如下:

import pandas as pd

data = {'A': [1, 2, None, 4],
        'B': [None, 5, 6, None]}
df = pd.DataFrame(data)

# 使用指定值0填充缺失值
df.fillna(0, inplace=True)
print(df)

运行结果:

     A    B
0  1.0  0.0
1  2.0  5.0
2  0.0  6.0
3  4.0  0.0

2. 使用前一个非缺失值填充缺失值

我们还可以使用前一个非缺失值来填充缺失值。示例如下:

import pandas as pd

data = {'A': [1, 2, None, 4],
        'B': [None, 5, 6, None]}
df = pd.DataFrame(data)

# 使用前一个非缺失值填充缺失值
df.fillna(method='ffill', inplace=True)
print(df)

运行结果:

     A    B
0  1.0  NaN
1  2.0  5.0
2  2.0  6.0
3  4.0  6.0

3. 使用后一个非缺失值填充缺失值

同样的,我们也可以使用后一个非缺失值来填充缺失值。示例如下:

import pandas as pd

data = {'A': [1, 2, None, 4],
        'B': [None, 5, 6, None]}
df = pd.DataFrame(data)

# 使用后一个非缺失值填充缺失值
df.fillna(method='bfill', inplace=True)
print(df)

运行结果:

     A    B
0  1.0  5.0
1  2.0  5.0
2  4.0  6.0
3  4.0  NaN

4. 按指定方向填充缺失值

除了使用前一个或后一个非缺失值填充外,我们还可以指定填充的方向为纵向或横向填充。示例如下:

import pandas as pd

data = {'A': [1, 2, None, 4],
        'B': [None, 5, 6, None]}
df = pd.DataFrame(data)

# 沿纵向填充缺失值
df.fillna(method='ffill', axis=0, inplace=True)
print(df)

运行结果:

     A    B
0  1.0  NaN
1  2.0  5.0
2  2.0  6.0
3  4.0  6.0

三、其他常见用法

1. 填充指定列的缺失值

我们还可以指定对某一列或某几列进行填充操作。示例如下:

import pandas as pd

data = {'A': [1, 2, None, 4],
        'B': [None, 5, 6, None]}
df = pd.DataFrame(data)

# 对列A进行填充
df['A'].fillna(method='ffill', inplace=True)
print(df)

运行结果:

     A    B
0  1.0  NaN
1  2.0  5.0
2  2.0  6.0
3  4.0  NaN

2. 限制填充次数

我们可以限制填充的次数,只填充指定次数内的缺失值。示例如下:

import pandas as pd

data = {'A': [1, 2, None, 4],
        'B': [None, 5, 6, None]}
df = pd.DataFrame(data)

# 限制只填充一次
df.fillna(method='ffill', limit=1, inplace=True)
print(df)

运行结果:

     A    B
0  1.0  NaN
1  2.0  5.0
2  2.0  6.0
3  4.0  NaN

3. 降低填充后的数据类型

有时候我们填充后的数据类型可能会变得比较大,可以选择将其降低为较小的类型。示例如下:

import pandas as pd

data = {'A': [1, 2, None, 4],
        'B': [None, 5, 6, None]}
df = pd.DataFrame(data)

# 填充后将数据类型降为int
df.fillna(method='ffill', inplace=True)
df = df.fillna(0, downcast='int')
print(df.dtypes)

运行结果:

A    int8
B    int8
dtype: object

四、总结

通过本文的介绍,我们了解了pandas库中fillna方法的基本语法和常见用法。在实际数据处理中,我们经常会遇到缺失值的情况,填充缺失值是数据预处理的重要步骤之一。掌握fillna方法的用法,能够帮助我们更好地处理缺失值,保证数据的完整性和准确性。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程