专栏首页AI机器学习与深度学习算法[L5]快速掌握Series~过滤Series的值和缺失值的处理

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

全文字数: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. 多条件筛选;
import pandas as pd

s = pd.Series([1,2,3,4],index = ["a","b","c","d"])
  • 单条件筛选
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
  • 多条件查询
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;
# 创建一个带缺失值的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中的非缺失值;
# 缺失值的地方为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()方法,使用布尔筛选进行过滤出非缺失值;
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. 使用插值填充缺失值;
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参数;

本文分享自微信公众号 - AI机器学习与深度学习算法(AI-KangChen),作者:Chenkc

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

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

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

    触摸壹缕阳光
  • [L4]快速掌握Series~Series的切片和增删改查

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

    触摸壹缕阳光
  • [L3]快速掌握Series~通过Series索引获取指定值

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

    触摸壹缕阳光
  • 一文搞定如何将Python2 代码转换成 Python3——一些踩坑和总结

    能自动转换脚本,解决大部分问题。但注意使用后,测试检查还是必要的。比如会改乱表达式顺序(不知最近修复了没有)

    马哥Python
  • 【Python 第2课】print

    今天早上醒来,发现咱们的同学人数一夜之间多了50,后来又陆陆续续来了很多,于是我坚持下去的信心又增加了不少。在这里感谢连客官微的宣传,表示今晚将用加班写代码来表...

    Crossin先生
  • Python入门2

    定义:列表是最常用的python数据类型,一个列表中可以存储多个不同类型的数据。 语法:[]可以是number、string、bool等

    潇洒坤
  • Ghost - How to change ghost's theme

    出来两个包啦。 + 这个时候重新启动你的 Ghost。 如果你是 forever 那么敲这个

    Mitchell
  • 大数据技术之_23_Python核心基础学习_01_计算机基础知识 + Python 入门 (9.5小时)

    课程名称:Python 基础视频教程 讲师:尚硅谷教育,李立超(lichao.li@foxmail.com) 面向的层次:From Zero to Hero(从...

    黑泽君
  • 7.python运算符

    什么是运算符?听着高大上,实际小学生都能把它玩的贼溜。比如:3 + 2 – 5 * 0 = 0

    猿说编程[Python和C]
  • python运算符

    什么是运算符?听着高大上,实际小学生都能把它玩的贼溜。比如:3 + 2 – 5 * 0 = 0

    猿说编程[Python和C]

扫码关注云+社区

领取腾讯云代金券