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方法的用法,能够帮助我们更好地处理缺失值,保证数据的完整性和准确性。