用于ETL的Python數據轉換工具
前幾天,我去Reddit詢問是否應該將Python用于ETL相關的轉換,并且壓倒性的回答是"是"。
但是,盡管我的Redditor同事熱心支持使用Python,但他們建議研究Pandas以外的庫-出于對大型數據集Pandas性能的擔憂。
經過研究,我發現了很多用于數據轉換的Python庫:有些改進了Pandas的性能,而另一些提供了自己的解決方案。
我找不到這些工具的完整列表,所以我想我可以使用所做的研究來編譯一個工具-如果我錯過了什么或弄錯了什么,請告訴我!
Pandas
總覽
Pandas當然不需要介紹,但是我還是給它一個介紹。
Pandas在Python中增加了DataFrame的概念,并在數據科學界廣泛用于分析和清理數據集。 它作為ETL轉換工具非常有用,因為它使操作數據非常容易和直觀。
優點
-
廣泛用于數據處理
簡單直觀的語法
與其他Python工具(包括可視化庫)良好集成
支持常見的數據格式(從SQL數據庫,CSV文件等讀取)
缺點
-
由于它會將所有數據加載到內存中,因此無法擴展,并且對于非常大(大于內存)的數據集來說可能是一個錯誤的選擇
進一步閱讀
-
10分鐘Pandas
Pandas機器學習的數據處理
Dask
總覽
根據他們的網站," Dask是用于Python并行計算的靈活庫。"
從本質上講,Dask擴展了諸如Pandas之類的通用接口,供在分布式環境中使用-例如,Dask DataFrame模仿了。
優點
-
可擴展性— Dask可以在本地計算機上運行并擴展到集群
能夠處理內存不足的數據集
即使在相同的硬件上,使用相同的功能也可以提高性能(由于并行計算)
最少的代碼更改即可從Pandas切換
旨在與其他Python庫集成
缺點
-
除了并行性,還有其他方法可以提高Pandas的性能(通常更為顯著)
如果您所做的計算量很小,則沒有什么好處
Dask DataFrame中未實現某些功能
進一步閱讀
-
Dask文檔
為什么每個數據科學家都應該使用Dask
Modin
總覽
Modin與Dask相似之處在于,它試圖通過使用并行性并啟用分布式DataFrames來提高Pandas的效率。 與Dask不同,Modin基于Ray(任務并行執行框架)。
Modin優于Dask的主要好處是Modin可以自動處理跨計算機核心分發數據(無需進行配置)。
優點
-
可伸縮性— Ray比Modin提供的更多
完全相同的功能(即使在相同的硬件上)也可以提高性能
最小的代碼更改即可從Pandas切換(更改import語句)
提供所有Pandas功能-比Dask更多的"嵌入式"解決方案
缺點
-
除了并行性,還有其他方法可以提高Pandas的性能(通常更為顯著)
如果您所做的計算量很小,則沒有什么好處
進一步閱讀
-
Modin文檔
Dask和Modin有什么區別?
Petl
總覽
petl包含了pandas的許多功能,但專為ETL設計,因此缺少額外的功能,例如用于分析的功能。 petl具有用于ETL的所有三個部分的工具,但本文僅專注于數據轉換。
盡管petl提供了轉換表的功能,但其他工具(例如pandas)似乎更廣泛地用于轉換和有據可查的文檔,因此petl對此吸引力較小。
優點
-
最小化系統內存的使用,使其能夠擴展到數百萬行
對于在SQL數據庫之間進行遷移很有用
輕巧高效
缺點
-
通過很大程度地減少對系統內存的使用,petl的執行速度會變慢-不建議在性能很重要的應用程序中使用
較少使用此列表中的其他解決方案進行數據處理
進一步閱讀
-
使用Petl快速了解數據轉換和遷移
petl轉換文檔
PySpark
總覽
Spark專為處理和分析大數據而設計,并提供多種語言的API。 使用Spark的主要優點是Spark DataFrames使用分布式內存并利用延遲執行,因此它們可以使用集群處理更大的數據集,而Pandas之類的工具則無法實現。
如果要處理的數據非常大,并且數據操作的速度和大小很大,Spark是ETL的理想選擇。
優點
-
可擴展性和對更大數據集的支持
就語法而言,Spark DataFrames與Pandas非常相似
通過Spark SQL使用SQL語法進行查詢
與其他流行的ETL工具兼容,包括Pandas(您實際上可以將Spark DataFrame轉換為Pandas DataFrame,從而使您可以使用各種其他庫)
與Jupyter筆記本電腦兼容
內置對SQL,流和圖形處理的支持
缺點
-
需要一個分布式文件系統,例如S3
使用CSV等數據格式會限制延遲執行,需要將數據轉換為Parquet等其他格式
缺少對數據可視化工具(如Matplotlib和Seaborn)的直接支持,這兩種方法都得到了Pandas的良好支持
進一步閱讀
-
Python中的Apache Spark:新手指南
PySpark簡介
PySpark文檔(尤其是語法)
值得一提
盡管我希望這是一個完整的列表,但我不希望這篇文章過長!
確實有很多許多用于數據轉換的Python工具,因此我包括了這一部分,至少是我錯過的其他項目(我可能會在本文的第二部分中進一步探討這些項目)。
結論
我希望這份清單至少可以幫助您了解Python必須提供哪些工具來進行數據轉換。 在進行了這項研究之后,我相信Python是ETL的優秀選擇-這些工具及其開發人員使它成為了一個了不起的平臺。
就像我在本文開頭提到的那樣,我不是該領域的專家-如果您有任何補充,請隨時發表評論!
謝謝閱讀!
聲明:免責聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,也不承認相關法律責任。如果您發現本社區中有涉嫌抄襲的內容,請發
送郵件至:operations@xinnet.com進行舉報,并提供相關證據,一經查實,本站將立刻刪除涉嫌侵權內容。本站原創內容未經允許不得轉載,或轉載時
需注明出處:新網idc知識百科