看过来
《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,可选,默认为 NoneDataFrame,0 或 'index' 表示按行填充,1 或 'columns' 表示按列填充。对于 Series,此参数未使用,默认为 0。inplace:
bool,可选,默认为 FalseTrue 表示修改原始数据,False 表示返回填充后的新对象。limit:
int,可选,默认为 Nonemethod 参数,表示连续的 NaN 值的最大填充数量。如果未指定 method,则表示整个轴上 NaN 值的最大填充数量。必须大于 0(如果不是 None)。limit_area:
str 或 None,可选,默认为 Nonelimit,控制填充的区域:None: 无限制。'inside': 仅填充被有效值包围的 NaN(内插)。'outside': 仅填充有效值之外的 NaN(外推)。downcast:
dict 或 str,可选,默认为 Nonedict,则为每种数据类型指定下转换目标。例如 {‘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