看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
ffill()
方法用于在 DataFrame 或 Series 中向前填充缺失值(NaN
)。它将缺失值用紧随其前的非缺失值替换,保持数据的完整性。
通过将上一个有效观测值传播到下一个有效观察值来填充NA/NaN值。
DataFrame.ffill(
axis=None,
inplace=False,
limit=None,
limit_area=None,
downcast=None
)
axis:
int
或 str
,可选,默认为 None
DataFrame
,0
或 'index'
表示按行填充,1
或 'columns'
表示按列填充。对于 Series
,此参数未使用,默认为 0
。inplace:
bool
,可选,默认为 False
True
表示修改原始数据,False
表示返回填充后的新对象。limit:
int
,可选,默认为 None
method
参数,表示连续的 NaN
值的最大填充数量。如果未指定 method
,则表示整个轴上 NaN
值的最大填充数量。必须大于 0
(如果不是 None
)。limit_area:
str
或 None
,可选,默认为 None
limit
,控制填充的区域:None
: 无限制。'inside'
: 仅填充被有效值包围的 NaN
(内插)。'outside'
: 仅填充有效值之外的 NaN
(外推)。downcast:
dict
或 str
,可选,默认为 None
dict
,则为每种数据类型指定下转换目标。例如 {‘float64’: ‘int64’}
。如果设置为 'infer'
,则尝试将数据下转换为适当的等效类型(如将 float64
下转换为 int64
)。inplace=False
,返回填充后的新 DataFrame 或 Series。inplace=True
,则返回 None
,原始数据会被修改。ffill()
方法用于数据清洗阶段,特别是当数据中存在缺失值时,可以用来填补缺失值,保持数据的完整性。ffill()
是一种有效的填充方法。ffill()
方法常用于填充时间序列中的缺失值,以确保数据的连续性。df = pd.DataFrame([[np.nan, 2, np.nan, 0],
[3, 4, np.nan, 1],
[np.nan, np.nan, np.nan, np.nan],
[np.nan, 3, np.nan, 4]],
columns=list("ABCD"))
df
'''
A B C D
0 NaN 2.0 NaN 0.0
1 3.0 4.0 NaN 1.0
2 NaN NaN NaN NaN
3 NaN 3.0 NaN 4.0
'''
df.ffill()
'''
A B C D
0 NaN 2.0 NaN 0.0
1 3.0 4.0 NaN 1.0
2 3.0 4.0 NaN 1.0
3 3.0 3.0 NaN 4.0
'''
ser = pd.Series([1, np.nan, 2, 3])
ser.ffill()
'''
0 1.0
1 1.0
2 2.0
3 3.0
dtype: float64
'''
例1: 基本填充
import pandas as pd
import numpy as np
# 构造示例数据
data = {
'A': [1, np.nan, 3, np.nan],
'B': [np.nan, 2, np.nan, 4]
}
df = pd.DataFrame(data)
# 使用 ffill 填充缺失值
df_ffilled = df.ffill()
print(df)
print(df_ffilled)
输出:
'''
A B
0 1.0 NaN
1 NaN 2.0
2 3.0 NaN
3 NaN 4.0
A B
0 1.0 NaN
1 1.0 2.0
2 3.0 2.0
3 3.0 4.0
'''
在这个例子中,ffill()
方法将 DataFrame 中的缺失值用紧随其前的非缺失值填充。例如,第二行的 A
列的缺失值被填充为 1.0
,因为紧随其前的非缺失值是 1.0
。
例2: 使用 limit
限制填充数量
import pandas as pd
import numpy as np
# 构造示例数据
data = {
'A': [1, np.nan, 3, np.nan, np.nan],
'B': [np.nan, 2, np.nan, 4, 5]
}
df = pd.DataFrame(data)
# 使用 ffill 填充缺失值,限制填充数量为 1
df_ffilled = df.ffill(limit=1)
print(df)
print(df_ffilled)
输出:
'''
A B
0 1.0 NaN
1 NaN 2.0
2 3.0 NaN
3 NaN 4.0
4 NaN 5.0
A B
0 1.0 NaN
1 1.0 2.0
2 3.0 2.0
3 3.0 4.0
4 3.0 5.0
'''
在这个例子中,limit=1
意味着每个缺失值最多被填充一个前面的非缺失值。例如,在第二行中,A
列的缺失值被填充为 1.0
,但在第四行中,A
列的缺失值仍然是 NaN
,因为已经达到了填充限制。
例3: inplace=True
进行原地填充
import pandas as pd
import numpy as np
# 构造示例数据
data = {
'A': [1, np.nan, 3],
'B': [np.nan, 2, np.nan]
}
df = pd.DataFrame(data)
# 使用 ffill 填充缺失值,修改原始数据
df.ffill(inplace=True)
print(df)
输出:
'''
A B
0 1.0 2.0
1 1.0 2.0
2 3.0 2.0
'''
在这个例子中,ffill(inplace=True)
直接修改了原始 DataFrame df
,将缺失值用紧随其前的非缺失值填充。
ffill()
方法在处理缺失值时非常有用,通过向前填充缺失值来保持数据的连续性。它在数据清洗、数据分析和时间序列处理等场景中非常重要。通过调整参数,你可以灵活控制填充的行为和范围。
更新时间:2024-08-09 09:22:59 标签:pandas python 缺失值 ffill