前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pandas中的缺失值处理

pandas中的缺失值处理

作者头像
生信修炼手册
发布2020-07-14 16:02:10
2.5K0
发布2020-07-14 16:02:10
举报
文章被收录于专栏:生信修炼手册生信修炼手册

在真实的数据中,往往会存在缺失的数据。pandas在设计之初,就考虑了这种缺失值的情况,默认情况下,大部分的计算函数都会自动忽略数据集中的缺失值,同时对于缺失值也提供了一些简单的填充和删除函数,常见的几种缺失值操作技巧如下

1. 默认的缺失值

当需要人为指定一个缺失值时,默认用None和np.nan来表示,用法如下

>>> import numpy as np
>>> import pandas as pd
# None被自动识别为NaN
>>> pd.Series([1, 2, None])
0 1.0
1 2.0
2 NaN
# np.nan被自动识别为NaN
>>> pd.Series([1, 2, np.nan])
0 1.0
1 2.0
2 NaN
dtype: float64

2. 缺失值的判断

为了针对缺失值进行操作,常常需要先判断是否有缺失值的存在,通过isna和notna两个函数可以快速判断,用法如下

>>> a = pd.Series([1, 2, None, 3])
>>> a
0    1.0
1    2.0
2    NaN
3    3.0
dtype: float64
# is.na 方法,如果为NaN, 返回True, 否则返回False
>>> a.isna()
0    False
1    False
2     True
3    False
dtype: bool

# notnat方法,如果为NaN, 返回False, 否则返回True
>>> a.notna()
0     True
1     True
2    False
3     True
dtype: bool

3. 缺失值的填充

通过fillna方法可以快速的填充缺失值,有两种填充方式, 用法如下

>>> a = pd.Series([1, 2, None, 3])
>>> a
0 1.0
1 2.0
2 NaN
3 3.0
dtype: float64

# value参数,表示用一个指定的值来替换缺失值
>>> a.fillna(value=1)
0 1.0
1 2.0
2 1.0
3 3.0
dtype: float64
# method参数,指定一种方法来填充缺失值
# pad方法,表示用NaN前面一个值来进行填充
>>> a.fillna(method = 'pad')
0 1.0
1 2.0
2 2.0
3 3.0
dtype: float64

# bfill法,表示用NaN后面一个值来进行填充
>>> a.fillna(method = 'bfill')
0 1.0
1 2.0
2 3.0
3 3.0
dtype: float64

fillna也可以对DataFrame进行操作,示意如下

>>> df = pd.DataFrame({'A':[1, 2, None], 'B':[1, np.nan, 3]})
>>> df
     A B
0 1.0 1.0
1 2.0 NaN
2 NaN 3.0
# 对每一列的NaN值,依次用对应的均值来填充
>>> df.fillna(df.mean())
     A B
0 1.0 1.0
1 2.0 2.0
2 1.5 3.0

4. 缺失值的删除

通过dropna方法来快速删除NaN值,用法如下

>>> a.dropna()
0 1.0
1 2.0
dtype: float64

# dropna操作数据框时,可以设置axis参数的值
# 默认为0,表示去除包含 了NaN的行
# axis=1,表示去除包含了NaN的列
>>> df = pd.DataFrame({'A':[1, 2, None], 'B':[1, np.nan, 3]})
>>> df
     A B
0 1.0 1.0
1 2.0 NaN
2 NaN 3.0
>>> df.dropna()
     A B
0 1.0 1.0
>>> df.dropna(axis=0)
     A B
0 1.0 1.0
>>> df.dropna(axis=1)
Empty DataFrame
Columns: []
Index: [0, 1, 2]

pandas中的大部分运算函数在处理时,都会自动忽略缺失值,这种设计大大提高了我们的编码效率。同时,通过简单上述几种简单的缺失值函数,可以方便地对缺失值进行相关操作。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信修炼手册 微信公众号,前往查看

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

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

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