数据分析工具PANDAS技巧-如何过滤数据-阿里云开发者社区

开发者社区> python人工智能命理> 正文

数据分析工具PANDAS技巧-如何过滤数据

简介: 在本文中,我们将介绍在Python中过滤pandas数据帧的各种方法。 数据过滤是最常见的数据操作操作之一。 它类似于SQL中的WHERE子句,或者必须在MS Excel中使用过滤器根据某些条件选择特定行。
+关注继续查看

在本文中,我们将介绍在Python中过滤pandas数据帧的各种方法。 数据过滤是最常见的数据操作操作之一。 它类似于SQL中的WHERE子句,或者必须在MS Excel中使用过滤器根据某些条件选择特定行。 就速度而言,python执行过滤和聚合更佳。 它有很棒的库:pandas。 Pandas是在numpy包之上构建的,它是用C语言编写的,这是一种低级语言。 因此,使用pandas包进行数据操作是处理大型数据集的快速而智能的方法。

image

数据过滤的示例

它是预测建模或任何报告项目的数据准备的最初步骤之一。 它也被称为“子集数据”。 请参阅下面的一些数据过滤示例。

  • 选择在2019年1月1日之后开立帐户的所有活跃客户
  • 提取过去6个月内进行超过3笔交易的所有客户的详细信息
  • 获取在组织中工作超过3年且在过去两年中获得最高评级的员工的信息
  • 分析投诉数据并确定在过去1年内提交超过5个投诉的客户
  • 提取人均收入超过40K美元的地铁城市的详细信息

导入数据

我们将使用包含2013年从纽约出发的航班详情的数据集。该数据集有32735行和16列。下载 https://itbooks.pipipan.com/fs/18113597-393403297

表头如下:

['year', 'month', 'day', 'dep_time', 'dep_delay', 'arr_time', 'arr_delay', 'carrier', 'tailnum', 'flight', 'origin', 'dest', 'air_time', 'distance', 'hour', 'minute']

导入数据

import pandas as pd
df = pd.read_csv("nycflights.csv")

使用列值过滤

选择JetBlue Airways航班详细信息,其中包含2个字母的运营商代码B6 ,起源于JFK机场。

  • 方法1:DataFrame方式

>>> newdf = df[(df.origin == "JFK") & (df.carrier == "B6")]
>>> newdf.head()
    year  month  day  dep_time  dep_delay  arr_time  arr_delay carrier tailnum  flight origin dest  air_time  distance  hour  minute
7   2013      8   13      1920       85.0      2032       71.0      B6  N284JB    1407    JFK  IAD      48.0     228.0  19.0    20.0
10  2013      6   17       940        5.0      1050       -4.0      B6  N351JB      20    JFK  ROC      50.0     264.0   9.0    40.0
14  2013     10   21      1217       -4.0      1322       -6.0      B6  N192JB      34    JFK  BTV      46.0     266.0  12.0    17.0
23  2013      7    7      2310      105.0       201      127.0      B6  N506JB      97    JFK  DEN     223.0    1626.0  23.0    10.0
35  2013      4   12       840       20.0      1240       28.0      B6  N655JB     403    JFK  SJU     186.0    1598.0   8.0    40.0

这部分代码(df.origin == "JFK") & (df.carrier == "B6")返回True / False。 条件匹配时为真,条件不匹配时为假。 稍后它在df内传递并返回与True对应的所有行。 它返回4166行。

  • 方法2:查询函数

在pandas包中,有多种方法可以执行过滤。 上面的代码也可以像下面显示的代码一样编写。 此方法更优雅,更易读,每次指定列(变量)时都不需要提及数据框名称。


>>> newdf = df.query('origin == "JFK" & carrier == "B6"')
  • 方法3:loc函数

loc是位置术语的缩写。 所有这三种方法都返回相同的输出。 这只是一种不同的过滤行的方法。


>>> newdf = df.loc[(df.origin == "JFK") & (df.carrier == "B6")]

按行和列位置过滤Pandas数据帧

假设您想按位置选择特定的行(假设从第二行到第五行)。 我们可以使用df.iloc[ ]函数。
python中的索引从零开始。 df.iloc [0:5,]指第一至第五行(此处不包括终点第6行)。 df.iloc [0:5,]相当于df.iloc [:5,]

df.iloc[:5,] #First 5 rows
df.iloc[1:5,] #Second to Fifth row
df.iloc[5,0] #Sixth row and 1st column
df.iloc[1:5,0] #Second to Fifth row, first column
df.iloc[1:5,:5] #Second to Fifth row, first 5 columns
df.iloc[2:7,1:3] #Third to Seventh row, 2nd and 3rd column

loc根据索引标签考虑行。 而iloc根据索引中的位置考虑行,因此它只需要整数。 让我们创建一个示例数据进行说明

>>> x
  col1
9     1
8     3
7     5
6     7
0     9
1    11
2    13
3    15
4    17
5    19
>>> x.iloc[0:5]
  col1
9     1
8     3
7     5
6     7
0     9
>>> x.loc[0:5]
  col1
0     9
1    11
2    13
3    15
4    17
5    19

参考资料

按行位置和列名称过滤pandas数据帧


>>> df.loc[df.index[0:5],["origin","dest"]]
  origin dest
0    JFK  LAX
1    JFK  SJU
2    JFK  LAX
3    JFK  TPA
4    LGA  ORF
# -   讨论qq群630011153 144081101

列中选择多个值

>>> newdf = df[df.origin.isin(["JFK", "LGA"])]

不等于

>>> newdf = df.loc[(df.origin != "JFK") & (df.carrier == "B6")]
>>> pd.unique(newdf.origin)
array(['LGA', 'EWR'], dtype=object)

如何否定整个条件

>>> newdf = df[~((df.origin == "JFK") & (df.carrier == "B6"))]

选择非缺失数据

>>> newdf = df[~((df.origin == "JFK") & (df.carrier == "B6"))]

过滤Pandas Dataframe中的字符串

>>> df = pd.DataFrame({"var1": ["AA_2", "B_1", "C_2", "A_2"]})
>>> df
   var1
0  AA_2
1   B_1
2   C_2
3   A_2
>>> df[df['var1'].str[0] == 'A']
   var1
0  AA_2
3   A_2
>>> df[df['var1'].str.len()>3]
   var1
0  AA_2
>>> df[df['var1'].str.contains('A|B')]
   var1
0  AA_2
1   B_1
3   A_2

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
数据分析实战 基于EXCEL和SPSS系列工具的实践》一1.4 数据分析的流程
数据分析一般有数据采集、数据整理、制表、数据分析、数据呈现等多个阶段。当然,不是说每一个数据分析的过程都需要这些阶段,有的企业数据质量非常好,自然就不需要数据采集过程了;也有些数据分析并不怎么需要呈现过程。不过,为了方便读者理解,下面将介绍一个完整的流程。
1338 0
Python之pandas数据加载、存储
Python之pandas数据加载、存储 0. 输入与输出大致可分为三类: 0.1 读取文本文件和其他更好效的磁盘存储格式 2.2 使用数据库中的数据 0.3 利用Web API操作网络资源 1. 读取文本文件和其他更好效的磁盘存储格式 pandas提供了一些用于将表格型数据读取为DataFrame对象的函数。 1.1 pandas中的解析函数: re
1683 0
《Spark与Hadoop大数据分析》——1.1 大数据分析以及 Hadoop 和 Spark 在其中承担的角色
本节书摘来自华章计算机《Spark与Hadoop大数据分析》一书中的第1章,第1.1节,作者 [美]文卡特·安卡姆(Venkat Ankam),译 吴今朝,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1207 0
数据分析工具PANDAS技巧-如何过滤数据
在本文中,我们将介绍在Python中过滤pandas数据帧的各种方法。 数据过滤是最常见的数据操作操作之一。 它类似于SQL中的WHERE子句,或者必须在MS Excel中使用过滤器根据某些条件选择特定行。
1982 0
《数据分析实战 基于EXCEL和SPSS系列工具的实践》一1.2 数据分析能给我们带来什么
曾有人在培训时提出,我公司的业务状况,我非常清楚,还用得着分析吗?可是,事实真的是这样吗?你真的对公司的数据了如指掌?对它所体现的特征一清二楚?如果公司的数据量比较大、比较复杂,那么它就有可能存在潜在的价值,就有分析的必要。
1086 0
正则表达式的资源和工具汇集(上)
正则表达式的资源和工具汇集(上) 正则表达式是一种模板,用于批评字符串中字符的组合。在JavaScript语言中,正则表达式还可以是对象。在RegExp工具中,这些模板可以用于方法的执行和测试,可以匹配、替换、搜索和分割字符串。
606 0
《数据分析实战 基于EXCEL和SPSS系列工具的实践》一1.3 数据分析的几大抓手
时不时地有培训学员来问我一个问题:“我怎么样才能把数据分析做好?”要回答这个问题还真是不容易,就像业余围棋爱好者问“我怎么样才能快速提高自己的棋力?”或者刚刚进入职场的大学生问“我怎么样才能把销售业绩做好?”一样。
1120 0
+关注
python人工智能命理
提供书籍寻找服务,十元一本起,不成功不收费。 曾任职于腾讯、华为等公司,独立带队完成大型项目的全系统测试,担任过技术总监、测试经理以及测试专家职位。现任某主流公司自动化测试架构师。
107
文章
1
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载