【干货原创】Pandas&SQL语法归纳总结,真的太全了

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

导入数据

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

import pandas as pd

airports = 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

【干货原创】Pandas&SQL语法归纳总结,真的太全了

我们调用 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='列名')

在公众号后台回复【 20220317】获取源数据

NO. 1

往期推荐

Historical articles

分享、收藏、点赞、在看安排一下?

【干货原创】Pandas&SQL语法归纳总结,真的太全了

【干货原创】Pandas&SQL语法归纳总结,真的太全了

【干货原创】Pandas&SQL语法归纳总结,真的太全了

【干货原创】Pandas&SQL语法归纳总结,真的太全了

Original: https://blog.csdn.net/weixin_43373042/article/details/123564614
Author: 欣一2002
Title: 【干货原创】Pandas&SQL语法归纳总结,真的太全了

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/600756/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球