前言:
当前朋友们对“sql的查找算法”可能比较关注,小伙伴们都需要剖析一些“sql的查找算法”的相关知识。那么小编也在网络上汇集了一些对于“sql的查找算法””的相关知识,希望大家能喜欢,兄弟们快快来了解一下吧!在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 sql2、pandasql库使用
为了更好地演示pandasql库如何使用,这里首先导入我们的数据文件,使用pandas库导入本文所使用的电影文件数据。
import pandas as pddf=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 电影名称,电影导演,电影主演,累计票房,casewhen 累计票房 < 100000 then '超低票房'when 累计票房 < 200000 then '低票房'when 累计票房 < 300000 then '中等票房'when 累计票房 < 400000 then '高票房'else '超高票房'end as '电影票房分组' from dfwhere 累计票房 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的查找算法