你是一名熟悉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(