前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >谜一样的空值? pandas.fillna 妙招拨云见日

谜一样的空值? pandas.fillna 妙招拨云见日

作者头像
用户4945346
发布2024-05-27 20:22:50
2100
发布2024-05-27 20:22:50
举报
文章被收录于专栏:pythonista的日常pythonista的日常

这是 pandas 快速上手系列的第 6 篇文章,本篇详细介绍了pandas.fillna() 填充缺失值(NaN)的各种妙招,包括用常数值填充缺失值、用前一个值或后一个值填充、用列的均值、不同列使用不同值填充等方法,希望对你有帮助。

fillna() 是 Pandas 中常用的处理缺失值 (NaN) 的函数。它可以用指定的值或插值方法来填充 DataFrame 或 Series 中的缺失值。

先初始化一个数据集 dataframe

代码语言:javascript
复制
In [43]: import pandas as pd
    ...:
    ...: df = pd.DataFrame({
    ...:     'A': [1, 2, None, 4],
    ...:     'B': [None, 2, 3, None]
    ...: })
    
In [48]: df
Out[48]:
     A    B
0  1.0  NaN
1  2.0  2.0
2  NaN  3.0
3  4.0  NaN

基本用法

用一个常数值填充缺失值, 用一个固定值替换 NaN

代码语言:javascript
复制
df_filled = df.fillna(0)
print(df_filled)

     A    B
0  1.0  0.0
1  2.0  2.0
2  0.0  3.0
3  4.0  0.0

用前一个值填充缺失值,则第一行的 NaN 会被跳过填充,设置 method='ffill'

代码语言:javascript
复制
In [44]: # 用前一个值填充缺失值
    ...: df_filled = df.fillna(method='ffill')
    ...: print(df_filled)
     A    B
0  1.0  NaN
1  2.0  2.0
2  2.0  3.0
3  4.0  3.0

用后一个值填充缺失值,则最后一行的 NaN 会被跳过,设置 method='bfill'

代码语言:javascript
复制
In [45]: # 用后一个值填充缺失值
    ...: df_filled = df.fillna(method='bfill')
    ...: print(df_filled)
     A    B
0  1.0  2.0
1  2.0  2.0
2  4.0  3.0
3  4.0  NaN

用列的均值填充缺失值

代码语言:javascript
复制
In [47]: df.fillna(df.mean())
Out[47]:
          A    B
0  1.000000  2.5
1  2.000000  2.0
2  2.333333  3.0
3  4.000000  2.5

不同列使用不同值填充,下面是 A 列空值用0填充,B 列的空值用 1 填充

代码语言:javascript
复制
In [49]: df.fillna({'A': 0, 'B': 1})
Out[49]:
     A    B
0  1.0  1.0
1  2.0  2.0
2  0.0  3.0
3  4.0  1.0

限制填充次数,每列最多填充 1 次

代码语言:javascript
复制
In [51]: df.fillna(method='ffill', limit=1)
Out[51]:
     A    B
0  1.0  NaN
1  2.0  2.0
2  2.0  3.0
3  4.0  3.0
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 pythonista的日常 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档