2025-11-14 学习记录--Python-Python 常用缺失值处理方法
·
Python 常用缺失值处理方法
Python常用缺失值处理方法,包括:
- 检查缺失值 ❀
- 删除缺失值 ❀
- 前向填充(forward fill) ❀
- 后向填充(backward fill) ❀
- 插值(线性、多项式、时间序列插值等) ❀
全部使用
pandas(数据分析最常用)。
一、 数据示例 ⭐️

import pandas as pd # 导入 pandas 库,用于数据处理与分析
import numpy as np # 导入 numpy 库,用于科学计算(如产生 NaN)
# 创建一个 DataFrame,其中包含两列:time 和 value
df = pd.DataFrame({
# 生成 7 天的日期序列,从 2024-01-01 开始
"time": pd.date_range("2024-01-01", periods=7),
# 创建一个数值列表,部分值为 np.nan(缺失值)
"value": [1, np.nan, 3, np.nan, np.nan, 6, 7]
})
# 打印输出整个 DataFrame
print(df)

二、 查看缺失值 ⭐️

# 查看每列缺失数量
print(df.isna().sum())
# 查看具体缺失行
print(df[df.isna().any(axis=1)])

三、 删除缺失值 ⭐️

# 删除含缺失值的行
df_drop_row = df.dropna()
# 删除含缺失值的列
df_drop_col = df.dropna(axis=1)

四、前向填充(Forward Fill) ⭐️

适用于时间序列。
缺失值会用 前面 的非缺失值填上。
df_ffill = df.fillna(method="ffill")

五、后向填充(Backward Fill) ⭐️

缺失值会用 后面 的非缺失值填上。
df_bfill = df.fillna(method="bfill")

六、线性插值(最常用) ⭐️
适用于连续的数值数据。
df_linear = df.interpolate(method="linear")
七、时间序列插值(Time Interpolation) ⭐️
如果你的索引是时间序列,效果更好:
df_time = df.set_index("time").interpolate(method="time")

八、多项式插值(Polynomial Interpolation) ⭐️

适合曲线型趋势:
# ⚠️ order=2 表示二次曲线,可根据需要调整。
df_poly = df.interpolate(method="polynomial", order=2)
九、分组插值(按某种类别分组) ⭐️
如果数据有多组情况:
df.groupby("group")["value"].apply(lambda x: x.interpolate())
十、总结对比 ⭐️
| 方法 | 说明 | 推荐使用场景 |
|---|---|---|
| dropna | 删除缺失 | 缺失值很少 |
| ffill/bfill | 用前/后值填充 | 时间序列、趋势稳定 |
| linear | 线性插值 | 大多数数值型数据 |
| time | 时间序列插值 | 按时间点变化的数据 |
| polynomial | 多项式插值 | 曲线趋势强 |
| groupby + interpolate | 分组数据 | 多个设备、多个类别 |

更多推荐
所有评论(0)