14种方式,34个案例:对比SQL,学习Pandas操作

在SQL中查询数据的时候我们所有各种操作,主要是通过select、where、group by等多个关键词的组合查询来实现的。本文中介绍的如何在相同的需求下,通过pandas来实现取数操作。

比较方向

  1. 查询全部数据

  2. 前N条

  3. 后N条

  4. 中间段数据

  5. 部分字段

  6. 指定等式条件

  7. 指定不等式条件

  8. 取反操作

  9. 指定多个条件

  10. 指定计算等式

  11. 模糊查询

  12. 排序

  13. 分组统计

  14. 取别名

参考资料

因为本文主要介绍的是如何通过pandas来获取我们想要的数据,也是pandas的各种取数技巧,参考之前介绍的3篇文章:

各种骚气的Pandas取数操作

赞!五花八门的Pandas筛选数据

最后一篇:玩转Pandas取数

模拟数据

在数据库中,我们先模拟了3份数据:

1、学生信息表

-- 学生信息

mysql> select *  from Student;
+------+--------+------------+-------+
| s_id | s_name | s_birth    | s_sex |
+------+--------+------------+-------+
| 01   | 赵雷   | 1990-01-01 | 男    |
| 02   | 钱电   | 1990-12-21 | 男    |
| 03   | 孙风   | 1990-05-20 | 男    |
| 04   | 李云   | 1990-08-06 | 男    |
| 05   | 周梅   | 1991-12-01 | 女    |
| 06   | 吴兰   | 1992-03-01 | 女    |
| 07   | 郑竹   | 1989-07-02 | 女    |
| 08   | 王菊   | 1990-01-20 | 女    |
+------+--------+------------+-------+
8 rows in set (0.00 sec)

2、一份用户表

3、一份水果商品价格表

下面开始介绍不同需求下基于pandas和SQL的取数实现

取出全部数据

SQL实现

select *  from Student;

Pandas实现

前N条数据

SQL实现

查看前5条数据:

Pandas实现

head方法默认是前5条:

指定查看前7条数据:

后N条数据

select * 
from (select * from Student 
      order by s_id desc 
      limit 5)t   -- 临时结果表:倒序输出的最后5条
order by s_id;  -- 再使用一次排序,将顺序还原

Pandas实现

tail方法默认是后5条:

指定查看4条

切片数据

SQL实现

Pandas实现

使用pandas中的切片来查看某个连续区间内的数据:

取出部分字段

SQL实现

Pandas实现

df1[["id","name","sex"]]  # 方式1

df2.filter(items=["id","age","createtime"])   # 方式2

指定等式条件

SQL实现

Pandas实现

df1[df1["sex"] == "男"]  # 方式1
df1.query('sex=="男"')   # 方式2

指定id号或者年龄age:

指定不等式条件

SQL实现

select * from Student where s_sex!= "男";
select * from user where age > 18;
select * from user where id <= 3; 

Pandas实现

取反操作

SQL实现

mysql> select * from Student where s_sex != "男";

Pandas实现

指定多个条件

SQL实现

select * from Student where s_birth <="1991-01-01" and  s_sex= "男";
select * from user where age < 20 and fee > 60;
select * from user where age < 20 and fee > 60;

Pandas实现

指定计算等式

SQL实现

select * from user where age % 3 = 0;  -- 年龄分别是3或者2的倍数
select * from user where age % 2 = 0;  

Pandas实现

模糊查询

SQL实现

SQL的关键词是like:

  • 左匹配

  • 右匹配

  • 全匹配

Pandas实现

排序

默认是升序,可以指定为降序

SQL实现

1、单个字段

select * from Student order by s_birth desc;   -- 改成升序

2、多个字段的排序

Pandas实现

1、单个字段

2、多个字段

分组统计

SQL实现

通过group by 来进行分组统计:

Pandas实现

先看看df3的数据,一个水果会对应多个价格,我们水果的名称对价格汇总:

df3.groupby("name").agg({"price":"sum"}).reset_index()  # 方式1

df3.groupby("name")["price"].sum().reset_index()   # 方式2

取别名

SQL实现

通过使用as 关键词:

select name as  水果, sum(price) as  价格 from products group by name;

Pandas实现

Pandas是通过rename函数来实现的:

df3.groupby("name").agg({"price":"sum"}).reset_index().rename(columns={"name":"水果","price":"价格"})
推荐阅读:入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|年度爆款文案1).卧槽!Pdf转Word用Python轻松搞定!2).学Python真香!我用100行代码做了个网站,帮人PS旅行图片,赚个鸡腿吃3).首播过亿,火爆全网,我分析了《乘风破浪的姐姐》,发现了这些秘密 4).80行代码!用Python做一个哆来A梦分身 5).你必须掌握的20个python代码,短小精悍,用处无穷 6).30个Python奇淫技巧集 7).我总结的80页《菜鸟学Python精选干货.pdf》,都是干货 8).再见Python!我要学Go了!2500字深度分析!9).发现一个舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片
点阅读原文,领AI全套资料!
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值