成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

別再用Pandas處理大數據了!現在你擁有更好的選擇

大數據 數據分析
眾所周知,Pandas是最好的探索性數據分析工具之一。但它并非對于每個工作來說都是最佳選擇,大數據處理就與它“氣場不合”。

本文轉載自公眾號“讀芯術”(ID:AI_Discovery)

眾所周知,Pandas是最好的探索性數據分析工具之一。但它并非對于每個工作來說都是最佳選擇,大數據處理就與它“氣場不合”。

[[326711]]

Pandas并不具備多處理器,并且處理較大的數據集速度很慢。筆者消耗在等待Pandas讀取一堆文件或對其進行匯總計算上的時間太多太多了。最近,筆者發現了一個更好的工具可以更新數據處理管道,使這些CPU內核正常工作!

筆者使用該工具進行繁重的數據處理,例如讀取包含10 G數據的多個文件,對其進行過濾并匯總。數據處理工作結束之后,再將結果保存到一個較小的適用于Pandas的CSV文件中,然后繼續對Pandas進行探索性數據分析。這就方便許多啦,一起來認識認識這個新工具吧!

認識Dask 

別再用Pandas處理大數據了!現在你擁有更好的選擇

Dask提供了高級并行性的分析功能,得以擁有大規模處理數據的性能。適用于Dask的算法工具包有numpy, pandas和sklearn。

Dask是一個開源且免費的工具。它使用現有的PythonAPI和數據結構來簡化在Dask支持的等效項之間的切換。它使簡單的事情變得更容易,讓復雜的事情變得可能。

Pandas vs Dask

來看一個實際的例子。在工作中,我們通常會得到一堆需要分析的文件。下面模擬筆者的工作日,并創建10個具有100K條目的文件(每個文件有196 MB)。

  1. fromsklearn.datasets import make_classification 
  2. import pandas as pdfor i in range(1, 11): 
  3.     print('Generating trainset %d' % i) 
  4.     x, y =make_classification(n_samples=100_000n_features=100
  5.     df = pd.DataFrame(data=x
  6.     df['y'] = y 
  7.     df.to_csv('trainset_%d.csv' % i,index=False

先用Pandas讀取這些文件并測算時間。Pandas不支持本地glob,因此需要循環讀取文件。

  1. %%timeimport globdf_list = [] 
  2. for filename in glob.glob('trainset_*.csv'): 
  3.     df_ = pd.read_csv(filename) 
  4.     df_list.append(df_) 
  5. df = pd.concat(df_list) 
  6. df.shape 

Pandas花了16秒讀取文件。

  1. CPU times: user 14.6 s, sys:1.29 s, total: 15.9 s 
  2. Wall time: 16 s 

想象一下如果文件擴大100倍,Pandas可能就無能為力了,你甚至無法用Pandas讀取它們。 

[[326713]] 
圖源:unsplash

而Dask可以處理無法讀入內存的數據,它會將數據分成多個塊并指定任務鏈。現在我們來計算一下Dask加載這些文件需要多長時間。

  1. importdask.dataframe as dd%%time 
  2. df = dd.read_csv('trainset_*.csv')CPU times: user 154 ms, sys: 58.6 ms, total:212 ms 
  3. Wall time: 212 ms 

只要154 ms! 這是怎么做到的?事實上,這個時間是不準確的。Dask延遲了執行模式。它僅在需要時才進行計算。定義執行圖,Dask得以優化任務的執行,并重復該實驗。此外,Dask的read_csv函數在本機使用glob。

  1. %%timedfdd.read_csv('trainset_*.csv').compute()CPU times: user 39.5 s, sys: 5.3 s,total: 44.8 s 
  2. Wall time: 8.21 s 

計算功能強制Dask返回結果,Dask讀取文件的速度是Pandas的兩倍。

Pandas vs Dask CPU使用率

Dask是否用到了所提供的所有CPU核心功能?比較一下讀取文件時Pandas和Dask之間的CPU使用率就知道了,看看代碼是否與上面的相同。 

別再用Pandas處理大數據了!現在你擁有更好的選擇
讀取文件時Pandas的CPU使用情況
別再用Pandas處理大數據了!現在你擁有更好的選擇
讀取文件時Dask的CPU使用情況

我們可以看到,Pandas和Dask在讀取文件時的多處理差異很明顯。

究竟發生了什么?

Dask的數據框架由多個Pandas的數據框架組成,按索引劃分。當使用Dask執行read_csv函數時,多個進程將讀取一個文件,甚至能夠被可視化為執行圖。

  1. exec_graphdd.read_csv('trainset_*.csv') 
  2. exec_graph.visualize() 
別再用Pandas處理大數據了!現在你擁有更好的選擇

讀取多個文件時,Dask執行速度較慢。

安裝方法

要安裝Dask,只需運行:

  1. python-m pip install "dask[complete]" 

Dask的缺點

既然Dask這么出色,我們能否直接用它取代Pandas呢?哪有這么簡單的事兒。只有來自Pandas的某些特定功能,才能被遷移到Dask。其中一些功能很難并行化,例如排序值和在未排序的列上設置索引。

Dask也并非是萬能的,用于不適合主內存的數據集是最適合它的“舞臺”。Dask是建立在Pandas之上的,Pandas運行緩慢,Dask則同樣運行緩慢。Dask在數據管道過程中僅僅是一個好用的工具,它不能替代其他庫。 

[[326715]]
圖源:unsplash

為你的工作挑選合適的工具,為你的工具尋找匹配的“舞臺”,這樣它才能夠盡情“表演”。

 

責任編輯:趙寧寧 來源: 讀芯術
相關推薦

2020-07-17 07:15:38

數據庫ID代碼

2025-05-19 04:00:00

2020-12-04 10:05:00

Pythonprint代碼

2020-12-02 11:18:50

print調試代碼Python

2021-06-09 06:41:11

OFFSETLIMIT分頁

2016-11-07 12:30:59

大數據互聯網

2023-10-26 16:33:59

float 布局前段CSS

2021-05-25 09:30:44

kill -9Linux kill -9 pid

2020-12-15 08:06:45

waitnotifyCondition

2021-01-29 11:05:50

PrintPython代碼

2020-12-03 09:05:38

SQL代碼方案

2019-03-12 14:48:29

路由器XBOXPS4

2024-12-26 07:47:20

2022-01-27 07:48:37

虛擬項目Django

2022-03-01 07:37:30

MySQL場景框架

2022-12-30 15:29:35

數據分析工具Pandas

2022-03-10 10:12:04

自動化腳本Bash

2025-05-15 03:00:00

2024-06-12 13:54:37

編程語言字符串代碼

2022-10-27 21:34:28

數據庫機器學習架構
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩喷潮 | 日韩在线观看一区二区三区 | 中文字幕一区二区三区四区 | 久久精品小视频 | 欧美日韩久久久久 | 人人cao| 日本黄色免费片 | 日本黄色大片免费 | 国产精品乱码一区二三区小蝌蚪 | 欧美日韩成人影院 | 成人免费视频观看视频 | 在线观看国产h | 亚洲v日韩v综合v精品v | 亚洲精品一区国语对白 | 91.色| 国产精品视频播放 | 免费在线黄 | 国产精品无码永久免费888 | 国产极品91 | 欧美日韩高清免费 | 欧美一级免费观看 | 国产中文字幕在线观看 | 国产在视频一区二区三区吞精 | 亚洲网站在线观看 | 日韩精品不卡 | 高清久久久 | 成人在线免费网站 | 欧美精品一区二区三区在线播放 | 91xxx在线观看 | 久国产精品 | 日韩免费看片 | 久久久久国产一区二区三区不卡 | 色综合99 | 亚洲综合大片69999 | 日韩和的一区二区 | 午夜精品一区二区三区在线视频 | 看片国产 | 国产黄色在线观看 | 亚洲美女在线视频 | 日韩欧美在线不卡 | 免费不卡av |