内容目录

  • 1. 字典式 get 访问
  • 2. 属性访问
  • 3. 切片操作
  • 4. 通过数字筛选行和列
  • 5. 通过名称筛选行和列
  • 6. 布尔索引
  • 7. isin 筛选
  • 8. 通过Callable筛选

数据准备

# 导入相关库
import numpy as np
import pandas as pd index = pd.Index(data=["Tom", "Bob", "Mary", "James", "Andy", "Alice"], name="name")
data = {
"age": [18, 30, np.nan, 40, np.nan, 30],
"city": ["Bei Jing ", "Shang Hai ", "Guang Zhou", "Shen Zhen", np.nan, " "],
"sex": [None, "male", "female", "male", np.nan, "unknown"],
"birth": ["2000-02-10", "1988-10-17", None, "1978-08-08", np.nan, "1988-10-17"]
}
user_info = pd.DataFrame(data=data, index=index)
# 将出生日期转为时间戳
user_info["birth"] = pd.to_datetime(user_info.birth)
user_info
Out[54]:
age city sex birth
name
Tom 18.0 Bei Jing None 2000-02-10
Bob 30.0 Shang Hai male 1988-10-17
Mary NaN Guang Zhou female NaT
James 40.0 Shen Zhen male 1978-08-08
Andy NaN NaN NaN NaT
Alice 30.0 unknown 1988-10-17

1. 字典式 get 访问

#get方法
user_info.get('age')
Out[55]:
name
Tom 18.0
Bob 30.0
Mary NaN
James 40.0
Andy NaN
Alice 30.0
Name: age, dtype: float64
user_info.get('age').get('Tom')
Out[56]: 18.0

2. 属性访问

user_info.age
Out[57]:
name
Tom 18.0
Bob 30.0
Mary NaN
James 40.0
Andy NaN
Alice 30.0
Name: age, dtype: float64
user_info.age.Tom
Out[58]: 18.0

 3.切片

  切片对于 Series 来说,通过切片可以完成选择指定的行,对于 DataFrame 来说,通过切片可以完成选择指定的行或者列,来看看怎么玩吧

# 筛选出第二行第一列的数据
user_info.iloc[1, 0]
"""筛选行"""
# 获取年龄的前两行
user_info.age[:2]
#获取所有信息的前两行
user_info[:2]
# 所有信息每两行选择一次数据
user_info[::2]
# 对所有信息进行反转
user_info[::-1]
"""筛选列"""
user_info['age']
user_info[["city", "age"]]

 4. 通过数字筛选行和列

  通过切片操作可以完成筛选行或者列,如何同时筛选出行和列呢?
  通过 iloc 即可实现, iloc 支持传入行和列的筛选器,并用 , 隔开。无论是行或者里筛选器,都可以为以下几种情况:

  • 一个整数,如 2
  • 一个整数列表,如 [2, 1, 4]
  • 一个整数切片对象,如 2:4
  • 一个布尔数组
  • 一个callable

先来看下前3种的用法。

# 筛选出第一行数据
user_info.iloc[0]
# 筛选出第二行第一列的数据
user_info.iloc[1, 0]
# 筛选出第二行、第一行、第三行对应的第一列的数据
user_info.iloc[[1, 0, 2], 0]
user_info.iloc[0:2,0]
# 筛选出第一行至第三行以及第一列至第二列的数据
user_info.iloc[0:3, 0:2]
# 筛选出第一列至第二列的数据
user_info.iloc[:, 0:2]

  5. 通过名称筛选行和列

  虽然通过 iloc 可以实现同时筛选出行和列,但是它接收的是输入,非常不直观, 通过 loc 可实现传入名称来筛选数据,loc 支持传入行和列的筛选器,并用 , 隔开。无论是行或者里筛选器,都可以为以下

  几种情况:

  • 一个索引的名称,如:"Tom"
  • 一个索引的列表,如:["Bob", "Tom"]
  • 一个标签范围,如:"Tom": "Mary"
  • 一个布尔数组
  • 一个callable

先来看下前3种的用法。

# 筛选出名称为 Tom 的数据一行数据
user_info.loc["Tom"]
# 筛选出名称为 Tom 的年龄
user_info.loc["Tom", "age"]
# 筛选出名称在 ["Bob", "Tom"] 中的两行数据
user_info.loc[["Bob", "Tom"]]
# 筛选出索引名称在 Tom 到 Mary 之间的数据
user_info.loc["Tom": "Mary"]
# 筛选出年龄这一列数据
user_info.loc[:, ["age"]]
# 筛选出所有 age 到 birth 之间的这几列数据
user_info.loc[:, "age": "birth"]
#注:通过名称来筛选时,传入的切片是左右都包含的。

  6. 布尔索引

  通过布尔操作我们一样可以进行筛选操作,布尔操作时,& 对应 and,| 对应 or,~ 对应 not。当有多个布尔表达式时,需要通过小括号来进行分组。

user_info[user_info.age > 20]
# 筛选出年龄在20岁以上,并且性别为男性的数据
user_info[(user_info.age > 20) & (user_info.sex == "male")]
# 筛选出性别不为 unknown 的数据
user_info[~(user_info.sex == "unknown")]
user_info.loc[user_info.age > 20, ["age"]]

  7.isin 筛选

  Series 包含了 isin 方法,它能够返回一个布尔向量,用于筛选数据。

# 筛选出性别属于 male 和 female的数据
user_info[user_info.sex.isin(["male", "female"])]
#对于索引来说,一样可以使用 isin 方法来筛选。
user_info[user_info.index.isin(["Bob"])]

  8. 通过Callable筛选

  loc、iloc、切片操作都支持接收一个 callable 函数,callable必须是带有一个参数(调用Series,DataFrame)的函数,并且返回用于索引的有效输出。

user_info[lambda df: df["age"] > 20]
user_info.loc[lambda df: df.age > 20, lambda df: ["age"]]
user_info.iloc[lambda df: [0,5], lambda df: [0]]
user_info.iloc[0:5, lambda df: [0]]

  

  

Pandas系列(八)-筛选工具介绍的更多相关文章

  1. 红豆带你从零学C#系列—Visual Studio工具介绍、下载和安装

    一.Visual Studio的下载 Visual Studio(简称VS)是微软的一套完整的开发工具集,集成了能够开发并运行如C#.C++.VB.F#等程序的开发环境,目前最新的版本是Visual ...

  2. 系列二VS项目软件配置工具介绍

    原文:系列二VS项目软件配置工具介绍 Svn和VisualSvn介绍 在使用TortoiseSvn(SVN客户端)+ AnkhSvn(VS2008插件) +VisualSvn Server(版本控制服 ...

  3. 自定义View系列教程01--常用工具介绍

    站在源码的肩膀上全解Scroller工作机制 Android多分辨率适配框架(1)- 核心基础 Android多分辨率适配框架(2)- 原理剖析 Android多分辨率适配框架(3)- 使用指南 自定 ...

  4. SQL Server 2008空间数据应用系列八:基于Bing Maps(Silverlight)的空间数据存储

    原文:SQL Server 2008空间数据应用系列八:基于Bing Maps(Silverlight)的空间数据存储 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft S ...

  5. Red Gate系列 - SQL各种工具

    Red Gate系列 - SQL各种工具 Red Gate系列文章: Red Gate系列之一 SQL Compare 10.4.8.87 Edition 数据库比较工具 完全破解+使用教程 Red ...

  6. C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理

    C#编译器优化那点事   使用C#编写程序,给最终用户的程序,是需要使用release配置的,而release配置和debug配置,有一个关键区别,就是release的编译器优化默认是启用的.优化代码 ...

  7. Bing Maps进阶系列八:在Bing Maps中集成OpenStreetMap地图

    Bing Maps进阶系列八:在Bing Maps中集成OpenStreetMap地图 OSM(OpenStreetMap-开放街道地图)服务就是一种发布自己地图数据图片为服务的一种实现类型,开放街道 ...

  8. C#进阶系列——WebApi 接口测试工具:WebApiTestClient

    前言:这两天在整WebApi的服务,由于调用方是Android客户端,Android开发人员也不懂C#语法,API里面的接口也不能直接给他们看,没办法,只有整个详细一点的文档呗.由于接口个数有点多,每 ...

  9. 用户管理 之 Linux 用户管理工具介绍

    Linux是一个多用户的操作系统,她有完美的用户管理工具,这些工具包括用户的查询.添加.修改,以及用户之间相互切换的工具等:通过这些工具,我们能安全.轻松的完成用户管理: 在这里我们要引入用户控制工具 ...

随机推荐

  1. C# -- 使用委托 delegate 执行异步操作

    C# -- 使用委托 delegate 执行异步操作 委托是一种安全地封装方法的类型,它与 C 和 C++ 中的函数指针类似. 与 C 中的函数指针不同,委托是面向对象的.类型安全的和保险的. 委托的 ...

  2. Boosting Static Representation Robustness for Binary Clone Search against Code Obfuscation and Compiler Optimization

    用于理解恶意软件的内部工作原理,并发现系统中的漏洞,逆向工程是一种耗费人工的却很重要的技术.汇编克隆搜索引擎是通过识别那些重复的或者已知的部件来帮助逆向工程师的工作,要想设计健壮的克隆搜索引擎是一项挑 ...

  3. 5.3Python数据处理篇之Sympy系列(三)---简化操作

    目录 5.3简化操作 目录 前言 (一)有理数与多项式的简化 1.最简化-simplify() 2.展开-expand() 3.提公因式-factor() 4.合并同类项-ceiling() 5.简化 ...

  4. SQLServer之删除触发器

    删除触发器 注意事项 可以通过删除DML触发器或删除触发器表来删除DML触发器. 删除表时,将同时删除与表关联的所有触发器. 删除触发器时,会从 sys.objects.sys.triggers 和 ...

  5. 自定义JDBC链接池

    上篇简单介绍了jdbc链接数据库: 本篇就说一下自定义连接池以及增删改查的测试: 自定义连接池 自定义链接池的原因 JDBC连接中用到Connection   在每次对数据进行增删查改 都要 开启  ...

  6. Loj 2320.「清华集训 2017」生成树计数

    Loj 2320.「清华集训 2017」生成树计数 题目描述 在一个 \(s\) 个点的图中,存在 \(s-n\) 条边,使图中形成了 \(n\) 个连通块,第 \(i\) 个连通块中有 \(a_i\ ...

  7. PHP奇淫技巧

    https://www.jb51.net/list/list_67_1.htm PHP技巧:https://www.jb51.net/list/list_67_13.htm mysql三范式 1NF: ...

  8. AT24 I2C EEPROM解析及测试

    关键词:AT24.I2C.nvmem.EEPROM. 1. AT24C介绍 AT24C是一款采用I2C通信的EEPROM,相关驱动涉及到I2C和nvmem. I2C是读写数据的通道,nvmem将AT2 ...

  9. 基于 HTML5 结合互联网+的电力接线图

    前言 “互联网+”思维让数据的搜集和获取更加便捷,并且随着大数据的深度开发和应用,数据分析预测对于提升用户体验有非常重要的价值,同时也为不同行业.不同领域的合作提供了更广阔的空间.传统的发电企业是一个 ...

  10. python和anacoda安装第三方库的位置

    查看已安装库及版本号,命令行pip list 安装第三方库位置: