Practice makes perfect
文献集锦
如何理论创新?
管理学理论集锦
Python实际应用
聚类标准误与固定效应
巫师3:狂猎
Stata应用技巧
Python知识与技巧
双重差分法(DID)
创新文献阅读与摘要
计量经济学
Python绘图相关
如何使用fillna处理缺失值
type
status
date
slug
summary
tags
category
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 隐藏了(它们不再是列,而是分组标签)。限定列进行填充
输出:
- 适用场景
- 金融数据清洗(如填充上市公司坐标)
- 时间序列数据(按组填充缺失值)
Prev
结合 groupby 和 .transform()
Next
如何读取HDF5文件?
Loading...