写点什么

Pandas 教程 -3-DataFrame 数据筛选(上)

用户头像
皮大大
关注
发布于: 2 小时前
Pandas教程-3-DataFrame数据筛选(上)

Pandas 系列_DataFrame 数据筛选(上)

本文介绍的是如何在 pandas 进行数据的筛选和查看。因为 pandas 中有各种花样来进行数据筛选,本文先介绍比较基础的一部分。



扩展阅读

关于 pandas 的介绍,以及在 pandas 中如何创建 Series 和 DataFrame 类型的数据,请阅读:


1、Series类型数据创建


2、10种方式创建DataFrame类型数据


3、一切从爆炸函数开始

模拟数据

本文中各种例子基于一份模拟数据展开,在创建数据的时候引入了部分缺失值,通过 numpy 库来生成:


import pandas as pdimport numpy as np
df = pd.DataFrame({ "name":['小明','小王','张菲','关宇','孙小小','王建国','刘蓓'], "sex":['男','女','女','男','女','男','女'], "age":[20,23,18,21,25,21,24], "score":[np.nan,600,550,np.nan,610,580,634], # 缺失两条数据 "address":["广东省深圳市南山区", np.nan, # 数据缺失 "湖南省长沙市雨花区", "北京市东城区", "广东省广州市白云区", "湖北省武汉市江夏区", "广东省深圳市龙华区"]})
df
复制代码



我们查看下各个字段的数据类型:3 个字符类型,一个 int64,一个 float64 类型


思维导图

下面开始介绍各种筛选数据的方法:


查看头尾数据

查看头尾数据,使用的是 head 和 tail 方法:

head

该方法默认是前 5 行



可以自己指定看多少行数据:


tail

tail 使用方法是类似的:


  • 默认尾部 5 行

  • 指定查看行数


随机筛选

使用的是 sample 方法,默认是查看一行数据,也可以指定查看多少行:


数值型数据筛选

单个条件

1、数值型数据的筛选一般是根据大小比较来进行的:



多个条件

2、当我们存在多个比较条件的时候,需要注意:


  • 不能用 and,使用竖线|

  • 每个条件要使用小括号



下面是正确的写法:


使用数值函数

常用的数值比较函数如下:


df.eq()    # 等于相等 ==df.ne()    # 不等于 !=df.le()    # 小于等于 >=df.lt()    # 小于 <df.ge()    # 大于等于 >=df.gt()    # 大于 >
复制代码


1、使用单个数值函数筛选




2、使用多个数值函数筛选;


字符型数据筛选

字符类型数据的筛选主要是通过 python 和 pandas 中相关函数;


  • 包含:str.contains

  • 开始:str.startswith

  • 结束:str.endswith


下图中的 3 个例子讲解了上面 3 个函数的使用方法:



上面的例子中使用的字段本身都是没有空值的,如果字段中带有空值,该如何处理?比如我们想选出 address 带有“深圳”的同学:




解决方法 1:带上参数



解决方法 2:通过布尔值的比较判断


指定数据值筛选

通过指定某个字段的具体某个值来筛选数据:


数值型和字符型联用

数值型的大小比较条件和字符相关条件的联合使用:


  • 且:&

  • 或:|


索引取数

直接通过某个索引值来取数,这种情况很少用:


切片取数

pandas 中切片取数和 Python 中是相同的:


  • 左边索引从 0 开始计数,右边索引从-1 开始计数

  • 切片规则:start:stop:step,分别表示起始位置 start,结束位置 stop,步长 step(可正可负)


不包含结束索引位置的元素:含头不含尾,请记住索引切片的重要规则!!!



使用切片的单个数值取数:



使用切片取数的多种案例:




下面看看本文案例中的切片取数:




步长不为 1 和索引为负数的情况:


缺失值筛选

本文中使用的案例缺失值情况为:


查看缺失值

df.isnull()
复制代码


查看字段缺失值

df25 = df.isnull().any()  # 列中是否存在空值df25
复制代码


锁定缺失值存在的行

df26 = df[df.isnull().values==True]df26
复制代码


列属性取数

指定属性名

第一种是我们直接指定列属性的名称,在这种情况下取出来的是 Series 类型数据



第二种情况下取出来的是 DataFram e 类型数据:



指定字段属性的类型

本文案例的数据字段类型为:



1、取出包含 object 类型的数据:



如果是想取出包含多种类型的数据:



2、取出不包含 object 类型的数据:


总结

pandas 中取数的方式真的是五花八门,有很多方式能够取到我们想要的数据。本文中介绍的多种算是比较基本,比如头尾部数据、基于条件判断的筛选、切片筛选等,后续将会介绍更多 pandas 中取数技巧,敬请期待!

发布于: 2 小时前阅读数: 2
用户头像

皮大大

关注

志之所趋,无远弗届,穷山距海,不能限也。 2019.01.15 加入

还未添加个人简介

评论

发布
暂无评论
Pandas教程-3-DataFrame数据筛选(上)