sql重拾(一)——谈谈数据分析方面的sql与python之异曲同工之妙

本科学了sql,研究生常常用python。二者在做数据分析、做统计方面有异曲同工之妙。

sql中的、Excel里的统计函数、python里面的一些统计函数其实是一样的,同一原理,同一东西,表现形式不同而已。下面来体会一下。

以下是我昨天写的一个笔记:
Sql的聚集函数:如,sum() avg() count() max() min()
聚集函数只能用在select和group by的having子句中。
group by:
分组后聚集函数可以作用于每一个组,可以对每一个组的数据做一些统计。
Example,

三张表:
学生表:Student(Sno, Sname, Ssex, Sage, Sdept)
课程表:Course(Cno, Cname, Cpno, Ccredict) Cpno 是先行课,Ccredict是学分
学生选课表:SC(Sno, Cno, Grade) Grade是分数

1)聚集函数用在select子句中:
查询各个课程(下)的选课人数:
select 课程号,count(学生学号)from 学生选课表 group by 课程号;
2)聚集函数用在group by的having子句中:
Group by 分组, having作用于每组去了解每组。
查询修了3门以上课程的学生:
Select 学号 from 学生课程表 group by 学号 having count(*)> 3;
先按学号分组了,每一组就是一个学生的上课情况;然后对每一组用聚集函数count计数。
【想到python】
python的DataFrame的grouby()函数+agg()函数,同一东西,同一原理,不同表现形式。
比如,sales.groupby([“date_month_id”]).agg({“item_cnt_day”:”sum”}),按月份标号分组,分组后,统计每一组的总销量(即,月销量),为该组的月销量。【直接用我之前项目中的例子来举例,这个更好理解】
再如,train.groupby([‘date_block_num’,‘shop_id’,‘item_id’]).agg({‘item_cnt_day’:‘sum’}),按[月份+门店+产品]分组,后,统计每一组的总销量,仍然是月销量,但是是以该月同一<门店,产品>为单位的。

还有,sql中的连接。在python中pandas.merge()函数就是sql中的连接。
Merge的参数how=”inner”就是sql的自然连接(∩交关系),how=“outer”就是sql的外连接(∪并关系),=”left”就是左外连接(左表为主人),=“right”就是右外连接(右表为主人)。On参数表示公共属性。
如,pd.merge( item, item_category, on=’item_id’, how=’left’) 连接产品表和产品类别表,基于产品编号做左连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值