作者 | 俊欣

来源 | 关于数据分析与可视化

对于数据分析师而言,PandasSQL可能是大家用的比较多的两个工具,两者都可以对数据集进行深度的分析,挖掘出有价值的信息,但是二者的语法有着诸多的不同,今天小编就来总结归纳一下PandasSQL这两者之间在语法上到底有哪些不同。

导入数据

对于Pandas而言,我们需要提前导入数据集,然后再进行进一步的分析与挖掘

import pandas as pdairports = pd.read_csv('data/airports.csv')
airport_freq = pd.read_csv('data/airport-frequencies.csv')
runways = pd.read_csv('data/runways.csv')

基础语法

SQL当中,我们用SELECT来查找数据,WHERE来过滤数据,DISTINCT来去重,LIMIT来限制输出结果的数量,

输出数据集

## SQL
select * from airports## Pandas
airports

输出数据集的前三行数据,代码如下

## SQL
select * from airports limit 3## Pandas
airports.head(3)

对数据集进行过滤筛查

## SQL
select id from airports where ident = 'KLAX'## Pandas
airports[airports.ident == 'KLAX'].id

对于筛选出来的数据进行去重

## SQL
select distinct type from airport## Pandas
airports.type.unique()

多个条件交集来筛选数据

多个条件的交集来筛选数据,代码如下

## SQL
select * from airports
where iso_region = 'US-CA' and
type = 'seaplane_base'## Pandas
airports[(airports.iso_region == 'US-CA') &
(airports.type == 'seaplane_base')]

或者是

## SQL
select ident, name, municipality from airports
where iso_region = 'US-CA' and
type = 'large_airport'## Pandas
airports[(airports.iso_region == 'US-CA') &
(airports.type == 'large_airport')][['ident', 'name', 'municipality']]

排序

Pandas当中默认是对数据进行升序排序,要是我们希望对数据进行降序排序,需要设定ascending参数

## SQL
select * from airport_freq
where airport_ident = 'KLAX'
order by type## Pandas
airport_freq[airport_freq.airport_ident == 'KLAX']
.sort_values('type')

又或者是

## SQL
select * from airport_freq
where airport_ident = 'KLAX'
order by type desc## Pandas
airport_freq[airport_freq.airport_ident == 'KLAX']
.sort_values('type', ascending=False)

筛选出列表当中的数据

要是我们需要筛选出来的数据在一个列表当中,这里就需要用到isin()方法,代码如下

## SQL
select * from airports
where type in ('heliport', 'balloonport')## Pandas
airports[airports.type.isin(['heliport', 'balloonport'])]

又或者是

## SQL
select * from airports
where type not in ('heliport', 'balloonport')## Pandas
airports[~airports.type.isin(['heliport', 'balloonport'])]

删除数据

Pandas当中删除数据用的是drop()方法,代码如下

## SQL
delete from dataframe where col_name = 'MISC'## Pandas
df = df[df.type != 'MISC']
df.drop(df[df.type == 'MISC'].index)

更新数据

SQL当中更新数据使用的是updateset方法,代码如下

### SQL
update airports set home_link = '......'
where ident == 'KLAX'### Pandas
airports.loc[airports['ident'] == 'KLAX', 'home_link'] = '......'

调用统计函数

对于给定的数据集,如下图所示

runways.head()

output

我们调用min()max()mean()以及median()函数作用于length_ft这一列上面,代码如下

## SQL
select max(length_ft), min(length_ft),
avg(length_ft), median(length_ft) from runways## Pandas
runways.agg({'length_ft': ['min', 'max', 'mean', 'median']})

合并两表格

Pandas当中合并表格用的是pd.concat()方法,在SQL当中则是UNION ALL,代码如下

## SQL
select name, municipality from airports
where ident = 'KLAX'
union all
select name, municipality from airports
where ident = 'KLGB'## Pandas
pd.concat([airports[airports.ident == 'KLAX'][['name', 'municipality']],
airports[airports.ident == 'KLGB'][['name', 'municipality']]])

分组

顾名思义也就是groupby()方法,代码如下

## SQL
select iso_country, type, count(*) from airports
group by iso_country, type
order by iso_country, type## Pandas
airports.groupby(['iso_country', 'type']).size()

分组之后再做筛选

Pandas当中是在进行了groupby()之后调用filter()方法,而在SQL当中则是调用HAVING方法,代码如下

## SQL
select type, count(*) from airports
where iso_country = 'US'
group by type
having count(*) > 1000
order by count(*) desc## Pandas
airports[airports.iso_country == 'US']
.groupby('type')
.filter(lambda g: len(g) > 1000)
.groupby('type')
.size()
.sort_values(ascending=False)

TOP N records

代码如下

## SQL
select 列名 from 表名
order by size
desc limit 10## Pandas
表名.nlargest(10, columns='列名')

技术

Python多层级索引的数据分析

资讯

红帽、Docker、SUSE在俄停服

技术

用Python实现自动扫雷!

技术

一行Python代码能干嘛?来看!

分享

点收藏

点点赞

点在看

Pandas SQL 语法归纳总结,真的太全了相关推荐

  1. PandasSQL语法归纳总结,真的太全了

    对于数据分析师而言,Pandas与SQL可能是大家用的比较多的两个工具,两者都可以对数据集进行深度的分析,挖掘出有价值的信息,但是二者的语法有着诸多的不同,今天小编就来总结归纳一下Pandas与SQL ...

  2. 语法手册_是真的猛!SQL 语法速成手册

    小Hub领读: 整理非常全面,原谅我书读得少,只能用一句卧槽来赞美了! 太赞了,SpringBoot+Vue前后端分离完整入门教程!​mp.weixin.qq.com 作者:静默虚空 原文:https ...

  3. oracle语法和sql的区别吗,ORACLE和SQL语法区别归纳

    ORACLE和SQL语法区别归纳 数据类型比较 类型名称 Oracle SQLServer 比较 字符数据类型 CHAR CHAR 都是固定长度字符资料但oracle里面最大度为2kb,SQLServ ...

  4. sql多行插入insert多行无法分析查询文本_收藏!SQL语法全集合!

    来源:PHP开源社区 本文针对关系型数据库的一般语法.限于篇幅,本文侧重说明用法,不会展开讲解特性.原理. 一.基本概念 数据库术语 数据库(database) - 保存有组织的数据的容器(通常是一个 ...

  5. oracle stdevp函数,ORACLE和SQL语法区别归纳整理.doc

    ORACLE和SQL语法区别归纳整理 一.数据类型比较⑴.字符数据类型?? CHAR?? CHAR?? 都是固定长度字符资料但oracle里面最大度为2kb,SQLServer里面最大长度为8kb变长 ...

  6. 欧姆定律的c语言编程例题,初中物理欧姆定律六大题型归纳,老师都赞太全了!务必珍藏打印...

    初中的欧姆定律可以说涉及的知识点还不是太全面,但是对于初中生的同学来讲,初中的欧姆定律已经算是有难度的内容了. 在学习欧姆定律的时候,同学们不仅仅要掌握欧姆定律的定律和公式,还要掌握欧姆定律公式的运用 ...

  7. DB2数据库学习篇之最全面的sql语法知识总结

    DB2数据库学习篇之最全面的sql语法知识总结 简介 数据定义语法 数据类型语法 数据操作语法 常用重要语法例子 简介 DB2是IBM公司开发的关系数据库管理系统,它有多种不同的版本,如:DB2工作组 ...

  8. 一款SQL自动检查神器,再也不用担心SQL出错了,自动补全、回滚等功能大全

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:最美分享Coder 来源:http://suo.im/6uI ...

  9. update 两个表关联_你真的了解全量表,增量表及拉链表吗?

    1 Mysql数据准备 第一天 9月10号数据 1,待支付,2020-09-10 12:20:11,2020-09-10 12:20:112,待支付,2020-09-10 14:20:11,2020- ...

最新文章

  1. VLAN-VTP-Trunk
  2. 上周回顾:赛门铁克失足 微软开源对骂
  3. [YTU]_2639 ( 改错题:类中私有成员的访问)
  4. fwr171改无线服务器,迅捷(Fast)FWR171无线AP模式设置
  5. Django框架创建
  6. 服务器不知道怎么回事安卓系统很卡,为什么安卓系统很容易变卡?该怎么解决?看完长知识了...
  7. 函数计算GB镜像秒级启动:下一代软硬件架构协同优化
  8. python循环一百次_python循环
  9. windows系统启用2个以上的mysql服务
  10. maven使用mvn命令创建项目异常java.lang.NoClassDefFoundError: org/apache/commons/collections/ExtendedProperties
  11. ubuntu设置截屏热键(区域截屏)
  12. 高等数学张宇18讲 第二讲 极限与连续
  13. 揭秘淘宝用户增长全链路项目管理
  14. 诚之和:指挥着10万多台僵尸机器人网络的黑客被乌克兰警方抓获
  15. 数据结构:按成绩输出名次排序
  16. java微信扫一扫_java调用微信扫一扫
  17. 淘汰我们的不是这个时代,而是原地踏步的自己
  18. 如何集中自己的注意力
  19. 算法设计 - 二分法和三分法,洛谷P3382
  20. 计算机导论题目2020,计算机网络论文题目_

热门文章

  1. Python中常用的数据分析工具(模块)有哪些?
  2. Windows10下SSH远程拷贝文件
  3. python数据池连接PG
  4. Windows程序设计------字体不等宽引出的问题及其细节知识
  5. 通过yum安装配置lamp
  6. 【WEB API项目实战干货系列】- API登录与身份验证(三)
  7. Python学习day5作业-ATM和购物商城
  8. 报错 org.springframework.beans.factory.BeanCreationException
  9. 设计模式(行为型模式)——备忘录模式(Memento)
  10. jQuery最简单的表单提交方式