前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >五花八门的Pandas取数(上)

五花八门的Pandas取数(上)

原创
作者头像
皮大大
修改2021-05-20 10:46:58
1.1K0
修改2021-05-20 10:46:58
举报

公众号:尤而小屋 作者:Peter 编辑:Peter

Pandas系列_DataFrame数据筛选(上)

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

扩展阅读

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

1、Series类型数据创建

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

3、一切从爆炸函数开始

模拟数据

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

代码语言:txt
复制
import pandas as pd
import 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,使用竖线|
  • 每个条件要使用小括号

下面是正确的写法:

使用数值函数

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

代码语言:txt
复制
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和索引为负数的情况:

缺失值筛选

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

查看缺失值

代码语言:txt
复制
df.isnull()

查看字段缺失值

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

锁定缺失值存在的行

代码语言:txt
复制
df26 = df[df.isnull().values==True]
df26

列属性取数

指定属性名

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

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

指定字段属性的类型

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

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

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

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

image-20210519163325505
image-20210519163325505

总结

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Pandas系列_DataFrame数据筛选(上)
  • 扩展阅读
  • 模拟数据
  • 思维导图
  • 查看头尾数据
    • head
      • tail
      • 随机筛选
      • 数值型数据筛选
        • 单个条件
          • 多个条件
            • 使用数值函数
            • 字符型数据筛选
            • 指定数据值筛选
            • 数值型和字符型联用
            • 索引取数
            • 切片取数
            • 缺失值筛选
              • 查看缺失值
                • 查看字段缺失值
                  • 锁定缺失值存在的行
                  • 列属性取数
                    • 指定属性名
                      • 指定字段属性的类型
                      • 总结
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档