Python遇上SQL,于是一个好用的Python第三方库出现了
1. 演示数据
本文的所有演示数据,均是基于下方的四张表。下面这四张表大家应该不陌生,这就是网传50道经典MySQL面试题
中使用到的几张原表。关于下方各表之间的关联关系,我就不给大家说明了,仔细观察字段名,应该就可以发现。
2. pandasql的使用
1)简介
pandas
中的DataFrame是一个二维表格,数据库中的表也是一个二维表格,因此在pandas中使用sql语句
就显得水到渠成,pandasql使用SQLite作为其操作数据库,同时Python自带SQLite模块
,不需要安装,便可直接使用。
这里有一点需要注意的是
:使用pandasql读取DataFrame中日期格式的列,默认会读取年月日、时分秒,因此我们要学会使用sqlite中的日期处理函数,方便我们转换日期格式,下方提供sqlite中常用函数大全,希望对你有帮助。
sqlite函数大全:http://suo.im/5DWraE
导入相关库:
import pandas as pd
from pandasql import sqldf
2)声明全局变量的2种方式
- ① 在使用之前,声明该全局变量;
- ② 一次性声明好全局变量;
① 在使用之前,声明该全局变量
df1 = pd.read_excel("student.xlsx")
df2 = pd.read_excel("sc.xlsx")
df3 = pd.read_excel("course.xlsx")
df4 = pd.read_excel("teacher.xlsx")global df1
global df2
global df3
global df4
query1 = "select * from df1 limit 5"
query2 = "select * from df2 limit 5"
query3 = "select * from df3"
query4 = "select * from df4"sqldf(query1)
sqldf(query2)
sqldf(query3)
sqldf(query4)
部分结果如下:
② 一次性声明好全局变量
df1 = pd.read_excel("student.xlsx")
df2 = pd.read_excel("sc.xlsx")
df3 = pd.read_excel("course.xlsx")
df4 = pd.read_excel("teacher.xlsx")pysqldf = lambda q: sqldf(q, globals())query1 = "select * from df1 limit 5"
query2 = "select * from df2 limit 5"
query3 = "select * from df3"
query4 = "select * from df4"sqldf(query1)
sqldf(query2)
sqldf(query3)
sqldf(query4)
部分结果如下:
3)写几个简单的SQL语句
① 查看sqlite的版本
student = pd.read_excel("student.xlsx")
pysqldf = lambda q: sqldf(q, globals())
query1 = """select sqlite_version(*)
"""
pysqldf(query1)
结果如下:
② where筛选
student = pd.read_excel("student.xlsx")
pysqldf = lambda q: sqldf(q, globals())
query1 = """select * from student where strftime('%Y-%m-%d',sage) = '1990-01-01'
"""
pysqldf(query1)
结果如下:
③ 多表连接
student = pd.read_excel("student.xlsx")
sc = pd.read_excel("sc.xlsx")pysqldf = lambda q: sqldf(q, globals())
query2 = """select *from student sjoin sc on s.sid = sc.sid
"""
pysqldf(query2)
部分结果如下:
④ 分组聚合
student = pd.read_excel("student.xlsx")
sc = pd.read_excel("sc.xlsx")pysqldf = lambda q: sqldf(q, globals())
query2 = """select s.sname as 姓名,sum(sc.score) as 总分from student sjoin sc on s.sid = sc.sidgroup by s.sname
"""
pysqldf(query2)
结果如下:
⑤ union查询
student = pd.read_excel("student.xlsx")
pysqldf = lambda q: sqldf(q, globals())
query1 = """select * from student where strftime('%Y-%m',sage) = '1990-01'unionselect * from student where strftime('%Y-%m',sage) = '1990-12'
"""
pysqldf(query1)
结果如下:
Python遇上SQL,于是一个好用的Python第三方库出现了相关推荐
- python eel 多线程_Python的一个轻量级桌面GUI开发第三方库:Eel
1 环境: ====== 1.1 Python3.8,谷歌浏览器,微软vscode编辑器. 1.2 Eel库的介绍,安装,相关地址,对官方的文档进行解读,文件结构,简单使用和注意事项. 1.3 亲测, ...
- 当python遇上echarts (三)绘制3D图表
当python遇上echarts (二)绘制基本图表 文章目录 前言 3D图形配置项及方法 Grid3DOpts:三维笛卡尔坐标系配置项 Axis3DOpts:三维坐标轴配置项 add(): 共有的方 ...
- 谁说QTP不能多线程 - 当Python遇上QTP
谁说QTP不能多线程 - 当Python遇上QTP 作者:Wally Yu (微博:http://weibo.com/quicktest) 经常有人问我一个问题:QTP可以同时做多个项目的自动化吗?我 ...
- 文末送书 | 当Python遇上高考,会发生什么?
(文末送书哦!) 延期一个月之后,1071万考生终于熬出头了. 这届高考太难了,不仅考学生,更是考验疫情的防控能力. 但是说到难,2018年浙江省教育厅的一个决定,让不少人感叹真难! 原来早在2017 ...
- 当Python遇上高考,会发生什么?
延期一个月之后,今天,1071万考生终于走入考场. 这届高考太难了,不仅考学生,更是考验疫情的防控能力. 但是说到难,2018年浙江省教育厅的一个决定,让不少人感叹真难! 原来早在2017年底,就有消 ...
- 帮你解剖Python的一个轻量级桌面GUI开发第三方库:Eel,让它体无完肤
Python的一个轻量级桌面GUI开发第三方库:Eel 一.Eel介绍 二.资源库eel的安装 三.文件结构和简单的hello介绍 3.1 文件结构 3.2 代码:hello1.py 3.3 main ...
- 为何python攀上数据科学巅峰?调查显示Python超越R
根据KDnuggets 2017年最新调查,Python生态系统已经超过了R,成为了数据分析.数据科学与机器学习的第一大语言.本文对KDnuggets的此项调查结果做了介绍,并补充了一篇文章讲解为何P ...
- 自学python需要下载什么软件-一个零基础学习Python应该知道的学习步骤与规划
原标题:一个零基础学习Python应该知道的学习步骤与规划 很多初学Python的同学都面临着很多的疑问,在之前的文章中我大致的很多问题我已经进行了讲解,无论你是编程零基础.数学,英语不错.还是说没有 ...
- python日历小程序_一个查看网络设备信息Python小程序
原标题:一个查看网络设备信息Python小程序 网络编程中,最常见的一个问题就是,获取设备信息. 首先我们,要学习如何获取本机的网络信息.我们将用到标准库中的socket库.假如说,我们要查看本机的 ...
- 不同平台上安装python是一样的吗_python3 在不同操作系统安装第三方库方法
最近在看python3 ,有很多功能需要安装第三方库 不同的操作系统安装方法经常出现错误, 于是自己慢慢研究了不同操作系统的安装办法 用psutil模块做个例子吧 psutil是一个跨平台库,能够轻 ...
最新文章
- 06 Java程序员面试宝典视频课程之Javascript
- 神经网络调参batchsize对网络性能影响
- python:类的空间问题 类与类之间的关系
- 直接启动SDK Manager: $ADNROID_HOME/tools/android
- 获得代理ippython_Python搭建代理IP池实现获取IP的方法
- 使用Spring JDBC时遇到的Software caused connection abort: recv failed问题
- centos7源码编译安装mariadb
- requests, Beautifusoup 爬取新浪新闻资讯
- 全参考客观视频质量评价方法 (MSE, PSNR,SSIM)原理
- mvcframeworkProgramming ASP.NET MVC-Fundamentals of ASP.NET MVC(四)Controller
- The pricess diaries
- Ghostscript命令实践
- 大厂面试爱问的「调度算法」,20 张图一举拿下
- Android 调用百度识图工具
- 检测数据库连接泄漏的最佳方法
- 如何在富文本中插入表情,word文档,及数学公式?
- 关于vega打不开的问题
- 【193】Lumen 中文文档
- 网络上博弈——博弈匠心——真正的匠人精神
- 微信背景音乐不自动播放解决