别再低效筛选数据了!试试pandas query函数
数据过滤在数据分析过程中具有极其重要的地位,因为在真实世界的数据集中,往往存在重复、缺失或异常的数据。pandas提供的数据过滤功能可以帮助我们轻松地识别和处理这些问题数据,从而确保数据的质量和准确性。
今天介绍的query函数,为我们提供了强大灵活的数据过滤方式,有助于从复杂的数据集中提取有价值的信息,提高分析的效率。
1. 准备数据
下面的示例中使用的数据采集自链家网的真实房屋成交数据。
数据下载地址:https://databook.top/。
导入数据:
import pandas as pd
fp = "D:/data/南京二手房交易/南京建邺区.csv"
df = pd.read_csv(fp)
df.head()

2. query 使用示例
query提供的查询接口非常灵活,可以用类似sql的方式组合查询条件。
2.1. 比较
比较是最常用的过滤手段,
比如:相等比较,检索2023年3月1日的成交数据。
df.query('dealDate == "2023.03.01"').head()

同样,也可以进行大于或者小于的比较:
# 成交总价大于1000万的房屋
df.query('totalPrice > 1000').head()

# 成交总价小于100万的房屋
df.query('totalPrice < 100').head()

2.2. 多条件组合
在query函数中组合查询条件也非常简单,它的查询字符串中可以直接使用逻辑运算符。
比如,逻辑与的查询,用 & 来连接查询条件。
# 总价大于1000万,且每平米单价小于6万的房屋
df.query('totalPrice > 1000 & unitPrice < 60000').head()

逻辑或的查询,用|来连接查询条件。
# 总价小于200万,或者每平米单价小于3万的房屋
df.query('totalPrice < 200 | unitPrice < 30000').head()

因为是逻辑或,两个条件满足一个就行,所以查询出的数据有总价大于200万,也有单价大于3万的数据。
还有一个逻辑非的运算,用 not 关键字来表示。
2.3. 模糊查询
除了比较,也可以对字符串进行模糊查询,类似sql中的LIKE检索。
比如,查询名称包含万科的楼盘。
# 名称包含万科
df.query('name.str.contains("万科")').head(5)

包含的字符串也支持正则表达式匹配,比如,查询万科楼盘中3室的房屋。
df.query('name.str.contains("万科.*3室")').head(5)

2.4. 匹配列表
查询时,可以匹配某个列表中的一项,类似于SQL中的IN检索。
比如,查询任意三个日期的房屋成交信息,且总价大于500万。
dates = ["2023.02.28", "2022.12.11", "2022.04.10"]
df.query('totalPrice > 600 & dealDate == @dates').head(5)

3. 总结
pandas的DataFrame提供了各种过滤检索数据的方式,与之相比,query函数允许用户以字符串的形式对DataFrame进行查询操作。
这样的好处有:
- 直观易读:类似SQL的语法,且查询语句以字符串形式表示,易于理解和阅读,有助于提高代码的可读性
- 灵活性高:支持复杂的查询条件,可以通过逻辑运算符组合多个条件,也支持模糊的匹配方式
- 减少代码量:可以减少编写过滤和条件判断的代码量,使代码更加简洁
- 易于调试:由于查询语句以字符串形式表示,因此在调试过程中可以轻松地打印和查看查询条件
别再低效筛选数据了!试试pandas query函数的更多相关文章
- [数据可视化之一]Pandas单变量画图
Pandas单变量画图 Bar Chat Line Chart Area Chart Histogram df.plot.bar() df.plot.line() df.plot.area() df. ...
- 沉淀,再出发:python中的pandas包
沉淀,再出发:python中的pandas包 一.前言 python中有很多的包,正是因为这些包工具才使得python能够如此强大,无论是在数据处理还是在web开发,python都发挥着重要的作用,下 ...
- SQL Server游标 C# DataTable.Select() 筛选数据 什么是SQL游标? SQL Server数据类型转换方法 LinQ是什么? SQL Server 分页方法汇总
SQL Server游标 转载自:http://www.cnblogs.com/knowledgesea/p/3699851.html. 什么是游标 结果集,结果集就是select查询之后返回的所 ...
- Vue小练习(for循环,push方法,冒泡,if判断(以及与for循环的连用),按钮高亮,根据input框筛选数据)
vue练习 ''' 1. 先有一下成绩单数据 scores = [ { name: 'Bob', math: 97, chinese: 89, english: 67 }, { name: 'Tom' ...
- Python数据科学手册-Pandas数据处理之简介
Pandas是在Numpy基础上建立的新程序库,提供了一种高效的DataFrame数据结构 本质是带行标签 和 列标签.支持相同类型数据和缺失值的 多维数组 增强版的Numpy结构化数组 行和列不在只 ...
- .NET LINQ 筛选数据
筛选数据 筛选指将结果集限制为只包含那些满足指定条件的元素的操作. 它又称为选择. 方法 方法名 说明 C# 查询表达式语法 Visual Basic 查询表达式语法 更多信息 OfType ...
- easyui 筛选数据及仅允许选择数据
先说需求,本地已缓存数据源,用户输入拼音码或编号,筛选数据作为新的数据源,然后通过键盘选择. 再说问题,easyui combogrid控件,在mode为local,也就是将数据源缓存在本地的情况下, ...
- 开始VS 2012中LightSwitch系列的第4部分:太多信息了!使用查询来排序和筛选数据
[原文发表地址] Beginning LightSwitch in VS 2012 Part 4: Too much information! Sorting and Filtering Data ...
- Python强化训练笔记(一)——在列表,字典,集合中筛选数据
列表,字典,集合中根据条件筛选数据,如下所示 列表:[-10,2,2,3,-2,7,6,9] 找出所有的非负数 字典:{1:90,2:55,3:87...} 找出所有值大于60的键值对 集合:{2,3 ...
- SQL点滴4—筛选数据列的类型,字段大小,是否可为空,是否是主键,约束等等信息
原文:SQL点滴4-筛选数据列的类型,字段大小,是否可为空,是否是主键,约束等等信息 项目需要将Access数据库中的数据导入到SQL Server中,需要检验导入后的数据完整性,数据值是否正确.我们 ...
随机推荐
- JS中every的简单使用
every 方法 every()方法用于检测数组中的所有元素是否都满足指定条件. every()方法会遍历数组的每一项,如果有一项不满足条件,则返回false,剩余的项将不会再执行检测. 如果遍历完数 ...
- 【小测试】fastcgo 调用 c 代码
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 找到了一个项目 https://github.com/pe ...
- 【0基础学爬虫】爬虫基础之自动化工具 Playwright 的使用
大数据时代,各行各业对数据采集的需求日益增多,网络爬虫的运用也更为广泛,越来越多的人开始学习网络爬虫这项技术,K哥爬虫此前已经推出不少爬虫进阶.逆向相关文章,为实现从易到难全方位覆盖,特设[0基础学爬 ...
- HTML直接插入js、css
简单的小页面可以使用 代码量大的话还是建议引用代码 直接包裹起来 <style>这里添加css代码</style> 加入css标识 <style type="t ...
- 不同版本的Unity要求的NDK版本和两者对应关系表(Unity NDK Version Match)
IL2CPP需要NDK Unity使用IL2CPP模式出安卓包时,需要用到NDK,如果没有安装则无法导出Android Studio工程或直接生成APK,本篇记录一下我下载NDK不同版本的填坑过程. ...
- Prompt learning 教学[最终篇]:Chatgpt使用场景推荐、优秀学习资料推荐、AI工具推荐
Prompt learning 教学[最终篇]:Chatgpt使用场景推荐.优秀学习资料推荐.AI工具推荐 1.chatgpt使用场景推荐 各位应该在各种平台看到不少可以尝试使用的场景,我这里仅收录: ...
- 7.3 C/C++ 实现顺序栈
顺序栈是一种基于数组实现的栈结构,它的数据元素存储在一段连续的内存空间中.在顺序栈中,栈顶元素的下标是固定的,而栈底元素的下标则随着入栈和出栈操作的进行而变化.通常,我们把栈底位置设置在数组空间的起始 ...
- SpringCloud-05-Gateway
统一网关Gateway 1.为什么需要网关 网关功能: 身份认证和权限校验 服务路由.负载均衡 请求限流 2.网关的技术实现 在SpringCloud中网关的实现包括两种: gateway zuul ...
- Properties集合的使用
Properties集合是唯一一个可以和IO流相结合的集合 可以将集合中的数据持久化存储,也可以将硬盘上的数据加载到该集合中. 1 Properties集合添加.遍历 1 private static ...
- 安装DNS服务
实验介绍: DNS的作用 DNS中文名为域名系统 它能实现域名与IP地址的互相转换 域名的命名 www.cnblogs.com 其中.com是网站是顶级域名,.cnblogs是博客园是二级域名,www ...