【Pandas】pandas Series fillna
Pandas2.2 Series
Computations descriptive stats
方法 | 描述 |
---|---|
Series.backfill(*[, axis, inplace, limit, …]) | 用于填充 Series 中缺失值(NaN)的方法 |
Series.bfill(*[, axis, inplace, limit, …]) | 用于填充 Series 中缺失值(NaN)的方法 |
Series.dropna(*[, axis, inplace, how, …]) | 用于删除 Series 中包含缺失值(NaN)的元素的方法 |
Series.ffill(*[, axis, inplace, limit, …]) | 用于填充 Series 中缺失值(NaN)的方法 |
Series.fillna([value, method, axis, …]) | 用于填充 Series 中缺失值(NaN)的方法 |
pandas.Series.fillna
pandas.Series.fillna
是用于填充 Series
中缺失值(NaN)的方法。它提供了多种方式来处理缺失值,包括使用指定的值、前向填充(ffill)、后向填充(bfill)等。
参数说明
- value:标量、字典、Series 或可调用对象,默认为
None
。用于填充缺失值的具体值。如果传递的是字典或 Series,则仅填充匹配的索引标签。 - method:字符串,默认为
None
。指定填充方法:'backfill'
或'bfill'
:用后面最近的有效观测值填充。'pad'
或'ffill'
:用前面最近的有效观测值填充。
- axis:{0或’index’},默认为0。表示沿哪个轴进行操作。对于
Series
来说,这个参数通常不需要设置。 - inplace:布尔值,默认为
False
。如果为True
,则就地修改原Series
,否则返回一个新的Series
。 - limit:整数,默认为
None
。指定最大连续填充个数,超过此限制的缺失值将不被填充。 - downcast:可选,默认为
<no_default>
。用于向下转换数据类型,例如从浮点型转换为整型。
示例及结果
示例1:使用标量值填充缺失值
import pandas as pd
import numpy as np
# 创建一个包含缺失值的 Series
s = pd.Series([1, np.nan, np.nan, 4, 5, np.nan, 7])
print("原始 Series:")
print(s)
# 使用 fillna 方法并指定 value 参数
filled_s = s.fillna(value=0)
print("\n填充后的 Series (使用 fillna 并指定 value=0):")
print(filled_s)
输出结果:
原始 Series:
0 1.0
1 NaN
2 NaN
3 4.0
4 5.0
5 NaN
6 7.0
dtype: float64
填充后的 Series (使用 fillna 并指定 value=0):
0 1.0
1 0.0
2 0.0
3 4.0
4 5.0
5 0.0
6 7.0
dtype: float64
示例2:使用前向填充(ffill)
# 使用 fillna 方法并指定 method='ffill'
filled_s_ffill = s.fillna(method='ffill')
print("\n填充后的 Series (使用 fillna 并指定 method='ffill'):")
print(filled_s_ffill)
输出结果:
填充后的 Series (使用 fillna 并指定 method='ffill'):
0 1.0
1 1.0
2 1.0
3 4.0
4 5.0
5 5.0
6 7.0
dtype: float64
示例3:使用后向填充(bfill)
# 使用 fillna 方法并指定 method='bfill'
filled_s_bfill = s.fillna(method='bfill')
print("\n填充后的 Series (使用 fillna 并指定 method='bfill'):")
print(filled_s_bfill)
输出结果:
填充后的 Series (使用 fillna 并指定 method='bfill'):
0 1.0
1 4.0
2 4.0
3 4.0
4 5.0
5 7.0
6 7.0
dtype: float64
示例4:使用 inplace
参数
# 创建一个包含缺失值的 Series
s_inplace = pd.Series([1, np.nan, np.nan, 4, 5, np.nan, 7])
print("原始 Series:")
print(s_inplace)
# 使用 fillna 方法并设置 inplace=True
s_inplace.fillna(value=0, inplace=True)
print("\n填充后的 Series (使用 fillna 并设置 inplace=True):")
print(s_inplace)
输出结果:
原始 Series:
0 1.0
1 NaN
2 NaN
3 4.0
4 5.0
5 NaN
6 7.0
dtype: float64
填充后的 Series (使用 fillna 并设置 inplace=True):
0 1.0
1 0.0
2 0.0
3 4.0
4 5.0
5 0.0
6 7.0
dtype: float64
示例5:使用 limit
参数
# 创建一个包含缺失值的 Series
s_limit = pd.Series([1, np.nan, np.nan, 4, 5, np.nan, np.nan, 8])
print("原始 Series:")
print(s_limit)
# 使用 fillna 方法并设置 limit=1
filled_s_limit = s_limit.fillna(method='ffill', limit=1)
print("\n填充后的 Series (使用 fillna 并设置 limit=1):")
print(filled_s_limit)
输出结果:
原始 Series:
0 1.0
1 NaN
2 NaN
3 4.0
4 5.0
5 NaN
6 NaN
7 8.0
dtype: float64
填充后的 Series (使用 fillna 并设置 limit=1):
0 1.0
1 1.0
2 NaN
3 4.0
4 5.0
5 5.0
6 NaN
7 8.0
dtype: float64
示例6:使用字典或 Series 填充特定索引的缺失值
# 创建一个包含缺失值的 Series
s_dict = pd.Series([1, np.nan, np.nan, 4, 5, np.nan, 7], index=['a', 'b', 'c', 'd', 'e', 'f', 'g'])
print("原始 Series:")
print(s_dict)
# 使用 fillna 方法并传递字典作为 value 参数
filled_s_dict = s_dict.fillna({'b': 2, 'c': 3, 'f': 6})
print("\n填充后的 Series (使用 fillna 并传递字典作为 value 参数):")
print(filled_s_dict)
输出结果:
原始 Series:
a 1.0
b NaN
c NaN
d 4.0
e 5.0
f NaN
g 7.0
dtype: float64
填充后的 Series (使用 fillna 并传递字典作为 value 参数):
a 1.0
b 2.0
c 3.0
d 4.0
e 5.0
f 6.0
g 7.0
dtype: float64
通过这些示例,可以看到 fillna
方法在不同参数下的使用方式及其效果。特别是 value
、method
和 limit
参数可以更灵活地控制填充行为,从而更好地处理缺失值。