在Python中写SQL,使用pandasql库实现SQL数据查询

yumo6664个月前 (03-26)技术文章81

在pandas中实现SQL查询其实很简单,通常我们在SQL软件中写SQL,在Python软件中写Python,但是,我要是在Python中写SQL能否实现呢?要知道Python可是万能的,Python除了不能生孩子,其他事都能做。

这里给大家介绍pandasql库,它居然能在Python中写SQL,而且SQL语法在Python中完全支持,这就是下文我们详细介绍的pandasql库,在Python中写SQL能够做到手写自如,下面一起来学习~

1、pandasql库安装

要使用pandasql库的功能,需要提前下载pandasql库,这个库跟pandas库很像,只是末尾缀加了sql,通常下载库,我们需要到终端输入pip install pandasql进行下载,这里只需要在代码行里加一个感叹号"!",就可以直接下载成功。

!pip install pandasql

下载库后,导入pandasql库进行使用。

#导入pandasql库
import pandasql as sql

2、pandasql库使用

为了更好地演示pandasql库如何使用,这里首先导入我们的数据文件,使用pandas库导入本文所使用的电影文件数据。

import pandas as pd
df=pd.read_excel(r'C:\Users\尚天强\Desktop\数据合并.xlsx')

#重命名
df.rename(columns={'累计票房(万)':'累计票房'}, inplace = True)
df.head()

其次导入pandasql库,SQL运行都需要借助pandasql库,我们使用的是sql.sqldf(""" *** """)命令,其中***就是你要写的SQL语句,写SQL不难,很容易入门,只要将SQL语句写入到括号内,即可实现数据查询。

import pandasql as sql

导入pandasql库后,这里需要将电影的累计票房分为'超低票房'、'低票房'、'中等票房'、'高票房'、'超高票房',使用case when进行分组,以end结尾,成功实现在pandas中使用case when查询,查询结果如下所示。

#对电影的累计票房使用CASE WHEN分组
sql.sqldf("""select 电影名称,电影导演,电影主演,累计票房,
case
when 累计票房 < 100000 then '超低票房'
when 累计票房 < 200000 then '低票房'
when 累计票房 < 300000 then '中等票房'
when 累计票房 < 400000 then '高票房'
else '超高票房'
end as '电影票房分组' from df
where 累计票房 is not null;""")

如果要查询不同电影发行公司电影的票房情况,使用group by函数分组,sum函数做聚合运算,并使用order by函数降序排列,即可查询具体的数据结果。

#不同电影发行公司电影的票房情况,并降序排列
sql.sqldf("""select 发行公司,sum(累计票房) as '累计票房/万' from df
             group by 发行公司
             order by sum(累计票房) desc;""")

要查询每一个电影主演累计票房最高的那一部电影信息,需要做一个子查询,先子查询每一个电影主演累计票房的最大值,然后作为外部where子句的筛选条件。

#查找每一个电影主演累计票房最高的那一部电影信息
sql.sqldf("""select * from df as d
             where d.累计票房=(select max(累计票房) from df
                               where d.电影主演=电影主演)
             order by 累计票房 desc;""")

以上作者使用pandasql库成功实现了在pandas中写SQL的功能,使用sql.sqldf(""" *** """)命令,其中***是SQL查询语句,简单易学,使用SQL命令即可查询结果,更多数据分析知识和内容可以关注我,持续分享~

相关文章

SQL Server 2012 安装教程(附安装包下载)

SQL Server 2012软件介绍是一种关系数据库管理系统,由微软公司开发和维护。它是一种可扩展的、高性能的数据库平台,用于处理大量数据和支持高性能数据访问。SQL Server实现了与Windo...

SQL Server 2016 安装教程(附安装包下载)

SQL Server 2016软件介绍是一种关系数据库管理系统,由微软公司开发和维护。它是一种可扩展的、高性能的数据库平台,用于处理大量数据和支持高性能数据访问。SQL Server实现了与Windo...

如何对 Excel 中的数据使用 SQL 查询

Excel 提供了 Filter、透视表、Subtotal 等内置查询功能,但这些界面操作有时反而比较繁琐,也不够灵活。对于某些有 SQL 经验的人来讲,如果能直接用 SQL 查询数据就方便多了。比如...

新手小白的第一款sql工具,一定要是SQLynx!

作为SQL的新手小白,选择一款合适的SQL工具对于学习和实践SQL语言至关重要。今天就为大家推荐一款,我觉得最适合新手小白使用的sql工具,那就是SQLynx:用户友好性:对于初学者来说,工具的用户界...