首页
学习
活动
专区
工具
TVP
发布

像写SQL一样用Pandas

写在最前

Python在数据分析领域有三个必须需要熟悉的库,分别是,和,如果排个优先级的话,我推荐先学。

主要用于数组和矩阵的运算,一般在算法领域会应用比较多。

用于作图的话其实可替代的库会比较多,譬如有封装的更高级的,调用起来会更方便,也有交互性更强的,风格会更讨喜。

但对于,似乎完全绕不开,当然这三个库都是非常优秀的库,如果你已经入坑数据分析,建议全学。

基本用法读取数据SQL

sql读取数据其实没啥可说的,一句简单的就OK了。

Pandas

支持的数据源很多,包括csv,excel,以及读取数据库,当然读取数据库的话需要配合其他库,包括oracle,mysql,vertica,presto等等都是支持的。

常见的如下:

:用于读取csv文件;

:用于读取Excel文件;

:用于读取json文件;

:用于读取数据库,传入sql语句,需要配合其他库连接数据库。

由于我本地没有数据库资源,我这边就以csv文件为例:

筛选列SQL

Pandas

筛选行SQL

sql本身并不支持筛选特定行,不过可以通过函数排序生成虚拟列来筛选。

Pandas

pandas支持的方式就比较多了,如果你了解python的切片操作,以下应该会比较好理解。

:筛选前3行;

:筛选1到10行中的奇数行,最后一个数字表示每隔2行取数;

行列同时筛选

pandas主要有和来支持行列筛选,虽然还有,但在目前最新的已经将其弃用了。

其实我一开始对这两个方法很容易混淆,其实后面发现很好区分,如果需要用列名来筛选,请用,如果使用列索引,请用。

根据条件筛选SQL

Pandas

在看示例之前需要提醒下,在Pandas中并不支持 和,相应的是和,而且由于和在运算优先级是优于 ,等运算符等,因此在多条件筛选需要加上括号,类似。

分组聚合SQL

Pandas

基本用法:

对DataFrame进行goupby运算后,返回的是一个groupby对象,我们可以通过将其转为DataFrame。

高阶用法:

我们可以同时对于不同列采取不同的聚合运算,譬如对A列使用,对B列使用,在SQL中其实很好实现的功能,在Pandas我们需要借助来实现 。

连接SQL

Pandas

在Pandas中我们可以使用来完成连接对操作。

各参数解释如下:

left:一个DataFrame对象;

right:另一个DataFrame对象;

how:连接方式,默认为inner(内连接);

on:连接键,必须在left和right两个DataFrame中存在,否则使用left_on和right_on;

left_on:left中的连接键;

right_on:right中的连接键;

left_index/right_index:默认为False,如果为True则使用索引作为连接的键。

高阶用法正则表达式SQL

Oracle目前是支持正则表达式的,其他的数据库暂时不大了解,如果想了解用法的可以参考这篇教程,这边就不举例了。

Pandas

当然对于pandas除了正则之外,其实在中还内置了很多字符串的方法,如切割(),替换()等等。

自定义函数

Pandas中内置很多常用的方法,譬如求和,最大值等等,但很多时候还是满足不了需求,我们需要去调用自己的方法,Pandas中可以使用和来调用自定义的方法,需要注意下和的区别:

:是的内置方法,也就是说只能用于单一列,返回的是数据是格式的;

:可以用于单列或者多列,是对整个DataFrame的元素进行运算,返回一个DataFrame。

DataFrame拼接

前文提到了 ,其实也算作拼接的一种,如果将类比为操作,接下来讲的拼接将类似于SQL中的操作。

写在最后

本来想着Pandas用了这么久了,写个教程应该不麻烦,结果耗费了两个下午也才写了点皮毛。其实如果要写的详细点,每个点都能写篇文章,篇幅有限,只能点到即止,后面如果想到再做补充吧。

Talk is cheap, show me the code.

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190901A08SLF00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券