譯者 | 布加迪
Python/ target=_blank class=infotextkey>Python龐大的數據科學工具生態系統對用戶有很大的吸引力。生態系統如此龐大而豐富的唯一缺點是,有時最好的工具可能會被忽視。
下面介紹了其中幾款面向Python的最優秀的或不太知名的數據科學項目。Polars等一些項目得到了比以前更多的關注,但依然值得更廣泛的關注,ConnectorX等其他工具則是隱藏的瑰寶。
1.ConnectorX
大部分數據位于數據庫的某個地方,但計算操作通常在數據庫外面進行。為實際工作從數據庫倒騰數據可能會減慢速度。ConnectorX將數據從數據庫加載到Python中的許多常見數據整理工具中,并通過盡量減少要完成的工作量來保持高速度。
像后面討論的Polars一樣,ConnectorX在其核心使用Rust庫。這便于優化,比如說能夠在分區的同時從數據源加載數據。PostgreSQL中的數據可以通過指定分區列來加載。
除了PostgreSQL外, ConnectorX還支持從MySQL/MariaDB、SQLite、Amazon Redshift、Microsoft SQL Server、Azure SQL以及Oracle讀取數據。結果可以匯集到Pandas或PyArrow,或者通過PyArrow匯集到Modin、Dask或Polars。
2.DuckDB
使用Python的數據科學人員應該了解SQLite,這是一種用Python打包的小巧、但功能強大且快速的關系數據庫。由于它作為進程內庫來運行、而不是作為單獨的應用程序來運行,因此屬于輕量級,且響應迅速。
DuckDB有點像有人回答這個問題:“如果我們設計面向OLAP的SQLite,會怎么樣?”與其他OLAP數據庫引擎一樣,它使用列式數據存儲,并針對長時間運行的分析查詢工作負載進行了優化。但是它提供了您期望從傳統數據庫獲得的所有功能,比如ACID事務。而且沒有單獨的軟件套件需要配置。您使用單單一個pip install命令,即可在Python環境中讓它運行起來。
DuckDB可以直接攝取采用CSV、JSON或Parquet格式的數據。為了提高效率,還可以根據鍵(比如按年和按月)將生成的數據庫劃分為多個物理文件。查詢起來與任何其他基于SQL的關系數據庫相似,但擁有額外的內置特性,比如能夠獲取數據的隨機樣本或構造窗口函數。
DuckDB還有一小批實用的擴展,包括全文搜索、Excel導入/導出、直接連接到SQLite和PostgreSQL、Parquet文件導出以及支持許多常見的地理空間數據格式和類型。
3.Optimus
最繁瑣的工作之一就是清理和準備數據,用于以DataFrame為中心的項目。Optimus是一種一體化工具集,可用于加載、探索和清理數據,以及將數據寫回眾多數據源。
Optimus可以使用Pandas、Dask、CUDF(及Dask + CUDF)、Vaex或Spark作為底層數據引擎。數據可以從Arrow、Parquet、Excel、各種常見的數據庫源或平面文件格式(比如CSV和JSON)加載,并保存成這些格式。
數據操作API類似Pandas,但添加了.rows()和.cols()訪問器,以便易于執行對數據框排序、按列值篩選、根據標準更改數據或根據某些標準縮小操作范圍之類的操作。Optimus還隨帶處理器,用于處理常見的實際數據類型,比如電子郵件地址和URL。
Optimus可能存在的一個問題是,它仍在積極開發中,但上一次正式發布是在2020年。這意味著它可能不像您堆棧中的其他組件那樣是最新的。
4.Polars
如果您花費大量時間來處理DataFrame,并且對Pandas的性能限制感到沮喪,不妨使用Polars。這個面向Python的DataFrame庫提供了類似Pandas的便捷語法。
不過與Pandas不同的是,Polars使用了一個用Rust編寫的庫,可以直接最大限度地利用您的硬件。您不需要使用特殊語法來利用并行處理或SIMD等提升性能的功能,都是自動可以利用的。就連像從CSV文件讀取這樣的簡單操作也更快了。
Polars還提供了即時和延遲執行模式,因此查詢可以立即執行,也可以延遲到需要時執行。它還提供了流式API,用于增量處理查詢,不過許多函數還不能使用流式API。而Rust開發人員可以使用pyo3制作自己的Polars擴展。
5.Snakemake
數據科學工作流很難建立,更難以一致的、可預測的方式建立。Snakemake的創建就是為了實現這一點:在Python中自動建立數據分析機制,同時確保其他人都能得到與您相同的結果。許多現有的數據科學項目都依賴Snakemake。數據科學工作流中的不定因素越多,您就越有可能受益于用Snakemaker自動化處理工作流。
Snakemake工作流類似GNU make工作流:您用規則定義想要創建的東西,這些規則定義了它們接受什么、輸出什么以及執行什么命令來做到這一點。工作流規則可以是多線程的(假設這會給它們帶來好處),配置數據可以從JSON/YAML文件通過管道導入。您還可以在工作流中定義函數來轉換用于規則中的數據,并將在每個步驟采取的操作寫入到日志。
Snakemake作業旨在可移植——它們可以部署到任何Kube.NETes管理的環境中,或部署到特定的云環境中,比如google Cloud Life Sciences或AWS上的Tibanna。工作流可以被“凍結”,以使用一些具體的軟件包,并且任何成功執行的工作流都可以自動生成單元測試,并加以存儲。若是長期存檔,您可以將工作流存儲為打包文件(tarball)。
原文標題:5 newer data science tools you should be using with Python,作者:Serdar Yegulalp