Python 与 SQL 这样超强结合,处理数据才是爆赞
大家好,本文的所有演示数据,均是基于下方的四张表。下面这四张表大家应该不陌生,这就是网传50道经典MySQL面试题
中使用到的几张原表。关于下方各表之间的关联关系,我就不给大家说明了,仔细观察字段名,应该就可以发现。
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)
结果如下:
推荐文章
李宏毅《机器学习》国语课程(2022)来了
有人把吴恩达老师的机器学习和深度学习做成了中文版
上瘾了,最近又给公司撸了一个可视化大屏(附源码)
如此优雅,4款 Python 自动数据分析神器真香啊
梳理半月有余,精心准备了17张知识思维导图,这次要讲清统计学
香的很,整理了20份可视化大屏模板
技术交流
目前开通了技术交流群,群友已超过3000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友
- 方式①、添加微信号:dkl88191,备注:来自CSDN
- 方式②、微信搜索公众号:Python学习与数据挖掘,后台回复:加群
技术交流、求职内推、干货汇总、与 3000+来自阿里、北大、清华、中科院、CMU、腾讯、百度等名校名企开发者互动交流~
Python 与 SQL 这样超强结合,处理数据才是爆赞相关推荐
- linux系统python截图不显示中文_Linux系统通过python访问SQL SERVER,无法显示数据库内中文的问题...
最近遇到几个需求,需要从centos上通过python访问sql server服务器查询数据,本来倒也不是很复杂,通过pyodbc比较顺利地实现了,具体如下: 先直接通过yum安装unixODBC.u ...
- Python操作SQL server向其中插入数据时报错,且报错内容没有指向性。
错误提示如下:Traceback (most recent call last): File "src\pymssql\_pymssql.pyx", line 458, in ...
- sql python tableau_Python+SQL+Tableau神组合,金融/咨询/互联网等抢着要的商业分析必备技能!...
原标题:Python+SQL+Tableau神组合,金融/咨询/互联网等抢着要的商业分析必备技能! [快求职直推]:提供留学申请,背景提升,工作求职等全方位一体化服务,服务于致力进入券商.基金.互联网 ...
- python执行excel公式 语法_10个方法:用Python执行SQL、Excel常见任务
10个方法:用Python执行SQL.Excel常见任务 数据从业者有许多工具可用于分割数据.有些人使用 Excel,有些人使用SQL,有些人使用Python.对于某些任务,使用 Python 的优点 ...
- python基于Echarts的城科就业数据可视化系统毕业设计源码150915
Python城科就业数据可视化系统 摘 要 对于处理广泛的数据并整合到本地,Python爬虫有着自已强大的功能,面对城科就业数据可视化系统研究,我们考虑借助Python爬虫的功能对其实现相应的处理,本 ...
- 详解 Python 如何将爬取到的数据分别存储到 txt、excel、mysql 中!
作者 | 黄伟呢 来源 | 数据分析与统计学之美 1. 页面分析 我爬取的页面是腾讯体育,链接如下: https://nba.stats.qq.com/player/list.htm 观察上图:左边展 ...
- 2020 年入门数据分析选择 Python 还是 SQL?七个常用操作对比!
作者 | 刘早起 来源 | 早起Python(ID:zaoqi-python) 头图 | CSDN 下载自东方IC SQL 和 Python 几乎是当前数据分析师必须要了解的两门语言,它们在处理数据 ...
- sql怎么实现取当前数据以及累计7天数据_年薪60万+大佬吐血整理字节跳动大数据面试真题...
字节的面试难度一直很高,所以一直是我想攻克的目标,定下这个目标后就去准备收集了几十个字节实际面经,还包括面试前都需要做哪些准备.只能说是工欲善其事必先利其器,经过这些周全的准备,最终的面试还是很顺利的 ...
- scrapy爬虫储存到mysql_详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
获取要爬取的URL 爬虫前期工作 用Pycharm打开项目开始写爬虫文件 字段文件items # Define here the models for your scraped items # # S ...
最新文章
- leetcode的回溯算法题目用这个模板解题,一网打尽,so easy!!!
- php拍视频上传,php视频拍照上传头像功能实现代码分享
- 如何在 C#9 中使用 static 匿名函数
- 《操作系统》OS学习(十):进程控制
- 极光无限渗透测试面经_认识工业以太网及线缆测试
- Windows平台真实时毫秒级4K H264/H265直播技术方案探讨
- (转)实现自己的http server
- python文本文件csv_我的第一个Python项目:如何将杂乱无章的文本文件转换为纯净的CSV文件
- java stream flatmap
- linux netperf的安装
- 课后习题讲解(免费)高数下册
- 现代计算机的存储体系 (转载)
- 3D打印机DIY之一------Prusa i3的材料清单和总体结构组装
- Python 判断素数(质数)的方法讲解
- Bootstrap 对齐方式
- 【C语言进阶】预定义详解
- visio2019和Mathtype7.0版本冲突,出现VBE6EXT.OLB不能被加载
- 工作中少说这“五句话”(必读)
- macOS 上安装 PECL
- angular 自定义组件的双向数据绑定
热门文章
- 10大高权重博客_你知道几个?
- 服务器用户名 administrator 修改,windows2003中Administrator用户名与密码修改图解Windows服务器操作系统 -电脑资料...
- 与公共云提供商进行谈判的3个技巧
- 【Java攻城狮宝典】04-for循环(答案)
- 能量英语(一)之激情英语
- GitHub 开源神器 Bark模型,让文本转语音更简单
- 2021年美国对中国货物出口情况:美对中的出口额达到1492亿美元,同比增长21.30% [图]
- 关于developer express 的RepositoryItemCheckEdit 不能多选的问题
- 企业知识库的意义何在?到底如何高效搭建一个知识库?
- 今日头条测开----2轮