首页 > 数据库 >通俗易懂!像使用SQL一样使用Pandas进行数据筛选等复杂操作

通俗易懂!像使用SQL一样使用Pandas进行数据筛选等复杂操作

时间:2023-05-17 09:33:20浏览次数:51  
标签:实现 如上 查询 通俗易懂 SQL 如下 Pandas

相对于学习Pandas各种数据筛选操作,SQL语法显得更加简洁清晰,若能够将SQL语法与Pandas中对应的函数的使用方法关联起来,对于我们应用Pandas进行数据筛选来讲无疑是一个福音。

本文通过Pandas实现SQL语法中条件过滤、排序、关联、合并、更新、删除等简单及复杂操作,使得我们对方法的理解更加深刻,更加得心应手。

演示数据集

本文采用安德森鸢尾花卉(iris)数据集进行演示,iris数据集包含150个样本,对应数据集的每行数据。每行数据包含每个样本的四个特征和样本的类别信息,因此iris数据集是一个150行*5列的二维表。

我们可以 UCI Iris dataset 中获取或者使用 from sklearn.datasets import load_iris 方式获取,为了演示方便我们只取其中10行数据,如下:

接下来,就让我们一起学习一下,如何Pandas实现SQL语法中条件过滤、排序、关联、合并、更新、删除等数据查询操作。

字段查询 SELECT

如上SQL实现返回每行记录的 sl,sw,pl,pw 字段,仅返回2行记录。我们使用Pandas实现如上SQL的功能,代码如下:

简单的条件过滤查询 WHERE

如上SQL实现了查询满足classes=1的记录,并返回2行。我们使用Pandas实现该SQL,代码如下:

多条件的与或过滤查询 WHERE AND|OR

与关系

如上SQL实现查询同时满足classes=1 和 pl >=5 两个条件的记录,并返回2行。我们使用Pandas实现该SQL,代码如下:

或关系 |

如上SQL实现查询满足 sl >=5 或者 pl >=5 任一条件的记录,返回2行。我们使用Pandas实现该SQL,代码如下:

条件过滤 空值判断

空判断 is null

如上SQL实现查询 sl 字段为NULL的记录,我们使用Pandas实现该SQL,代码如下:

>

非空判断 is not null

如上SQL实现查询sl字段不为 NULL 的记录。我们使用Pandas实现该SQL,代码如下:

排序 ORDER BY ASC|DESC

如上SQL实现将满足sl字段值大于等于5的记录,按照classes降序排序。我们使用Pandas实现该SQL,代码如下:

更新 UPDATE

如上SQL实现将同时满足pw = 1.7 和 pl >= 5的记录中的classes字段值更新为2。我们使用Pandas实现该SQL,代码如下:

分组统计 GROUP BY

如上SQL实现 根据classes进行分组,返回classes 及每组数量。我们使用Pandas实现该SQL,代码如下:

分组统计 聚合输出

如何SQL实现根据classes进行分组,返回classes值,每个分组的pl平均值以及每个分组的sl最大值。我们使用Pandas实现该SQL,代码如下:

删除

如上SQL实现将同时满足pw = 1.7 和 pl >= 5的记录删除。我们使用Pandas实现该SQL,代码如下:

合并查询

接下来介绍如何使用Pandas进行合并查询及多表关联查询,为了演示方便,我们上面示例中的iris数据集,拆分成iris_a,iris_b两部分,如下:

合并结果 UNION ALL 允许重复

>

如上SQL实现将两个select查询结果进行合并,允许存在重复记录。我们使用Pandas实现该SQL,代码如下:

合并结果 UNION 不允许重复

>

如上SQL实现将两个select查询结果进行合并,不允许存在重复记录。我们使用Pandas实现该SQL,代码如下:

 

仅用于笔记记录

 

标签:实现,如上,查询,通俗易懂,SQL,如下,Pandas
From: https://www.cnblogs.com/hls91/p/17407559.html

相关文章

  • MYSQL因IN的范围太大导致索引失效问题
    背景最近发现有个用于统计的门店串码激活数量的SQL特别慢,将其摘出来大致如下SELECTa.sku_idasskuId,a.store_idasstoreId,count(*)assaleQtyFROMall_imei_infoawherea.activated_time>=1675530000000anda.activated_time<=1675616399999anda.stor......
  • mysql从5.7升级到8.0的注意事项
    ####################################(1)sql_mode全局变量:在升级MySQL版本到8.0的过程中,需要关注sql_mode参数默认值的变化,8.0版本sql_mode不支持NO_AUTO_CREATE_USER,要避免配置的sql_mode中带有NO_AUTO_CREATE_USER(2)mysql_native_password插件:MySQL8.0.4开始,默认身份认证开始改变......
  • Oracle版面本的MySQL8.0的配置文件 my.cnf
    ##############################创建用户和用户组:groupaddworkuseraddwork  准备目录:mkdir-p/home/work/mysql_3306mkdir-p/home/work/mysql_3306/datamkdir-p/home/work/mysql_3306/etcmkdir-p/home/work/mysql_3306/tmpmkdir-p/home/work/mysql_3306/logmkd......
  • ChatGPT 提高工作效率-一例SQL编写的过程
    ChatGPT提高工作效率-一例SQL编写的过程前言遇到一个问题,怀疑是有一些补丁没有被依赖.导致第一次更新时没有更新这些没依赖的补丁.后面更新时又更新了这些游离态的补丁.导致出现old文件覆盖new文件出现程序问题.一个补丁还好着,但是所有的补丁去检查就比较麻......
  • SQL优化改写案例14(OB数据库SQL优化,把你的脑袋当成CBO)
    OB一哥们找我优化条SQL,反馈在OceanBase存储过程执行时间很慢,需要626秒才能出结果,安排。--原SQL:INSERTINTOinsurance_stat_sx(id,stat_date,cal_num,underwrite_num,veh_num,effect_num,effect_money,unit_code,life_......
  • Windows安装、配置、卸载MySQL教程
    MySQL是一个关系型数据库管理系统,目前为Oracle旗下产品,它具有开源、体积小、速度快的优点,许多网站使用的都是MySQL数据库。简单而言,MySQL数据库核心功能就是用来存储数据的。MySQL数据库分为社区版和商业版,这里介绍的是社区版的安装教程一、下载MySQL打开MySQL官网下载链......
  • 用嵌入式sqlite部署winform应用程序
    EmbeddedResource表示数据库已嵌入到您的dll中。Copytooutputdirectory设置在这种情况下不适用,它用于BuildAction:Content嵌入数据库后,您基本上必须在首次使用时将其取消嵌入。为此,将其从Assembly中读取并将其存储到文件中。classEmbeddedResourceTest{publicsta......
  • mysql update语法 竟然不支持limit区间限制
    首先查询可以这样写,没毛病的SELECT*fromaLIMIT1000,2000 1.然后看一个不是区间的limit,更新满足条件的前1000条,没问题updateaseta.imp_date=4wherea.is_sync=0limit10002.这样写是错误的updateaseta.imp_date=4wherea.is_sync=0limit1001,2000......
  • .Net 5 CanalSharp Mysql CDC (增量同步,捕获变更数据)Docker 系列之 Canal (CDC 增量
    CanalSharp阿里云的解决方案,需要两部分Canal 服务端要和Mysql连在一起(目前我是用docker部署的服务)另外一部分就是CanalSharp单独的客户端服务(.Net5服务)CanalSharp文档可以参考:https://canalsharp.azurewebsites.net/zh/安装服务,可以点击下边的连接。Docker系列之Canal......
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
    之前业务需要捕捉到业务数据增量部分,并对其进行宽表处理,这也是其中的一个技术方案,方案主要是用了CDC的技术。CDC全称是ChangeDataCapture,捕获变更数据,是一个比较广泛的概念,只要是能够捕获所有数据的变化,比如数据库捕获完整的变更日志记录增、删、改等,都可以称为CDC。该功能被......