对比MySQL,学会在Pandas中实现SQL的常用操作(二)

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 对比MySQL,学会在Pandas中实现SQL的常用操作(二)

3.in和not in条件查询

我们先来看看在SQL中应该怎么做。


SELECT *
FROM df
WHERE 星期几 in (周四,周五)
LIMIT 5;


对比到DataFrame中,我们再看看怎么做?


df[df["星期几"].isin(['周四','周五'])].head(5)


结果如下:

image.png

如果是not in,对比到DataFrame中,直接使用取反操作(~)。


df[~df["星期几"].isin(['周四','周五'])].head(5)


结果如下:

image.png


4.group by分组统计

在Pandas中,SQL的GROUP BY操作是使用类似命名的groupby()方法执行的。 groupby()通常是指一个过程,在该过程中,我们希望将数据集分成多个组,应用某些功能(通常是聚合),然后将各组组合在一起。


常见的SQL操作是获取整个数据集中每个组中的记录数。例如,通过查询可以了解性别留下的提示数量。


SELECT "性别", count(*)
FROM df
GROUP BY 性别;


对比到DataFrame中,应该是这样的。


df.groupby('性别').size()


结果如下:

image.png

注意,在pandas代码中我们使用了size()而不是count()。这是因为count()将函数应用于每一列,并返回每一列中的记录数。


df.groupby('性别').count()


结果如下:

image.png

如果想要使用count()方法应用于单个列的话,应该这样做。(后面需要随意选择一列)


df.groupby('性别')["总费用"].count()


结果如下:

image.png

也可以一次应用多种功能。例如,假设我们要查看小费金额在一周中的各个天之间有何不同—>agg()允许您将字典传递给分组的DataFrame,从而指示要应用于特定列的函数。


在SQL中:


SELECT 星期几, AVG(小费), COUNT(*)
FROM df
GROUP BY 星期几;


在Dataframe中:


df.groupby('星期几').agg({'小费': np.mean, '星期几': np.size})


结果如下:

image.png

通过将一列列传递给方法,来完成按多个列分组groupby()。在SQL中:


SELECT 是否吸烟, 星期几, COUNT(*), AVG(小费)
FROM tips
GROUP BY 是否吸烟, 星期几;


在Dataframe中:


df.groupby(['是否吸烟', '星期几']).agg({'小费': [np.size, np.mean]})


结果如下:

image.png


5.join数据关联

可以使用join()或merge()执行JOIN。 默认情况下,join()将在其索引上联接DataFrame。 每个方法都有参数,可让您指定要执行的联接类型(LEFT,RIGHT,INNER,FULL)或要联接的列(列名或索引)。但是还是推荐使用merge()函数。


1)数据准备

df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],
                    'value': [1, 3, 5, 7]})
df2 = pd.DataFrame({'key': ['B', 'D', 'D', 'E'],
                    'value':[2, 4, 6, 8]})


结果如下:

image.png

假设我们有两个数据库表,它们的名称和结构与我们的DataFrames相同。现在让我们看一下各种类型的JOIN。


2)inner join内连接

在SQL中:


SELECT *
FROM df1
INNER JOIN df2
  ON df1.key = df2.key;


在Dataframe中:


pd.merge(df1, df2, on='key')


结果如下:

image.png

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8月前
|
Ubuntu Oracle 关系型数据库
Ubuntu安装MySQL及常用操作
Ubuntu安装MySQL及常用操作
447 1
|
8月前
|
索引 Python
Pandas中DataFrame的属性、方法、常用操作以及使用示例(四)
Pandas中DataFrame的属性、方法、常用操作以及使用示例(四)
|
SQL XML Oracle
Mybatis动态SQL语句查询,实现一个参数 可查询多个字段。
Mybatis动态SQL语句查询,实现一个参数 可查询多个字段。
372 0
Mybatis动态SQL语句查询,实现一个参数 可查询多个字段。
|
5月前
|
SQL 分布式计算 Spark
200 Spark DataFrame常用操作- SQL风格语法
200 Spark DataFrame常用操作- SQL风格语法
30 0
|
6月前
|
存储 数据挖掘 索引
【100天精通Python】Day55:Python 数据分析_Pandas数据选取和常用操作
【100天精通Python】Day55:Python 数据分析_Pandas数据选取和常用操作
51 0
|
7月前
|
JSON 关系型数据库 MySQL
pandas数据加载(csv、excel、json、mysql、webAPI)
数据的输入是数据分析的第一步,如果不能将数据快速方便的导入导出python,那么pandas不可能成为强大而高效的数据分析环境,本文重点介绍pandas的数据输入加载。
133 0
pandas数据加载(csv、excel、json、mysql、webAPI)
|
8月前
|
索引 Python
Pandas中DataFrame的属性、方法、常用操作以及使用示例(七)
Pandas中DataFrame的属性、方法、常用操作以及使用示例(七)
|
8月前
|
索引 Python
Pandas中DataFrame的属性、方法、常用操作以及使用示例(六)
Pandas中DataFrame的属性、方法、常用操作以及使用示例(六)
|
8月前
|
Python
Pandas中DataFrame的属性、方法、常用操作以及使用示例(五)
Pandas中DataFrame的属性、方法、常用操作以及使用示例(五)
|
8月前
|
索引 Python
Pandas中DataFrame的属性、方法、常用操作以及使用示例(三)
Pandas中DataFrame的属性、方法、常用操作以及使用示例(三)