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

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介: 对比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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
Ubuntu Oracle 关系型数据库
Ubuntu安装MySQL及常用操作
Ubuntu安装MySQL及常用操作
866 1
|
索引 Python
Pandas中DataFrame的属性、方法、常用操作以及使用示例(四)
Pandas中DataFrame的属性、方法、常用操作以及使用示例(四)
|
JSON 关系型数据库 MySQL
pandas数据加载(csv、excel、json、mysql、webAPI)
数据的输入是数据分析的第一步,如果不能将数据快速方便的导入导出python,那么pandas不可能成为强大而高效的数据分析环境,本文重点介绍pandas的数据输入加载。
468 0
pandas数据加载(csv、excel、json、mysql、webAPI)
|
数据采集 索引 Python
Pandas常用操作命令(二)
Pandas常用操作命令(二)
Pandas常用操作命令(二)
|
SQL 分布式计算 Spark
200 Spark DataFrame常用操作- SQL风格语法
200 Spark DataFrame常用操作- SQL风格语法
154 0
|
存储 数据挖掘 索引
【100天精通Python】Day55:Python 数据分析_Pandas数据选取和常用操作
【100天精通Python】Day55:Python 数据分析_Pandas数据选取和常用操作
314 0
|
索引 Python
Pandas常用操作命令(三)
Pandas常用操作命令(三)
|
SQL 数据采集 JSON
Pandas常用操作命令(一)
Pandas常用操作命令(一)
|
索引 Python
Pandas中DataFrame的属性、方法、常用操作以及使用示例(七)
Pandas中DataFrame的属性、方法、常用操作以及使用示例(七)

推荐镜像

更多