添加微訊號 " CNFeffery " 備註 " 數據分析 " 加 入技術交流群
❝
本文完整程式碼及附件已上傳至我的
Github
倉庫https://github.com/CNFeffery/DataScienceStudyNotes
1 簡介
大家好我是費老師,就在幾天前,經過六年多的持續開發叠代,著名的開源高效能分析型資料庫
DuckDB
釋出了其
1.0.0
正式版本。
DuckDB
具有極強的單機數據分析效能表現,功能豐富,具有諸多拓展外掛程式,且除了預設的
SQL
查詢方式外,還非常友好地支持在
Python
、
R
、
Java
、
Node.js
等語言環境下使用,特別是在
Python
中使用非常的靈活方便,今天的文章,費老師我就將帶大家一起快速了解
DuckDB
在
Python
中的常見使用姿勢😎~
2 DuckDB在Python中的使用
DuckDB
的定位是嵌入式關系型資料庫,在
Python
中安裝起來非常的方便,以當下最主流的開源
Python
環境管理工具
mamba
為例,直接在終端中執行下列命令,我們就一步到位的完成了對應演示虛擬環境的建立,並在環境中完成了
python-duckdb
、
jupyterlab
、
pandas
、
polars
等相關分析工具的安裝:
mamba create -n duckdb-demo python=3.9 -y && mamba activate duckdb-demo && mamba install python-duckdb jupyterlab pandas polars pyarrow -y
2.1 數據集的匯入
2.1.1 直接匯入檔
作為一款數據分析工具,能夠方便靈活的匯入各種格式的數據非常重要,
DuckDB
預設可直接匯入
csv
、
parquet
、
json
等常見格式的檔,我們首先使用下列程式碼生成具有五百萬行記錄的簡單範例數據,並分別匯出為
csv
和
parquet
格式進行比較:
# 利用pandas生成範例數據檔
import numpy as np
import pandas as pd
generated_df = pd.DataFrame(
{
'類別': np.random.choice(list('ABCDEF'), 5000000),
'數值': np.round(np.random.uniform(0, 1000000, 5000000), 3)
}
)
# 分別匯出為csv、parquet格式
generated_df.to_csv('./demo_data.csv', index=False)
generated_df.to_parquet('./demo_data.parquet')
針對兩種格式的檔,分別比較預設情況下
DuckDB
、
pandas
、
polars
的讀取速度:
csv
格式
parquet
格式
可以看到,無論是對比
pandas
還是
polars
,
DuckDB
的檔讀取效能都是大幅領先甚至碾壓級的⚡。
除此之外,
DuckDB
也可以透過
SQL
語句的方式進行等價操作:
2.1.2 讀取其他框架的數據物件
除了預設可直接讀取少數幾種常見數據格式外,
DuckDB
在
Python
中還支持直接以執行
SQL
語句的方式,直接讀取
pandas
、
polars
等框架中的數據框,這一點可太強大了,意味著只要是
pandas
、
polars
等框架可以讀取的格式,
DuckDB
都可以直接「拿來吧你」🤣:
2.2 執行分析運算
DuckDB
作為一款關系型資料庫,其執行分析運算最直接的方式就是寫
SQL
,針對
DuckDB
預設讀取到記憶體中的物件(
DuckDB
中稱作
「關系」
):
我們可以透過
duckdb.sql()
直接將關系當作表名,書寫
SQL
語句進行查詢分析,下面是一些簡單的例子:
比較一下與
pandas
、
polars
之間執行相同任務的耗時差異,
DuckDB
依舊是碾壓級的存在👍:
2.3 計算結果轉換
DuckDB
預設內建的檔寫出介面比較少,依舊是只針對
csv
、
parquet
等主流格式具有相應的
write_parquet()
、
write_csv()
可以直接匯出檔,但是針對
Python
,
DuckDB
提供了多樣化的數據轉換介面,可以快捷高效地將計算結果轉換為
Python
物件、
pandas
數據框、
polars
數據框、
numpy
陣列等常用格式:
基於此,就不用擔心透過
DuckDB
計算的數據結果不好匯出為其他各種格式檔了~
如果你恰好需要轉出為
csv
、
parquet
等格式,那麽直接使用
DuckDB
的檔寫出介面,效能依舊是非常強大的:
csv
格式
parquet
格式
更多有關
DuckDB
在
Python
中套用的內容,請移步官方文件(
https://duckdb.org/docs/api/python/overview
),費老師我也會在之後持續的分享
DuckDB
相關教程文章,歡迎持續關註,一起來熟練掌握這款數據分析利器😉。
以上就是本文的全部內容,歡迎在評論區與我們進行討論~
加入知識星球 【我們談論數據科學】
600+ 小夥伴一起學習!
· 推薦閱讀 ·