Pandas 填充缺失值
最后修改时间:2025年3月1日
Pandas 是一个强大的 Python 数据操作库。在处理 DataFrame 时,处理缺失值是一项常见的任务。本教程将通过实际示例介绍如何使用 Pandas 填充缺失值。
缺失值可能会干扰数据分析。Pandas 提供了 fillna
等方法来处理它们。这些方法非常灵活,允许使用常量、前向/后向填充或自定义逻辑来填充缺失值。
使用常量值填充
本示例演示如何使用常量填充缺失值。
fillna_constant.py
import pandas as pd import numpy as np data = { 'A': [1, 2, np.nan, 4], 'B': [np.nan, 2, 3, 4], 'C': [1, 2, 3, np.nan] } df = pd.DataFrame(data) df_filled = df.fillna(0) print(df_filled)
fillna(0)
方法将所有缺失值替换为 0。这对于初始化缺失数据非常有用。
前向填充缺失值
本示例演示了前向填充缺失值。
fillna_ffill.py
import pandas as pd import numpy as np data = { 'A': [1, np.nan, np.nan, 4], 'B': [np.nan, 2, 3, np.nan] } df = pd.DataFrame(data) df_filled = df.fillna(method='ffill') print(df_filled)
method='ffill'
参数使用最后一个有效观测值填充缺失值。这对于时间序列数据非常有用。
后向填充缺失值
本示例演示了如何后向填充缺失值。
fillna_bfill.py
import pandas as pd import numpy as np data = { 'A': [1, np.nan, np.nan, 4], 'B': [np.nan, 2, 3, np.nan] } df = pd.DataFrame(data) df_filled = df.fillna(method='bfill') print(df_filled)
method='bfill'
参数使用下一个有效观测值填充缺失值。这对于填充数据中的空白非常有用。
使用列均值填充
本示例演示了使用列均值填充缺失值。
fillna_mean.py
import pandas as pd import numpy as np data = { 'A': [1, 2, np.nan, 4], 'B': [np.nan, 2, 3, 4] } df = pd.DataFrame(data) df_filled = df.fillna(df.mean()) print(df_filled)
df.mean
方法计算每列的均值。缺失值将被这些均值替换,从而保持数据分布。
使用自定义逻辑填充
本示例演示了如何使用自定义逻辑填充缺失值。
fillna_custom.py
import pandas as pd import numpy as np data = { 'A': [1, 2, np.nan, 4], 'B': [np.nan, 2, 3, 4] } df = pd.DataFrame(data) df_filled = df.fillna({'A': 0, 'B': 1}) print(df_filled)
fillna({'A': 0, 'B': 1})
方法将列 'A' 中的缺失值填充为 0,将列 'B' 中的缺失值填充为 1。这允许进行特定于列的逻辑。
使用插值填充
本示例演示了使用插值填充缺失值。
fillna_interpolate.py
import pandas as pd import numpy as np data = { 'A': [1, np.nan, np.nan, 4], 'B': [np.nan, 2, 3, np.nan] } df = pd.DataFrame(data) df_filled = df.interpolate() print(df_filled)
interpolate
方法使用线性插值填充缺失值。这对于连续数据非常有用。
使用限制填充
本示例演示了如何限制填充的缺失值数量。
fillna_limit.py
import pandas as pd import numpy as np data = { 'A': [1, np.nan, np.nan, 4], 'B': [np.nan, 2, 3, np.nan] } df = pd.DataFrame(data) df_filled = df.fillna(method='ffill', limit=1) print(df_filled)
limit=1
参数将填充限制为每个列只有一个缺失值。这可以防止稀疏数据中的过度填充。
填充缺失值的最佳实践
- 理解数据:在填充之前分析缺失值的模式。
- 使用适当的方法:根据数据上下文选择均值、前向填充或插值等方法。
- 限制填充:使用
limit
避免过度填充。 - 验证结果:检查填充后的数据是否一致。
来源
在本文中,我们探讨了如何在 Pandas DataFrame 中填充缺失值。
作者
所有 Pandas 教程列表。