Practice makes perfect
文献集锦
如何理论创新?
管理学理论集锦
Python实际应用
聚类标准误与固定效应
巫师3:狂猎
Stata应用技巧
Python知识与技巧
回归系数的经济意义
双重差分法(DID)
创新文献阅读与摘要
计量经济学
Python绘图相关
遗漏变量偏误检验
如何使用fillna处理缺失值
type
Post
status
Published
date
Apr 22, 2025
slug
summary
tags
category
Python知识与技巧
icon
password
网址
作者
标签
文章链接
发布时间
来源
fillna() 是 pandas 库中用于处理缺失数据(NaN 或 None)的核心方法,在数据清洗和预处理阶段起着至关重要的作用,下面是它的基础语法和参数说明。基本语法格式
参数详解
1. value (填充值)
- 用于替换缺失值的标量值、字典、Series 或 DataFrame
- 可以是单一值(如 0),或指定各列不同填充值的字典
示例:
2. method (填充方法)
- 指定填充方法,不能与
value同时使用
- 可选值:
'ffill'或'pad': 前向填充,用前面的有效值填充后面的NaN'bfill'或'backfill': 后向填充,用后面的有效值填充前面的NaN
示例:
3. axis (填充轴)
- 控制填充方向
0或'index': 按列填充(默认)
1或'columns': 按行填充
示例:
4. inplace (是否原地修改)
False(默认): 返回填充后的新对象
True: 直接修改原对象,不返回新对象
示例:
5. limit (最大填充数量)
- 指定连续NaN值的最大填充数量
- 对于method填充方式特别有用
示例:
6. downcast (向下转换数据类型)
- 尝试向下转换填充后的数据类型以节省内存
- 可选值:
'infer'或字典指定
返回值
- 默认返回填充后的新DataFrame/Series(除非设置
inplace=True)
- 保持原对象的索引和列名不变
基本用法
1. 用固定值填充所有缺失值
输出:
2. 不同列用不同值填充
输出:
高级用法
3. 前向填充(ffill)和后向填充(bfill)
4. 限制填充数量
5. 使用统计值填充
6. 对时间序列数据的特殊填充
实际应用技巧
7. 只填充特定条件下的缺失值
8. 分组后填充
9. 原地修改(inplace参数)
注意事项
- 使用fillna前最好先用
df.isnull().sum()检查缺失值情况
- 对于时间序列数据,interpolate()方法通常比简单填充更合适
- 填充大量数据时,考虑使用更高效的方法如
df.replace()或df.update()
- 填充后建议检查填充效果,确保没有引入偏差
groupby+fillna的用法
1. 生成模拟公司数据
输出:
3. 正确方法演示
全部列进行填充:set_index + groupby(level) + reset_index
输出:
如果直接使用
filled_data = data.groupby(["Symbol", "ShortName"]).fillna(method="ffill").reset_index() ,则会输出:此时,
groupby(['Symbol', 'ShortName']) 会让 'Symbol' 和 'ShortName' 成为临时分组键(类似索引),而reset_index() 无法恢复原始列,因为 'Symbol' 和 'ShortName' 已经被 groupby 隐藏了(它们不再是列,而是分组标签)。限定列进行填充
输出:
- 适用场景
- 金融数据清洗(如填充上市公司坐标)
- 时间序列数据(按组填充缺失值)
上一篇
结合 groupby 和 .transform()
下一篇
如何读取HDF5文件?
Loading...