前幾天,我去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可以主動處置跨算計機核心分配數據(無需進行部運彩賠率ptt署)。
好處
-
可伸縮性— 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的優秀抉運彩 期限擇-這些器具及其開闢人員使它成為了一個了不得的平臺。
就像我在本文劈頭提到的那樣,我不是該領域的專家-假如您有任何增補,請隨時刊登批評!
謝謝瀏覽!