SQL On Pandas最佳实践
SQL On Pandas最佳实践
- 1、PandaSQL
- 1.1、PandaSQL简介
- 1.2、Pandas与PandaSQL解决方案对比
- 1.3、PandaSQL支持的窗口函数
- 1.4、PandaSQL综合使用案例
- 2、DuckDB
- 2.1、DuckDB简介
- 2.2、SQL操作(SQL On Pandas)
- 2.3、逻辑SQL(DSL on Pandas)
- 2.4、DuckDB on Apache Arrow
- 2.5、DuckDB On fsspec Filesystems
- 2.6、文件数据导入导出
- 2.7、DuckDB扩展数据源
- 2.8、DuckDB的SQL语法
- 2.9、DuckDB客户端接口
- 2.10、DuckDB分区与谓词下推
1、PandaSQL
1.1、PandaSQL简介
Pandas在数据处理方面提供了几乎全部的类SQL查询操作API,例如drop_duplicates()代表SQL中的union合并去重
但PandasAPI不如直接的SQL简洁易读,例如,Pandas还无法替代的操作之一是非等连接(查询连接条件包含非等号,如大于号、小于号等),需要多步实现,这在SQL中非常简单,PandaSQL可以很好的解决这个问题
PandaSQL是一个可以直接在Python中使用SQL语法查询Pandas数据框Dataframe的框架,PandaSQL底层调用PandasAPI
另外,Python虽然内置有SQLite数据库,但如果我们想使用SQL语句查询DataFrame就必须将原始数据先插入到SQLite
虽然PandaSQL允许我们在Pandas数据帧上运行SQL(SQLite语法)查询,但它的性能不如原生PandasAPI语法
安装:
pip install -U pandasql
PandaSQL API简介:
'''
sqldf(query, env, db_uri)
- query:使用DataFrame作为表的sql查询
- env:环境globals()或locals(),允许sqldf访问Python环境中的全局或局部变量
- db_uri:SQLAlchemy兼容的数据库URI,默认为sqlite:///:memory:
返回:返回查询结果DataFrame
'''
封装SQL查询:
from pandasql import sqldfdef query(q: str, env=None):return sqldf(q, env=globals()) if env is None else sqldf(q, env=env)
1.2、Pandas与PandaSQL解决方案对比
1)数据准备
# 商品促销活动时期表
df_promotion = pd.DataFrame({"pdt_id": ["p01", "p02", "p03"],"start_dt": ["10-06-2023", "20-06-2023", "15-08-2023"],"end_dt": ["12-06-2023", "25-06-2023", "20-08-2023"]
})# 商品交易数据表
df_trading = pd.DataFrame({"id": ["p01", "p01", "p02", "p02", "p02", "p03", "p03"],"trade_dt": ["11-06-2023", "20-06-2023", "15-08-2023", "22-06-2023", "11-06-2023", "17-08-2023", "29-08-2023"],"sales": [10, 20, 30, 22, 30, 20, 34]
})print(df_promotion.to_string())
print(df_trading.to_string())
2)需求描述
查询促销期间商品的销售额
3)Pandas解决方案
# 合并
df_merge = pd.merge(df_promotion, df_trading, left_on="pdt_id", right_on="id")
# print(df_merge.to_string())
# 非等连接查询
df_query = df_merge[(df_merge["trade_dt"] >= df_merge["start_dt"]) & (df_merge["trade_dt"] <= df_merge["end_dt"])]
# 选择字段
df_res = df_query[[相关文章:
SQL On Pandas最佳实践
SQL On Pandas最佳实践 1、PandaSQL1.1、PandaSQL简介1.2、Pandas与PandaSQL解决方案对比1.3、PandaSQL支持的窗口函数1.4、PandaSQL综合使用案例2、DuckDB2.1、DuckDB简介2.2、SQL操作(SQL On Pandas)2.3、逻辑SQL(DSL on Pandas)2.4、DuckDB on Apache Arrow2.5、DuckDB …...
如何批量给视频添加logo水印?
如果你想为自己的视频添加图片水印,以增强视频的辨识度和个性化,那么你可以使用固乔剪辑助手软件来实现这一需求。下面就是详细的操作步骤: 1.下载并打开固乔剪辑助手软件,这是一款简单易用的视频剪辑软件,功能丰富&am…...
数据挖掘和大数据的区别
数据挖掘 一般用于对企业内部系统的数据库进行筛选、整合和分析。 操作对象是数据仓库,数据相对有规律,数据量较少。 大数据 一般指对互联网中杂乱无章的数据进行筛选、整合和分析。 操作对象一般是互联网的数据,数据无规律,…...
Go之流程控制大全: 细节、示例与最佳实践
引言 在计算机编程中,流程控制是核心的组成部分,它决定了程序应该如何根据给定的情况执行或决策。以下是Go语言所支持的流程控制结构的简要概览: 流程控制类型代码if-else条件分支if condition { } else { }for循环for initialization; con…...
FLStudio2024最新破解版注册机
水果音乐制作软件FLStudio是一款功能强大的音乐创作软件,全名:Fruity Loops Studio。水果音乐制作软件FLStudio内含教程、软件、素材,是一个完整的软件音乐制作环境或数字音频工作站... FL Studio21简称FL 21,全称 Fruity Loops Studio 21,因此国人习惯叫…...
【Overload游戏引擎细节分析】standard材质Shader
提示:Shader属于GPU编程,难写难调试,阅读本文需有一定的OpenGL基础,可以写简单的Shader,不适合不会OpenGL的朋友 一、Blinn-Phong光照模型 Blinn-Phong光照模型,又称为Blinn-phong反射模型(Bli…...
Leetcode—7.整数反转【中等】
2023每日刷题(十) Leetcode—7.整数反转 关于为什么要设long变量 参考自这篇博客 long可以表示-2147483648而且只占4个字节,所以能满足题目要求 复杂逻辑版实现代码 int reverse(int x){int arr[32] {0};long y;int flag 1;if(x <…...
lua-web-utils和proxy设置示例
以下是一个使用lua-web-utils和proxy的下载器程序: -- 首先安装lua-web-utils库 local lwu require "lwu" -- 获取服务器 local function get_proxy()local proxy_url "duoipget_proxy"local resp, code, headers, err lwu.fetch(proxy_…...
分享一下在微信小程序里怎么添加储值卡功能
在微信小程序中添加储值卡功能,可以让消费者更加便捷地管理和使用储值卡,同时也能增加商家的销售收入。下面是一篇关于如何在微信小程序中添加储值卡功能的软文。 标题:微信小程序添加储值卡功能,便捷与高效并存 随着科技的不断发…...
2023高频前端面试题-http
1. HTTP有哪些⽅法? HTTP 1.0 标准中,定义了3种请求⽅法:GET、POST、HEAD HTTP 1.1 标准中,新增了请求⽅法:PUT、PATCH、DELETE、OPTIONS、TRACE、CONNECT 2. 各个HTTP方法的具体作用是什么? 方法功能G…...
图像识别在自动驾驶汽车中的多传感器融合技术
摘要: 介绍文章的主要观点和发现。 引言: 自动驾驶汽车的兴起和重要性。多传感器融合技术在自动驾驶中的关键作用。 第一部分:图像识别技术 图像识别的基本原理。图像传感器和摄像头在自动驾驶中的应用。深度学习和卷积神经网络ÿ…...
Kafka To HBase To Hive
目录 1.在HBase中创建表 2.写入API 2.1普通模式写入hbase(逐条写入) 2.2普通模式写入hbase(buffer写入) 2.3设计模式写入hbase(buffer写入) 3.HBase表映射至Hive中 1.在HBase中创建表 hbase(main):00…...
python pandas.DataFrame 直接写入Clickhouse
import pandas as pd import sqlalchemy from clickhouse_sqlalchemy import Table, engines from sqlalchemy import create_engine, MetaData, Column import urllib.parsehost 1.1.1.1 user default password default db test port 8123 # http连接端口 engine create…...
德语中第二虚拟式在主动态的形式,柯桥哪里可以学德语
德语中第二虚拟式在主动态的形式 1. 对于大多数的动词,一般使用这样的一般现在时时态: wrde 动词原形 例句:Wenn es nicht so viel kosten wrde, wrde ich mir ein Haus am Meer kaufen. 如果不花这么多钱,我会在海边买一栋房…...
[Python进阶] 消息框、弹窗:tkinter库
6.16 消息框、弹窗:tkinter 6.16.1 前言 应用程序中的提示信息处理程序是非常重要的部分,用户要知道他输入的资料到底正不正确,或者是应用程序有一些提示信息要告诉用户,都必须通过提示信息处理程序来显示适当的信息,…...
(免费领源码)java#Springboot#mysql装修选购网站99192-计算机毕业设计项目选题推荐
摘 要 随着科学技术,计算机迅速的发展。在如今的社会中,市场上涌现出越来越多的新型的产品,人们有了不同种类的选择拥有产品的方式,而电子商务就是随着人们的需求和网络的发展涌动出的产物,电子商务网站是建立在企业与…...
生活废品回收系统 JAVA语言设计和实现
目录 一、系统介绍 二、系统下载 三、系统截图 一、系统介绍 基于VueSpringBootMySQL的生活废品回收系统包含资源类型模块、资源品类模块、回收机构模块、回收机构模块、资源销售单模块、资源交易单模块、资源交易单模块,还包含系统自带的用户管理、部门管理、角…...
redhat/centos 配置本地yum源
- 详细步骤(首先需要将iso文件上传到服务器): 1. mkdir /media/cdrom #新建镜像文件挂载目录2. cd /usr/local/src #进入系统镜像文件存放目录3. ls #列出目录文件,可以看到刚刚上传的系统镜像文件4. mount -t iso9660 -o loop /usr/local/src/rhel-s…...
FLStudio2024汉化破解版在哪可以下载?
水果音乐制作软件FLStudio是一款功能强大的音乐创作软件,全名:Fruity Loops Studio。水果音乐制作软件FLStudio内含教程、软件、素材,是一个完整的软件音乐制作环境或数字音频工作站... FL Studio21简称FL 21,全称 Fruity Loops Studio 21,因此国人习惯叫…...
Java 音频处理,音频流转音频文件,获取音频播放时长
1.背景 最近对接了一款智能手表,手环,可以应用与老人与儿童监控,环卫工人监控,农场畜牧业监控,宠物监控等,其中用到了音频传输,通过平台下发语音包,发送远程命令录制当前设备音频并…...
OpenClaw隐私保护方案:百川2-13B量化模型本地处理敏感数据
OpenClaw隐私保护方案:百川2-13B量化模型本地处理敏感数据 1. 为什么我们需要本地化的隐私保护方案 去年我在处理一批客户调研数据时,曾不小心将包含身份证号的Excel表格上传到了某云端OCR服务。虽然及时删除了文件,但那种"数据已经不…...
CLIP-GmP-ViT-L-14图文匹配测试工具:在Dify平台构建零代码AI工作流
CLIP-GmP-ViT-L-14图文匹配测试工具:在Dify平台构建零代码AI工作流 你有没有遇到过这样的场景?运营团队每天需要审核海量的用户上传图片,判断它们是否与商品描述相符,或者内容安全团队要筛查社交媒体上的图片是否违规。传统做法要…...
前端新手入门:跟快马AI学用localStorage实现视频续播功能
今天想和大家分享一个特别适合前端新手练手的小项目:用localStorage实现视频续播功能。这个功能我们平时在各大视频网站都能见到,比如"继续观看"的提示,其实实现起来并不复杂,但涉及了前端开发中几个非常实用的知识点。…...
从LDF文件看LIN调度:为什么说‘可预测性’是汽车低端总线的灵魂?
从LDF文件看LIN调度:为什么说‘可预测性’是汽车低端总线的灵魂? 当你按下车窗按钮时,那个瞬间发生的升降动作背后,隐藏着一套精密的通信协议在默默运作。不同于高端车载网络CAN总线的复杂仲裁机制,LIN总线以其独特的&…...
CMD脚本开发避坑指南:为什么你的bat文件总是报错?
CMD脚本开发避坑指南:为什么你的bat文件总是报错? 每次双击运行精心编写的bat文件时,看到那个刺眼的"不是内部或外部命令"错误提示,是不是感觉血压瞬间飙升?作为Windows系统中最基础的自动化工具,…...
ComfyUI-Easy-Use:如何高效管理GPU资源并优化深度学习推理性能
ComfyUI-Easy-Use:如何高效管理GPU资源并优化深度学习推理性能 【免费下载链接】ComfyUI-Easy-Use In order to make it easier to use the ComfyUI, I have made some optimizations and integrations to some commonly used nodes. 项目地址: https://gitcode.c…...
别再为XCode证书头疼了!Unity打包iOS App的保姆级避坑指南(含iOSDeviceSupport下载)
Unity打包iOS应用终极避坑手册:从Xcode证书到真机调试全链路解决方案 每次看到Unity打包iOS时Xcode弹出的红色错误提示,是不是感觉血压瞬间飙升?作为经历过上百次打包踩坑的老司机,我决定把那些官方文档从不提及的"隐藏关卡&…...
Redux vs MVI:Android状态管理实战对比(附Kotlin代码示例)
Redux vs MVI:Android状态管理实战对比(附Kotlin代码示例) 在Android开发中,状态管理一直是构建可维护、可测试应用的核心挑战。随着应用复杂度提升,如何优雅地处理UI状态、用户交互和数据流,成为开发者必…...
3000+开源蓝图:革新性一站式戴森球计划工厂解决方案
3000开源蓝图:革新性一站式戴森球计划工厂解决方案 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints 面对戴森球计划中错综复杂的生产线布局,你是否曾…...
三步搞定QQ空间历史说说备份:GetQzonehistory完整使用指南
三步搞定QQ空间历史说说备份:GetQzonehistory完整使用指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 还在担心QQ空间的珍贵回忆会丢失吗?GetQzonehistory是…...
