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第三方库出现了相关推荐

  1. python eel 多线程_Python的一个轻量级桌面GUI开发第三方库:Eel

    1 环境: ====== 1.1 Python3.8,谷歌浏览器,微软vscode编辑器. 1.2 Eel库的介绍,安装,相关地址,对官方的文档进行解读,文件结构,简单使用和注意事项. 1.3 亲测, ...

  2. 当python遇上echarts (三)绘制3D图表

    当python遇上echarts (二)绘制基本图表 文章目录 前言 3D图形配置项及方法 Grid3DOpts:三维笛卡尔坐标系配置项 Axis3DOpts:三维坐标轴配置项 add(): 共有的方 ...

  3. 谁说QTP不能多线程 - 当Python遇上QTP

    谁说QTP不能多线程 - 当Python遇上QTP 作者:Wally Yu (微博:http://weibo.com/quicktest) 经常有人问我一个问题:QTP可以同时做多个项目的自动化吗?我 ...

  4. 文末送书 | 当Python遇上高考,会发生什么?

    (文末送书哦!) 延期一个月之后,1071万考生终于熬出头了. 这届高考太难了,不仅考学生,更是考验疫情的防控能力. 但是说到难,2018年浙江省教育厅的一个决定,让不少人感叹真难! 原来早在2017 ...

  5. 当Python遇上高考,会发生什么?

    延期一个月之后,今天,1071万考生终于走入考场. 这届高考太难了,不仅考学生,更是考验疫情的防控能力. 但是说到难,2018年浙江省教育厅的一个决定,让不少人感叹真难! 原来早在2017年底,就有消 ...

  6. 帮你解剖Python的一个轻量级桌面GUI开发第三方库:Eel,让它体无完肤

    Python的一个轻量级桌面GUI开发第三方库:Eel 一.Eel介绍 二.资源库eel的安装 三.文件结构和简单的hello介绍 3.1 文件结构 3.2 代码:hello1.py 3.3 main ...

  7. 为何python攀上数据科学巅峰?调查显示Python超越R

    根据KDnuggets 2017年最新调查,Python生态系统已经超过了R,成为了数据分析.数据科学与机器学习的第一大语言.本文对KDnuggets的此项调查结果做了介绍,并补充了一篇文章讲解为何P ...

  8. 自学python需要下载什么软件-一个零基础学习Python应该知道的学习步骤与规划

    原标题:一个零基础学习Python应该知道的学习步骤与规划 很多初学Python的同学都面临着很多的疑问,在之前的文章中我大致的很多问题我已经进行了讲解,无论你是编程零基础.数学,英语不错.还是说没有 ...

  9. python日历小程序_一个查看网络设备信息Python小程序

    原标题:一个查看网络设备信息Python小程序 网络编程中,最常见的一个问题就是,获取设备信息. 首先我们,要学习如何获取本机的网络信息.我们将用到标准库中的socket库.假如说,我们要查看本机的 ...

  10. 不同平台上安装python是一样的吗_python3 在不同操作系统安装第三方库方法

    最近在看python3 ,有很多功能需要安装第三方库 不同的操作系统安装方法经常出现错误, 于是自己慢慢研究了不同操作系统的安装办法 用psutil模块做个例子吧 psutil是一个跨平台库,能够轻 ...

最新文章

  1. 06 Java程序员面试宝典视频课程之Javascript
  2. 神经网络调参batchsize对网络性能影响
  3. python:类的空间问题 类与类之间的关系
  4. 直接启动SDK Manager: $ADNROID_HOME/tools/android
  5. 获得代理ippython_Python搭建代理IP池实现获取IP的方法
  6. 使用Spring JDBC时遇到的Software caused connection abort: recv failed问题
  7. centos7源码编译安装mariadb
  8. requests, Beautifusoup 爬取新浪新闻资讯
  9. 全参考客观视频质量评价方法 (MSE, PSNR,SSIM)原理
  10. mvcframeworkProgramming ASP.NET MVC-Fundamentals of ASP.NET MVC(四)Controller
  11. The pricess diaries
  12. Ghostscript命令实践
  13. 大厂面试爱问的「调度算法」,20 张图一举拿下
  14. Android 调用百度识图工具
  15. 检测数据库连接泄漏的最佳方法
  16. 如何在富文本中插入表情,word文档,及数学公式?
  17. 关于vega打不开的问题
  18. 【193】Lumen 中文文档
  19. 网络上博弈——博弈匠心——真正的匠人精神
  20. 微信背景音乐不自动播放解决

热门文章

  1. 中国企业8.37亿业务招待费折射出啥弊端?
  2. 云机房与计算机考试,计算机等级考试中云桌面机房的优势浅析
  3. hadoop伪分布式下 无法启动datanode的原因及解决办法
  4. Android相机调用-CameraX【外接摄像头】【USB摄像头】
  5. 正则表达式学习 (一)
  6. Linux 桌面及显示管理器
  7. 京东集团的5家独角兽
  8. 腾讯2019年暑期实习生招聘提前批在线笔试技术研究和数据分析方向
  9. 选修课报名抢座小程序 毕业设计毕业论文 开题报告和效果图(基于微信小程序毕业设计题目选题课题)
  10. 系统加固/防勒索病毒您了解过吗?