Python VS SQL语法归纳总结,真的太全了(python基础教程)

网友投稿 308 2022-09-07


Python VS SQL语法归纳总结,真的太全了(python基础教程)

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

导入数据

对于​​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​​来限制输出结果的数量,

输出数据集

## SQLselect * from airports## Pandasairports

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

## SQLselect * from airports limit 3## Pandasairports.head(3)

对数据集进行过滤筛查

## SQLselect id from airports where ident = 'KLAX'## Pandasairports[airports.ident == 'KLAX'].id

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

## SQLselect distinct type from airport## Pandasairports.type.unique()

多个条件交集来筛选数据

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

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

或者是

## SQLselect ident, name, municipality from airports where iso_region = 'US-CA' andtype = 'large_airport'## Pandasairports[(airports.iso_region == 'US-CA') &(airports.type == 'large_airport')][['ident', 'name', 'municipality']]

排序

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

## SQLselect * from airport_freqwhere airport_ident = 'KLAX'order by type## Pandasairport_freq[airport_freq.airport_ident == 'KLAX'].sort_values('type')

又或者是

## SQLselect * from airport_freqwhere airport_ident = 'KLAX'order by type desc## Pandasairport_freq[airport_freq.airport_ident == 'KLAX'].sort_values('type', ascending=False)

筛选出列表当中的数据

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

## SQLselect * from airports where type in ('heliport', 'balloonport')## Pandasairports[airports.type.isin(['heliport', 'balloonport'])]

又或者是

## SQLselect * from airports where type not in ('heliport', 'balloonport')## Pandasairports[~airports.type.isin(['heliport', 'balloonport'])]

删除数据

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

## SQLdelete from dataframe where col_name = 'MISC'## Pandasdf = df[df.type != 'MISC']df.drop(df[df.type == 'MISC'].index)

更新数据

在​​SQL​​​当中更新数据使用的是​​update​​​和​​set​​方法,代码如下

### SQLupdate airports set home_link = '......'where ident == 'KLAX'### Pandasairports.loc[airports['ident'] == 'KLAX', 'home_link'] = '......'

调用统计函数

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

runways.head()

output

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

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

合并两表格

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

## SQLselect name, municipality from airportswhere ident = 'KLAX'union allselect name, municipality from airportswhere ident = 'KLGB'## Pandaspd.concat([airports[airports.ident == 'KLAX'][['name', 'municipality']],airports[airports.ident == 'KLGB'][['name', 'municipality']]])

分组

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

## SQLselect iso_country, type, count(*) from airportsgroup by iso_country, typeorder by iso_country, type## Pandasairports.groupby(['iso_country', 'type']).size()

分组之后再做筛选

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

## SQLselect type, count(*) from airportswhere iso_country = 'US'group by typehaving count(*) > 1000order by count(*) desc## Pandasairports[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 sizedesc limit 10## Pandas表名.nlargest(10, columns='列名')

技术交流

目前开通了技术交流群,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:mybatis Example的Criteria用法:or与isNull详解
下一篇:如何用Python程序将几十个PDF文件合并成一个PDF?其实只要这四步(pdf合并 python)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~