前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[L5]快速掌握Series~过滤Series的值和缺失值的处理

[L5]快速掌握Series~过滤Series的值和缺失值的处理

作者头像
触摸壹缕阳光
发布2020-05-13 14:22:01
9.8K0
发布2020-05-13 14:22:01
举报

全文字数:2057字

阅读时间:9分钟

前言

由于在公众号上文本字数太长可能会影响阅读体验,因此过于长的文章,我会使用"[L1]"来进行分段。这系列将介绍Pandas模块中的Series,本文主要介绍:

  • 过滤Series的值
    • 单条件筛选
    • 多条件筛选
  • Series缺失值的处理
    • 判断value值是否为缺失值
    • 删除缺失值
    • 使用fillna()填充缺失值

快速掌握Series系列:

[L1]快速掌握Series~创建Series

[L2]快速掌握Series~Series的属性

[L3]快速掌握Series~通过Series索引获取指定值

[L4]快速掌握Series~Series的切片和增删改查

a

过滤Series的值

我们可以通过布尔选择器,也就是条件筛选来过滤一些特定的值,从而仅仅获取满足条件的值。过滤Series的值的方式分为两种:

  1. 单条件筛选;
  2. 多条件筛选;
代码语言:javascript
复制
import pandas as pd

s = pd.Series([1,2,3,4],index = ["a","b","c","d"])
  • 单条件筛选
代码语言:javascript
复制
print("-"*5 + "布尔选择器" + "-"*5)
print(s < 3)
print("-"*5 + "单条件查询" + "-"*5)
print(s[s<3])

result:
-----布尔选择器-----
a     True
b     True
c    False
d    False
dtype: bool
-----单条件查询-----
a    1
b    2
dtype: int64
  • 多条件查询
代码语言:javascript
复制
print("-"*5 + "多条件查询" + "-"*5)
print(s[(s > 2) & (s < 4) ])

result:
-----多条件查询-----
c    3
dtype: int64

注意:

  1. 多条件查询中的and以及or必须使用对应的符号来表示,and用&,or用|来表示;
  2. 使用多条件的时候,为了避免出错,在每个条件上最好加上括号;

b

Series缺失值的处理

  1. 判断Value值是否为缺失值,isnull()判断series中的缺失值以及s.notnull()判断series中的非缺失值;
  2. 删除缺失值
    1. 使用dropna();
    2. 使用isnull()以及notnull();
  3. 填充缺失值
    1. 使用fillna;
      1. 使用指定值填充缺失值;
      2. 使用插值填充缺失值;
        1. 向前填充ffill;
        2. 向后填充bfill;
代码语言:javascript
复制
# 创建一个带缺失值的Series
import pandas as pd

s = pd.Series([1,2,None,4])
print(s)

result:
0    1.0
1    2.0
2    NaN
3    4.0
dtype: float64
  • 判断value值是否为缺失值

有两种方式判断:

  1. s.isnull()判断s中的缺失值;
  2. s.notnull()判断s中的非缺失值;
代码语言:javascript
复制
# 缺失值的地方为True
print("-"*5 + "使用s.isnull判断" + "-"*5)
print(s.isnull())
#缺失值的地方为False
print("-"*5 + "使用s.notnull判断" + "-"*5)
print(s.notnull())

result:
-----使用s.isnull判断-----
0    False
1    False
2     True
3    False
dtype: bool
-----使用s.notnull判断-----
0     True
1     True
2    False
3     True
dtype: bool
  • 删除缺失值
  1. 使用dropna()方法删除缺失值,返回新的Series对象;
  2. 使用series.isnull()以及series.notnull()方法,使用布尔筛选进行过滤出非缺失值;
代码语言:javascript
复制
print("-"*5 + "使用dropna()删除所有的缺失值" + "-"*5)
print(s.dropna())
print("-"*5 + "使用isnull()删除所有的缺失值" + "-"*5)
print(s[~s.isnull()])
print("-"*5 + "使用notnull()删除所有的缺失值" + "-"*5)
print(s[s.notnull()])

result:
-----使用dropna()删除所有的缺失值-----
0    1.0
1    2.0
3    4.0
dtype: float64
-----使用isnull()删除所有的缺失值-----
0    1.0
1    2.0
3    4.0
dtype: float64
-----使用notnull()删除所有的缺失值-----
0    1.0
1    2.0
3    4.0
dtype: float64
  • 使用fillna()填充缺失值
  1. 使用指定值填充缺失值;
  2. 使用插值填充缺失值;
代码语言:javascript
复制
print("-"*5 + "原来的Series" + "-"*5)
print(s)
print("-"*5 + "指定填充值0" + "-"*5)
print(s.fillna(value = 0))

print("-"*5 + "向前填充ffill" + "-"*5)
print(s.fillna(method = "ffill"))
print("-"*5 + "向后填充bfill" + "-"*5)
print(s.fillna(method = "bfill"))

result:
-----原来的Series-----
0    1.0
1    2.0
2    NaN
3    4.0
dtype: float64
-----指定填充值0-----
0    1.0
1    2.0
2    0.0
3    4.0
dtype: float64
-----向前填充ffill-----
0    1.0
1    2.0
2    2.0
3    4.0
dtype: float64
-----向后填充bfill-----
0    1.0
1    2.0
2    4.0
3    4.0
dtype: float64

注意:

默认情况下,填充缺失值都会创建一个新的Series对象,如果希望直接在原来的Series上进行修改的话,可以使用下面两种方式:

  1. 直接进行赋值;
  2. 给fillna()函数添加一个新的参数,inplace = True参数;
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI机器学习与深度学习算法 微信公众号,前往查看

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

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

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