DuckDB:使用DuckDB进行Python数据分析指南

duckdb学习-1 使用python操作duckdb,duckdb的数据导入导出,查询元信息 阅读详情
AI摘要

本教程介绍如何在Python中使用DuckDB进行数据分析。先设置环境,安装duckdb、NumPy和Pandas;接着生成示例CSV文件,然后通过多个示例SQL查询分析CSV文件数据,如按地区计算总销售额、找出畅销产品等;还能连接多个CSV文件。DuckDB是分析大型数据集的有用工具。

Duck
你是一名熟悉SQL和Python的开发者吗?如果是这样,你可能想开始使用DuckDB——一个进程内OLAP数据库——来进行数据分析。

SQL是查询数据库的语言,是你数据工具箱中最重要的语言。所以当你切换到Python时,你可能会考虑使用pandas——从各种来源读取数据到数据框中并进行分析。

但是,如果能够使用SQL查询pandas数据框以及CSV和Parquet文件等数据源,岂不是更好?DuckDB让你可以做到这一点,还能做更多。在本教程中,我们将学习如何在Python中使用DuckDB来分析数据。让我们开始吧!

设置环境

首先,创建并激活一个虚拟环境:

$ python3 -m venv v1
$ source v1/bin/activate

接下来安装duckdb:

因为我们还将生成示例数据来使用,所以我们还需要NumPy和Pandas:

$ pip3 install numpy pandas

使用DuckDB查询数据

快速安装完成后,我们可以继续进行一些数据分析。

注意:与数据库交互时通常使用连接。你可以使用duckdb.connect()与内存数据库和持久存储一起工作。

• 使用duckdb.connect()连接到仅在会话期间存在的内存数据库。这适用于快速分析,特别是当你不需要长期存储结果时。

• 要在会话和查询之间持久化数据,请像这样传递文件路径给connect()函数:duckdb.connect('my_database.db')。

但我们将会查询CSV文件,不需要连接对象。所以这只是一个提示,当你查询数据库时可以参考。

生成示例CSV文件

▶️你可以在这个GitHub仓库中找到本教程的代码。

我们将创建一个模拟销售数据集,包含几个csv文件,包括产品详细信息、价格、销售数量以及销售发生的地区。在你的项目文件夹中运行generate_csv.py来生成两个CSV文件:sales_data.csv和product_details.csv。

在DuckDB中使用CSV文件时,你可以将文件读入一个关系表:duckdb.read_csv(‘your_file.csv’),然后查询它。或者你可以直接与文件一起工作并像这样查询它们:

import duckdb

duckdb.sql("SELECT * FROM 'sales_data.csv' LIMIT 5").df()

你可以使用df()如示例中所示保存查询结果。

现在让我们运行一些(真正有帮助的)SQL查询来分析CSV文件中的数据。

示例查询1:按地区计算总销售额

为了了解哪个地区产生了最多的收入,我们可以计算每个地区的总销售额。你可以通过将每个产品的价格乘以销售数量,然后为每个地区求和来计算总销售额。

# 计算每个地区的总销售额(价格 * 销售数量)
query = """
SELECT Region, SUM(Price * Quantity_Sold) as Total_Sales
FROM 'sales_data.csv'
GROUP BY Region
ORDER BY Total_Sales DESC
"""
total_sales = duckdb.sql(query).df()

print("每个地区的总销售额:")
print(total_sales)

这个查询输出:

每个地区的总销售额:
  Region      Total_Sales
0   East  454590.49
1  South  426352.72
2   West  236804.52
3  North  161048.07

示例查询2:找出销售量最高的前5个产品

接下来,我们想要识别按销售数量计算的前5个畅销产品。这可以让我们了解哪些产品在所有地区的表现最好。

# 找出按销售数量计算的前5个畅销产品
query = """
SELECT Product_Name, SUM(Quantity_Sold) as Total_Quantity
FROM 'sales_data.csv'
GROUP BY Product_Name
ORDER BY Total_Quantity DESC
LIMIT 5
"""
top_products = duckdb.sql(query).df()

print("销售量最高的前5个产品:")
print(top_products)

这给出了销售量最高的前5个产品:

销售量最高的前5个产品:
  Product_Name  Total_Quantity
0   Product_42         99.0
1   Product_97         98.0
2   Product_90         96.0
3   Product_27         94.0
4   Product_54         94.0

示例查询3:按地区计算平均价格

我们还可以计算每个地区销售产品的平均价格,以识别地区之间的任何价格差异。

# 计算每个地区销售产品的平均价格
query = """
SELECT Region, AVG(Price) as Average_Price
FROM 'sales_data.csv'
GROUP BY Region
"""
avg_price_region = duckdb.sql(query).df()

print("每个地区的平均价格:")
print(avg_price_region)

这个查询计算每个地区销售产品的平均价格,并按地区分组返回结果:

每个地区的平均价格:
  Region      Average_Price
0  North  263.119167
1   East  288.035625
2   West  200.139000
3  South  254.894722

示例查询4:按地区计算销售总量

为了进一步分析数据,我们可以计算每个地区销售产品的总量。这有助于我们看到哪个地区在销售量方面最活跃。

# 计算每个地区销售产品的总量
query = """
SELECT Region, SUM(Quantity_Sold) as Total_Quantity
FROM 'sales_data.csv'
GROUP BY Region
ORDER BY Total_Quantity DESC
"""
total_quantity_region = duckdb.sql(query).df()

print("每个地区销售的总量:")
print(total_quantity_region)

这个查询计算每个地区的销售总量,并按降序排序结果,显示哪个地区销售的产品最多:

每个地区销售的总量:
  Region  Total_Quantity
0  South       1714.0
1   East       1577.0
2   West       1023.0
3  North        588.0

示例查询5:连接CSV文件

DuckDB提供了几个高级功能,使其在数据分析中非常多功能。例如,你可以轻松地连接多个CSV文件以进行更复杂的查询,或者查询存储在磁盘上的大型数据集,而无需将它们全部加载到内存中。

这个SQL JOIN查询通过匹配公共列:Product_ID的行,将两个CSV文件,sales_data.csv和product_details.csv组合起来。

query = """
SELECT s.Product_Name, s.Region, s.Price, p.Manufacturer
FROM 'sales_data.csv' s
JOIN 'product_details.csv' p
ON s.Product_ID = p.Product_ID
"""
joined_data = duckdb.sql(query).df()

print(joined_data.head())

这应该输出:

     Product_Name  Region   Price   Manufacturer
0   Product_1  North  283.08  Manufacturer_4
1   Product_2   East  325.94  Manufacturer_3
2   Product_3   West   39.54  Manufacturer_2
3   Product_4  South  248.82  Manufacturer_4
4   Product_5   East  453.62  Manufacturer_5

总结

在本教程中,我们查看了如何使用DuckDB进行Python数据分析。

我们使用了CSV文件。但你可以以相同的方式使用parquet和JSON文件以及关系数据库。所以,是的,DuckDB是分析Python中大型数据集的有用工具,也是你的Python数据分析工具箱中相当有用的补充。

我建议在你的下一个数据分析项目中使用DuckDB。编码愉快!

简单易用的DuckDB数据库管理系统 现在有许多原因使公司开始在DuckDB上搭建产品,该数据库专为快速分析查询而设计,因此它针对大型数据集上的聚合、连接和复杂查询进行了优化,这些类型的查询通常在分析和报告中使用。简而言之,DuckDB将SQLite的简单易用性与专业列存储数据库的分析性能相结合,性能、简单性、功能和开源许可这些因素促使DuckDB在开发人员和数据分析师中越来越受欢迎。总之,DuckDB为需要快速和简单的数据分析能力的应用程序提供了易于使用的嵌入式分析数据库,它填补了分析处理领域的一个空白,而完整的数据库服务器则过于复杂。 阅读详情

相关推荐

探索DuckDB:快速上手和实用示例

DuckDB为数据分析提供了一个强大且轻量的解决方案,适用于需要处理大批量数据的快速任务。通过本文的介绍和示例,希望大家能更好地理解如何在实际项目中应用DuckDB。

ahdfwcevnhrtds的博客 1659

Python使用DuckDB数据库

Python使用DuckDB数据库

iounce 6224

ThinkAdmin后台Getshell

通过文件包含或者图片马的方式Getshell。修改其可允许的文件类型,php不允许,可添加。系统管理->系统参数配置->本地服务器存储。

hot_milk1的博客 1865

DuckDB在Python中的基本使用

DuckDB具有极强的单机数据分析性能表现,功能丰富,具有诸多拓展插件,且除了默认的SQL查询方式外,还非常友好地支持在Python、R、Java、Node.js等语言环境下使用,特别是在Python中使用非常的灵活方便。

小龙在线 1778

Android手机免root玩转Kali NetHunter:Termux保姆级安装指南(附Kex VNC配置)

本文提供了一份详细的Android手机免root安装Kali NetHunter的保姆级指南。通过使用Termux终端模拟器,用户无需解锁Bootloader或获取root权限,即可在普通安卓设备上部署完整的Kali Linux渗透测试环境。教程涵盖了从环境准备、NetHunter核心安装到配置Kex VNC实现图形桌面访问的全过程,并附带了电脑投屏与常见问题解决方案,旨在打造一个便携的移动安全学习与测试平台。

weixin_29208327的博客 302

P4VASP的安装 & 使用P4VASP画DOS(态密度)图

P4vasp 下载: 链接:https://pan.baidu.com/s/1JIptQVSFSopQls9CiSIoVA 提取码:sbhi 由于是免安装版本,直接右击解压即可,将出现以下文件: 双击既可运行P4vasp: 关于P4vasp的基本使用(使用P4vasp画DOS) 这里以vasp计算为例 首先导出DOS计算的文件夹中的vasprun.xml文件 从p4vasp导入该文件进行作图(直接将vasprun.xml拖入p4vasp一般不会有反应) 具体步骤: 点击open: 在弹出的弹窗

qq_42168543的博客 5万+

DuckDB

内嵌数据库:不需要单独的服务器进程,直接在应用程序中嵌入。高性能:针对分析工作负载进行了优化。灵活的数据格式支持:支持CSV、Parquet等格式的数据读取和写入。与数据科学工具集成:可以与Pandas、NumPy等库无缝结合使用。DuckDB是一个功能强大且灵活的内嵌数据库,适合数据分析和处理。通过本文介绍的基础功能、进阶功能和高级教程,开发者可以轻松上手并熟练运用DuckDB进行各种数据操作。更多详细信息和示例请参考官方文档。

jixiaoyu0209的博客 4414

异常数据(outlier data)处理基于分位数法(箱图法、箱型法)替换及删除方案

异常数据(outlier data)处理基于分位数法(箱图法、箱型法)替换及删除方案 简单统计法: 这个原则有个条件:数据需要服从正态分布。 在3倍标准差原则下,异常值如超过3倍标准差,那么可以将其视为异常值。正负3的概率是99.7%,那么距离平均值3之外的值出现的概率为P(|x-u| > 3) <= 0.003,属于极个别的小概率事件。如果数据不服从正态分布,也可以用远离平均值的多少倍标准差来描述。 分位数法(箱图法、箱型法): 并不是说从高斯分布中抽出的所有数据都符..

data+scenario+science+insight 1795

整合 DuckDB 与 Python:本地高效分析的实用指南

DuckDB 是一款快速的内嵌式分析型数据库,专为现代数据分析而设计。它可直接在你的 Python 脚本中运行,无需单独的服务器,并且凭借其列式存储和向量化执行,在处理复杂查询时表现出色。随着数据处理能力变得愈发重要,本文将带你用 Python 构建基于 DuckDB 的数据分析流程,并深入探索其核心特性。让我们开始吧!

Xianxiancq的博客 1321

一文搞懂 JavaScript 模块化规范:CommonJS、AMD、ES6 Module

在现代 JavaScript 开发中,模块化是提升代码组织性和可维护性的关键。本文深入解析三种主流的模块化规范——CommonJS、AMD 和 ES6 Module。

Allen- 3479

CentOS 7 Linux yum 安装 Docker,解决 Docker 镜像拉取失败问题

本文详细介绍了在 CentOS 7 系统上通过 yum 安装 Docker 的完整流程,包括卸载旧版本、配置阿里云国内镜像源、安装 Docker 及其组件、设置日志限制等关键步骤。针对国内用户常见的 Docker 镜像拉取失败问题,提供了两种实用解决方案:配置镜像加速器或通过代理访问官方源,并附带验证方法与排错指南,帮助读者高效完成 Docker 环境部署。

寒水馨 · 轻量级技术文档 · hanshuixin.org 1718

Python+DuckDB 轻量数据分析指南:SQL 查询 + 数据可视化实战

本文介绍了DuckDB作为轻量级嵌入式OLAP数据库在Python数据分析中的应用。DuckDB无需部署、支持SQL直接查询CSV/Parquet文件,与pandas/matplotlib无缝衔接。文章详细讲解了从环境配置到完整分析流程的实现方法,包含:1) DuckDB核心原理与安装;2) 数据读取的两种方式;3) 典型SQL分析场景示例;4) 结果可视化实现;5) 常见问题解决方案。该方案具有开箱即用、性能优异的特点,相比传统方法查询速度提升3-10倍,特别适合中小型数据集的分析场景,能显著降低数据分析

jingpide9527的博客 1322

YOLOv11涨点改进| CVPR 2026 |独家创新首发、特征融合改进篇| 引入FAAFusion傅里叶角对准融合模块,促进高低频特征融合,增强模型在小目标、密集目标检测和旋转目标检测任务高效涨点

🔥本文提出FAAFusion傅里叶角对准融合模块,用于改进YOLOv11网络模型。该模块通过在特征金字塔融合阶段对齐高低层特征的方向信息,缓解传统FPN直接融合带来的方向冲突问题。FAAFusion利用傅里叶旋转等变性原理,在频域估计主方向并进行特征对齐,显著提升了多尺度特征表达的一致性与有效性。实验表明,该方法在DOTA等遥感数据集上取得了新的最先进水平,特别适用于旋转目标检测任务。文章详细介绍了模块原理、结构优势,并提供了三种不同的YOLOv11改进配置方案和完整的核心代码实现。

Ai缝合怪、助力小伙伴高效发论文 153

从“找数据”到“用数据”:现代量化数据平台应该具备的 5 个关键特性

📌 摘要 / 快速解答 现代量化数据平台的核心价值已从数据获取转向高效使用。本文揭示了区分"玩具级数据源"与"工业级平台"的5个关键特性:多市场统一接口、服务器端复权、原生分析生态集成、高性能并发及稳定性保障。通过QuantDash的实践案例(pip install quantdash),展示了统一代码后缀(.SH/.US/.HK等)和原生Pandas/Polars支持如何解决行业痛点。文章包含可直接运行的代码示例,并特别警示回测中前复权导致的未来函数风险,建议使用后复权或独立除权因子处理。

quantdash_cc的博客 541

156、手机摄像头模组结构拆解:从保护盖到 FPC 连接器的完整装配剖面

本文深入解析手机摄像头模组结构设计要点。作者结合项目经验,指出保护盖密封胶在低温收缩会导致边缘漏光问题,强调结构细节比算法参数更关键。文章逐层拆解模组组件:保护盖厚度需平衡抗冲击与光学性能;镜筒内镜片组装配顺序和公差控制直接影响成像质量;IR滤光片厚度公差±0.02mm会改变红外截止波长;CSP封装需注意金线加固;FPC连接器的信号完整性和机械可靠性设计。最后给出5条实用建议,包括密封胶选型、镜片对位检测等,强调模组结构设计是"一票否决制"的基础工程。(149字)

sundong_81的博客 105

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

2024年Python盘点:从环境配置到AI应用的关键趋势

编程语言的学习总绕不开环境搭建与基础语法,而Python凭借简洁的语法和庞大的生态,成为数据科学、自动化脚本、Web开发等领域的首选工具。其核心原理在于将复杂逻辑封装为模块与库,通过解释器与虚拟环境实现项目隔离,从而提升开发效率与可维护性。在技术价值层面,Python生态持续演进,版本性能优化、类型注解普及以及包管理器uv的崛起,让工程化能力显著增强。应用场景上,数据分析、爬虫、量化交易以及AI应用开发成为主流方向,其中AI工作流更推动了Python作为“AI操作系统”的普及。本文结合2024年实际变化,从

weixin_31742871的博客 266

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

DuckDB Engine 使用指南

DuckDB Engine 使用指南 项目介绍 DuckDB Engine 是一个基于 DuckDB 的轻量级 SQLAlchemy 驱动,旨在提供对这个高性能嵌入式数据库的无缝支持。它让开发者能够利用 SQLAlchemy 的 ORM 功能来操作 DuckDB 数据库,享受其便捷性及强大的关系型数据处理能力。此项目由 Mause 开发并维护,遵循 MIT 许可协议。 项目快速启动 安装 首先,确...

gitblog_00552的博客 1007

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

duckdb使用详解

本文摘要: DuckDB是一款开箱即用的列式数据库,支持完整SQL功能,特别适合本地数据分析。安装方式推荐下载CLI版本(Windows/macOS/Linux),解压即可使用,也可通过Docker运行。DuckDB具有以下核心特点:1)无需部署服务端;2)支持标准SQL语法;3)采用列式存储和向量化引擎,处理性能优异;4)可直接读取CSV/Parquet/JSON等多种文件格式。文章还演示了使用Python生成销售测试数据,包含订单、客户、产品等维度,为后续DuckDB功能演示做准备。该数据库适合数据科学

XiaoCai 4800

数据分析新选择:Python与DuckDB高效协作

数据分析新选择:Python与DuckDB高效协作

我是 二川兄,对Web开发、GIS开发、3D模型、机器学习、面试技巧等方面都有一些涉猎~ 欢迎您加入技术交流圈!你可以在我的文章末尾找到我~ 2210

告别Excel卡顿?Python数据分析神器 DuckDB 保姆级入门指南

本文介绍了Python数据分析工具DuckDB的入门指南。DuckDB是一款无需配置服务器、运行速度快、可直接查询文件的"分析型SQLite",能轻松处理亿级数据。文章从安装开始,通过四个实战场景演示其核心功能:基本SQL查询、直接分析CSV文件、与Pandas无缝衔接以及数据持久化存储。特别展示了DuckDB如何解决Excel卡顿问题,实现高效数据统计和分析。最后提示了单进程锁定等注意事项。该工具特别适合需要快速处理本地数据的办公自动化场景。

weixin_42636075的博客 1559

深入了解DuckDB:使用Python进行高效数据分析

DuckDB为数据分析提供了一种高效且灵活的解决方案。通过正确的设置和使用,它可以显著提升数据处理的效率。DuckDB官方文档DuckDB GitHub主页Pythonduckdb包文档。

qq_29929123的博客 816

【亲测免费】 DuckDB Engine:为SQLAlchemy打造的DuckDB驱动

DuckDB Engine:为SQLAlchemy打造的DuckDB驱动 项目介绍 duckdb_engine 是一个为 DuckDB 数据库设计的 SQLAlchemy 驱动。DuckDB 是一个高性能的嵌入式 SQL 数据库,专为 OLAP(在线分析处理)场景设计。duckdb_engine 使得开发者能够通过 SQLAlchemy 这一强大的 ORM 框架与 DuckDB 进行无缝集成,从而...

gitblog_00631的博客 1546

Python数据分析神器DuckDB保姆级使用入门指南

它是“分析型”的 SQLite:它是一个数据库,但不需要你配置服务器、账号密码。它只是一个文件,或者直接运行在你的内存里。它是 Excel 的超强替补:Excel 处理几十万行数据就开始吃力,而 DuckDB 可以轻松在普通的笔记本电脑上秒级处理亿级数据。它是 SQL 的练习场:它支持标准的 SQL 语法,非常适合学习数据库查询。核心优势:无服务器(Serverless)即可使用,无需后台服务。列式存储(Columnar):专门为分析统计设计,做聚合运算(求和、平均值)比传统数据库快几十倍。

qq360737395的博客 334

DuckDB for Python: A beginner‘s guide

【代码】DuckDB for Python: A beginner‘s guide。

allway2的博客 1036

DuckDB入门

DuckDB客户端(或前端)↓ 本地文件访问DuckDB 文件数据库项目是否具备❌ 无官方 Chart嵌入式部署✅ 支持REST 接口服务✅ 推荐自行封装K8s 运行支持✅ 可运行 API 容器持久化支持✅ 使用 PVC 存储.duckdb文件。

喝醉酒的小白 2916

DuckDB全面挑战SQLite

如果查看 DuckDB 的网站,在其主页上看到的第一件事就是:DuckDB 是一个进程内 SQL OLAP 数据库管理系统。让我们尝试解读这句话,因为它包含相关信息。• 进程内 SQL 意味着 DuckDB 的功能在应用程序中运行,而不是在应用程序连接的外部进程中运行。换句话说:没有客户端发送指令,也没有服务器读取和处理它们。与 SQLite 的工作方式相同,而 PostgreSQL、MySQL……则不然。• OLAP 代表在线分析处理,微软将其定义为组织大型业务数据库并支持复杂分析的技术。

Rocky006的博客 7531
上一篇: DuckDB:为什么选择DuckDB
下一篇: DuckDB:在Apache Arrow上使用SQL
Whoisbug
博客等级 码龄9年 894粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值