DataFrame(14):对比MySQL学习“Pandas的groupby分组聚合”(超详细)(一)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: DataFrame(14):对比MySQL学习“Pandas的groupby分组聚合”(超详细)(一)

1、MySQL和Pandas做分组聚合的对比说明

1)都是用来处理表格数据

 不管是mysql,还是pandas,都是处理像excel那样的二维表格数据的。对于一个二维表,每一行都可以看作是一条记录,每一列都可以看作是字段。


2)分组聚合的风格不同

 学过mysql的人都知道,mysql在做数据处理和统计分析的时候,有一个很大的痛点:语法顺序和执行顺序不一致,这就导致很多初学者很容易写错sql语句。

 业界处理像excel那样的二维表格数据,通常有如下两种风格:


DSL风格:使用面向对象的方式来操作,pandas就是采用这种方式,通俗说就是“语法顺序和执行顺序一致”。

SQL风格:写sql语句来处理。

3)从代码角度,说明两者的不同

① mysql

语法顺序:


SELECT Column1, Column2, mean(Column3), sum(Column4)  
FROM SomeTable  
WHERE Condition 1  
GROUP BY Column1, Column2  
HAVING Condition2


逻辑执行顺序:


from...where...group...select...having...limit


② pandas

语法顺序和逻辑执行顺序:


df[Condition1].groupby([Column1,Column2],as_index=False).agg({Column3: "mean",Column4:"sum"})


③ 图示说明

image.png


首先from相当于取出MySQL中的一张表,对比pandas就是得到了一个df表对象。

然后就是执行where筛选,对比pandas就相当于写一个condition1过滤条件,做一个分组前的筛选筛选。

接着就是执行group分组条件,对比pandas就是写一个groupby条件进行分组。

再接着就是执行select条件,聚合函数就是写在select后面的,对比pandas就是执行agg()函数,在其中针对不同的列执行count、max、min、sum、mean聚合函数。

最后执行的是having表示分组后的筛选,在pandas中,通过上图可以发现我们得到了一个df1对象,针对这个df1对象,我们再做一次筛选,也表示分组后的筛选。

综上所述:只要你的逻辑想好了,在pandas中,由于语法顺序和逻辑执行顺序是一致的,你就按照逻辑顺序写下去,就很容易了。

4)用一个例子讲述MySQL和Pandas分组聚合

① 求不同deptno(部门)下,sal(工资)大于8000的部门、工资;

image.png


② mysqi中代码执行如下

select deptno,sum(sal) sums
from emp
group by deptno
having sums > 9000;


结果如下:

image.png


③ pandas中代码执行如下

df = pd.read_excel(r"C:\Users\黄伟\Desktop\emp.xlsx")
display(df)
df = df.groupby("deptno",as_index=False).agg({"sal":"sum"})
display(df)
df1 = df[df["sal"]>9000]
display(df1)


结果如下:

image.png

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
SQL 关系型数据库 MySQL
在 MySQL 中使用 `GROUP BY` 子句
【8月更文挑战第12天】
44 1
|
1天前
|
算法 关系型数据库 MySQL
MySQL高级篇——排序、分组、分页优化
排序优化建议、案例验证、范围查询时索引字段选择、filesort调优、双路排序和单路排序、分组优化、带排序的深分页优化
MySQL高级篇——排序、分组、分页优化
|
18天前
|
Python
掌握pandas中的时序数据分组运算
掌握pandas中的时序数据分组运算
|
17天前
|
索引 Python
Pandas学习笔记之Dataframe
Pandas学习笔记之Dataframe
|
24天前
|
数据挖掘 大数据 数据处理
数据分析师的秘密武器:精通Pandas DataFrame合并与连接技巧
【8月更文挑战第22天】在数据分析中,Pandas库的DataFrame提供高效的数据合并与连接功能。本文通过实例展示如何按员工ID合并基本信息与薪资信息,并介绍如何基于多列(如员工ID与部门ID)进行更复杂的连接操作。通过调整`merge`函数的`how`参数(如'inner'、'outer'等),可实现不同类型的连接。此外,还介绍了使用`join`方法根据索引快速连接数据,这对于处理大数据集尤其有用。掌握这些技巧能显著提升数据分析的能力。
42 1
|
25天前
|
关系型数据库 MySQL 数据处理
Mysql关于同时使用Group by和Order by问题
总的来说,`GROUP BY`和 `ORDER BY`的合理使用和优化,可以在满足数据处理需求的同时,保证查询的性能。在实际应用中,应根据数据的特性和查询需求,合理设计索引和查询结构,以实现高效的数据处理。
177 1
|
1月前
|
SQL 关系型数据库 MySQL
MySQL】-DQL(基本、条件、分组、排序、分页)详细版
通过这些查询方法,你可以高效地检索、分析和组织MySQL数据库中的数据,以满足各种应用需求。实践中,理解这些SQL语句的基础知识以及它们如何组合起来进行复杂的数据操作是至关重要的。
26 1
|
1月前
【Pandas+Python】初始化一个全零的Dataframe
初始化一个100*3的0矩阵,变为Dataframe类型,并为每列赋值一个属性。
19 2
|
1月前
|
SQL 数据采集 JSON
Pandas 使用教程 Series、DataFrame
Pandas 使用教程 Series、DataFrame
30 0
|
1月前
|
存储 关系型数据库 MySQL
MySQL中的DISTINCT与GROUP BY:效率之争与实战应用
【8月更文挑战第12天】在数据库查询优化中,DISTINCT和GROUP BY常常被用来去重或聚合数据,但它们在实现方式和性能表现上却各有千秋。本文将深入探讨两者在MySQL中的效率差异,结合工作学习中的实际案例,为您呈现一场技术干货分享。
159 0

热门文章

最新文章