国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

一行代碼將Pandas加速4倍

大數(shù)據(jù)
Pandas是處理 Python 數(shù)據(jù)的首選庫。它易于使用,并且在處理不同類型和大小的數(shù)據(jù)時非常靈活。它有大量的函數(shù),使得操縱數(shù)據(jù)變得輕而易舉。

導讀

雖然Pandas的功能非常強大,但是對于大數(shù)據(jù)集來說,確實是很慢的。

雖然 panda 是 Python 中用于數(shù)據(jù)處理的庫,但它并不是真正為了速度而構(gòu)建的。了解一下新的庫 Modin,Modin 是為了分布式 panda 的計算來加速你的數(shù)據(jù)準備而開發(fā)的。

Pandas是處理 Python 數(shù)據(jù)的首選庫。它易于使用,并且在處理不同類型和大小的數(shù)據(jù)時非常靈活。它有大量的函數(shù),使得操縱數(shù)據(jù)變得輕而易舉。 

一行代碼將Pandas加速4倍
隨著時間的推移,各種Python包的流行程度

但是有一個缺點:對于較大的數(shù)據(jù)集來說,panda“慢”。

默認情況下,panda 使用單個 CPU 內(nèi)核作為單個進程執(zhí)行其函數(shù)。這對于較小的數(shù)據(jù)集工作得很好,因為你可能不會注意到速度上的差異。但是,隨著數(shù)據(jù)集越來越大,計算量越來越大,如果只使用單個 cpu 核,速度會受到很大的影響。它在數(shù)據(jù)集上同一時間只能計算一次,但該數(shù)據(jù)集可以有數(shù)百萬甚至數(shù)十億行。

然而,大多數(shù)用于數(shù)據(jù)科學的現(xiàn)代機器都有至少 2 個 CPU 核。這意味著,以 2 個 CPU 核為例,在使用 pandas 時,50%或更多的計算機處理能力在默認情況下不會執(zhí)行任何操作。當你使用 4 核(現(xiàn)代 Intel i5)或 6 核(現(xiàn)代 Intel i7)時,情況會變得更糟。pandas 的設計初衷并不是為了有效利用這種計算能力。

Modin是一個新的庫,通過在系統(tǒng)所有可用的 CPU 核上自動分配計算來加速 pandas。有了它,對于任何尺寸的 pandas 數(shù)據(jù)數(shù)據(jù)集,Modin 聲稱能夠以 CPU 內(nèi)核的數(shù)量得到近乎線性的加速。

讓我們看看它是如何工作的,并通過一些代碼示例進行說明。

Modin 如何用 Pandas 并行計算

給定 pandas 中的 DataFrame ,我們的目標是以盡可能快的方式對其執(zhí)行某種計算或處理。可以用*.mean()取每一列的平均值,用groupby對數(shù)據(jù)進行分組,用drop_duplicates()*刪除所有重復項,或者使用其他任何內(nèi)置的 pandas 函數(shù)。

在前一節(jié)中,我們提到了 pandas 如何只使用一個 CPU 核進行處理。自然,這是一個很大的瓶頸,特別是對于較大的 DataFrames,計算時就會表現(xiàn)出資源的缺乏。

理論上,并行計算就像在每個可用的 CPU 核上的不同數(shù)據(jù)點上應用計算一樣簡單。對于一個 pandas 的 DataFrame,一個基本的想法是將 DataFrame 分成幾個部分,每個部分的數(shù)量與你擁有的 CPU 內(nèi)核的數(shù)量一樣多,并讓每個 CPU 核在一部分上運行計算。最后,我們可以聚合結(jié)果,這是一個計算上很 cheap 的操作。 

一行代碼將Pandas加速4倍

多核系統(tǒng)如何更快地處理數(shù)據(jù)。對于單核進程(左),所有10個任務都放在一個節(jié)點上。對于雙核進程(右圖),每個節(jié)點承擔5個任務,從而使處理速度加倍。

這正是 Modin 所做的。它將 DataFrame 分割成不同的部分,這樣每個部分都可以發(fā)送到不同的 CPU 核。Modin 在行和列之間劃分 DataFrame。這使得 Modin 的并行處理可擴展到任何形狀的 DataFrame。

想象一下,如果給你一個列多行少的 DataFrame。有些庫只執(zhí)行跨行分區(qū),在這種情況下效率很低,因為我們的列比行多。但是對于 Modin 來說,由于分區(qū)是跨兩個維度進行的,所以并行處理對于所有形狀的數(shù)據(jù)流都是有效的,不管它們是更寬的(很多列)、更長的(很多行),還是兩者都有。 

一行代碼將Pandas加速4倍

panda的DataFrame(左)存儲為一個塊,只發(fā)送到一個CPU核。Modin的DataFrame(右)跨行和列進行分區(qū),每個分區(qū)可以發(fā)送到不同的CPU核上,直到用光系統(tǒng)中的所有CPU核。

上面的圖是一個簡單的例子。Modin 實際上使用了一個“分區(qū)管理器”,它可以根據(jù)操作的類型改變分區(qū)的大小和形狀。例如,可能有一個操作需要整個行或整個列。在這種情況下,“分區(qū)管理器”將以它能找到的最優(yōu)方式執(zhí)行分區(qū)和分配到 CPU 核上。它是非常靈活的。

為了在執(zhí)行并行處理時完成大量繁重的工作,Modin 可以使用 Dask 或 Ray。它們都是使用 Python api 的并行計算庫,你可以選擇一個或另一個在運行時與 Modin 一起使用。Ray 目前是最安全的一個,因為它更穩(wěn)定 —— Dask 后端是實驗性的。

已經(jīng)有足夠的理論了。讓我們來看看代碼和速度基準測試!

Modin 速度基準測試

安裝 Modin 的最簡單的方法是通過 pip。下面的命令安裝 Modin、Ray 和所有相關的依賴項:

  1. pip install modin[ray] 

對于我們下面的例子和 benchmarks,我們使用了 Kaggle 的 CS:GO Competitive Matchmaking Data。CSV 的每一行都包含了 CS:GO 比賽中的一輪數(shù)據(jù)。

現(xiàn)在,我們嘗試使用最大的 CSV 文件(有幾個),esea_master_dmg_demo .part1.csv,它有 1.2GB。有了這樣的體量,我們應該能夠看到 pandas 有多慢,以及 Modin 是如何幫助我們加速的。對于測試,我使用一個 i7-8700k CPU,它有 6 個物理內(nèi)核和 12 個線程。

我們要做的第一個測試是使用 read_csv()讀取數(shù)據(jù)。Pandas 和 Modin 的代碼是完全一樣的。

  1. ### Read in the data with Pandasimport pandas as pds = time.time()df  
  2. = pd.read_csv("esea_master_dmg_demos.part1.csv")e =  
  3. time.time()print("Pandas Loading Time = {}".format(e-s))### Read in  
  4. the data with Modinimport modin.pandas as pds = time.time()df =  
  5. pd.read_csv("esea_master_dmg_demos.part1.csv")e =  
  6. time.time()print("Modin Loading Time = {}".format(e-s)) 

為了測量速度,我導入了time模塊,并在read_csv()之前和之后放置了一個time()。panda 將數(shù)據(jù)從 CSV 加載到內(nèi)存需要 8.38 秒,而 Modin 需要 3.22 秒。這是 2.6 倍的加速。對于只修改 import 語句來說,這不算太寒酸!

讓我們在 DataFrame 上做一些更復雜的處理。連接多個 DataFrames 是 panda 中的一個常見操作 — 我們可能有幾個或多個包含數(shù)據(jù)的 CSV 文件,然后必須一次讀取一個并連接它們。我們可以使用 panda 和 Modin 中的*pd.concat()*函數(shù)輕松做到這一點。

我們希望 Modin 能夠很好地處理這種操作,因為它要處理大量的數(shù)據(jù)。代碼如下所示。

  1. import pandas as pddf =  
  2. pd.read_csv("esea_master_dmg_demos.part1.csv")s = time.time()df =  
  3. pd.concat([df for _ in range(5)])e = time.time()print("Pandas Concat  
  4. Time = {}".format(e-s))import modin.pandas as pddf =  
  5. pd.read_csv("esea_master_dmg_demos.part1.csv")s = time.time()df =  
  6. pd.concat([df for _ in range(5)])e = time.time()print("Modin Concat  
  7. Time = {}".format(e-s)) 

在上面的代碼中,我們將 DataFrame 與自身連接了 5 次。pandas 在 3.56 秒內(nèi)完成了連接操作,而 Modin 在 0.041 秒內(nèi)完成,速度提高了 86.83 倍!看起來,即使我們只有 6 個 CPU 核心,DataFrame 的分區(qū)也有助于提高速度。

用于 DataFrame 清洗的 panda 函數(shù)是*.fillna()*函數(shù)。此函數(shù)查找 DataFrame 中的所有 NaN 值,并將它們替換為你選擇的值。panda 必須遍歷每一行和每一列來查找 NaN 值并替換它們。這是一個應用 Modin 的絕佳機會,因為我們要多次重復一個非常簡單的操作。

  1. import pandas as pddf =  
  2. pd.read_csv("esea_master_dmg_demos.part1.csv")s = time.time()df =  
  3. df.fillna(value=0)e = time.time()print("Pandas Concat Time =  
  4. {}".format(e-s))import modin.pandas as pddf =  
  5. pd.read_csv("esea_master_dmg_demos.part1.csv")s = time.time()df =  
  6. df.fillna(value=0)e = time.time()print("Modin Concat Time =  
  7. {}".format(e-s)) 

這次,Pandas 運行*.fillna()*用了 1.8 秒,而 Modin 用了 0.21 秒,8.57 倍的加速!

警告!

Modin 總是這么快嗎?

并不是這樣。

在有些情況下,panda 實際上比 Modin 更快,即使在這個有 5,992,097(近 600 萬)行的大數(shù)據(jù)集上也是如此。下表顯示了我進行的一些實驗中 panda 與 Modin 的運行時間。

正如你所看到的,在某些操作中,Modin 要快得多,通常是讀取數(shù)據(jù)并查找值。其他操作,如執(zhí)行統(tǒng)計計算,在 pandas 中要快得多。 

一行代碼將Pandas加速4倍

使用 Modin 的實用技巧

Modin 仍然是一個相當新的庫,并在不斷地發(fā)展和擴大。因此,并不是所有的 pandas 功能都被完全加速了。如果你在 Modin 中嘗試使用一個還沒有被加速的函數(shù),它將默認為 panda,因此不會有任何代碼錯誤或錯誤。

默認情況下,Modin 將使用計算機上所有可用的 CPU 內(nèi)核。在某些情況下,你可能希望限制 Modin 可以使用的 CPU 內(nèi)核的數(shù)量,特別是如果你希望在其他地方使用這種計算能力。我們可以通過 Ray 中的初始化設置來限制 Modin 可以訪問的 CPU 內(nèi)核的數(shù)量,因為 Modin 在后端使用它。

  1. import rayray.init(num_cpus=4)import modin.pandas as pd 

在處理大數(shù)據(jù)時,數(shù)據(jù)集的大小超過系統(tǒng)上的內(nèi)存(RAM)的情況并不少見。Modin 有一個特殊的標志,我們可以設置為“true”,這將使其進入“out of core”模式。這意味著 Modin 將使用你的磁盤作為你的內(nèi)存溢出存儲,允許你處理比你的 RAM 大得多的數(shù)據(jù)集。我們可以設置以下環(huán)境變量來啟用此功能:

  1. export MODIN_OUT_OF_CORE=true 

總結(jié)

這就是使用 Modin 加速 panda 函數(shù)的指南。只需修改 import 語句就可以很容易地做到這一點。希望你發(fā)現(xiàn) Modin 至少在一些情況下對加速 panda有用。

 

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2022-06-27 08:42:05

代碼sklearn機器學習

2022-10-27 16:03:57

2016-12-02 08:53:18

Python一行代碼

2014-02-12 13:43:50

代碼并行任務

2017-04-05 11:10:23

Javascript代碼前端

2022-04-09 09:11:33

Python

2018-03-08 11:43:18

PandasTB級數(shù)據(jù)Spark

2022-06-17 09:21:53

Pandas代碼透視表

2022-06-15 11:27:15

開源代碼項目

2021-07-27 10:10:21

CuPyNumpyPython

2022-05-26 08:12:39

PandasApply技巧

2022-09-25 00:07:18

Python圖形界面

2023-08-14 07:42:01

模型訓練

2018-09-19 15:46:51

編程語言Python編譯器

2017-04-13 19:20:18

Python代碼并行任務

2021-08-31 09:49:37

CPU執(zhí)行語言

2022-12-05 10:01:41

代碼模型

2023-03-16 16:18:09

PyTorch程序人工智能

2020-09-09 16:00:22

Linux進程

2020-08-19 10:30:25

代碼Python多線程
點贊
收藏

51CTO技術棧公眾號

成人福利视频在| 欧美日韩亚洲三区| 午夜小视频福利在线观看| 国模雨婷捆绑高清在线| 成人动漫中文字幕| 日本三级韩国三级久久| 久久久天堂国产精品女人| 国产理论电影在线| 日韩中文字幕视频| 国产成人1区| 欧洲在线视频一区| 久久久久久综合| 免费超碰在线| 久久大大胆人体| 欧美福利电影在线观看| 麻豆91av| 欧美视频在线观看免费| 国产韩日精品| 成人网址在线观看| 成人在线免费观看视频| 国产精品免费在线免费| 国产极品在线观看| 亚洲国产精品大全| 国产福利片在线观看| 在线精品91av| 国产激情视频在线观看| 亚洲毛片一区二区| 国语精品视频| 97久久精品国产| 欧美国产一级| 亚洲欧美国产制服动漫| 欧美成人国产| 91精品国产综合久久精品性色 | 欧美1区3d| 国内成+人亚洲| 欧美1区2区3区| 97视频中文字幕| 成人免费电影网址| 国产一区二区三区久久精品 | 91精品国产99| 成人直播大秀| 国产精品吹潮在线观看| 日韩电影在线观看完整免费观看| 欧美高清性猛交| 久久久久久久久久久久电影| 91av在线精品| 国产精品www994| 青青草免费在线视频观看| 国产日韩精品一区二区三区| julia京香一区二区三区| 欧美精品久久久久久久多人混战 | 日本道在线观看一区二区| 97电影在线| 日韩一区av在线| 99久久激情| 人妻av无码专区| 偷偷要91色婷婷| 国模冰冰炮一区二区| 91精品国产色综合| 免费中文字幕日韩欧美| 好男人www社区| 欧美色图12p| 99久久精品一区二区成人| 国产精品1区2区在线观看| 久久最新视频| 另类图片亚洲色图| 日韩欧美不卡在线观看视频| 日韩精品成人在线观看| 国产区二精品视| 日本一区二区在线不卡| 国产黄色小视频在线| 欧美疯狂xxxx大交乱88av| 日韩一级不卡| 少妇一级淫免费播放| 欧美一级欧美三级在线观看| 国产精品成人自拍| 亚洲国产一区二区精品视频| 一区二区三区四区亚洲| 欧美大片免费高清观看| 亚洲中国色老太| 国产三区在线成人av| 免费在线观看av电影| 国产精品流白浆视频| 99精品欧美一区| 中文av资源在线| 日本午夜在线亚洲.国产| 国产资源精品在线观看| 亚洲pron| 久久久久久国产精品三级玉女聊斋| 国产精品久久久免费| 成人福利资源| 日韩在线视频播放| 久久性天堂网| 香蕉自在线视频| 欧美精品日韩三级| 欧美一级一区| 亚洲成人av高清| 久久久久久久久久久91| 狠狠久久亚洲欧美| 色多多视频在线观看| 欧美一级大片在线观看| 成人黄色大片在线观看| 久草成色在线| 国产精品一区二区欧美黑人喷潮水| 18成人在线视频| 91麻豆精品一二三区在线| 一本色道久久综合亚洲精品婷婷| 一本一本久久a久久精品综合麻豆| 爱情电影网av一区二区| 一区二区三区不卡在线| 欧美情侣在线播放| 999久久久免费精品国产| 别急慢慢来1978如如2| 亚洲国产精品成人av| 先锋影音久久久| 爱爱爱免费视频在线观看| 国产日韩在线精品av| 亚洲一卡二卡三卡四卡无卡久久 | 亚洲福利视频网站| 影音先锋亚洲电影| 污污的网站在线观看| 国产精品直播网红| 亚洲成人午夜电影| 欧美h版在线| 欧美套图亚洲一区| 91天堂在线观看| 欧美特级www| 国产字幕视频一区二区| 超碰免费在线观看| 精品91免费| 91精品国产免费| 日韩和欧美一区二区| 成人免费高清观看| 欧美日韩一区二区三区电影| 精品伊人久久97| 99久久精品久久久久久清纯| 精品中文字幕一区二区三区| 国产高清视频网站| 国产精品海角社区在线观看| 亚洲成人av一区二区三区| 香蕉视频官网在线观看日本一区二区| 丝袜视频国产在线播放| 国产精品v欧美精品v日韩| 精品视频一区二区不卡| 久久性色av| 成人天堂yy6080亚洲高清| 少妇性饥渴无码a区免费| 久久久噜噜噜久久中文字免| 亚洲视频一区二区在线| 欧美肥老太太性生活| 色吊丝在线永久观看最新版本| 99影视tv| 亚洲国产精品电影| 久久综合国产精品| 国产精品色呦| 免费在线黄网| 国产区一区二区三区| 精品无人区太爽高潮在线播放 | 午夜伦理一区二区| 亚洲精品美女91| 中国色在线日|韩| 日韩一级免费在线观看| 国产精品久久久久久一区二区| 欧美在线观看视频在线| 精品一区二区三区免费观看| 一区二区亚洲视频| 视频在线观看你懂的| 亚洲三区在线| 海角国产乱辈乱精品视频| 精品久久香蕉国产线看观看亚洲| 一区二区毛片| 国产精品日本一区二区不卡视频| 一个人看的免费网站www视频| 精品国产乱码久久久久久郑州公司| 亚洲黄页网在线观看| www成人在线观看| 中文字幕亚洲精品乱码| 亚洲十八**毛片| h短视频大全在线观看| 天堂社区 天堂综合网 天堂资源最新版 | 波多野结衣欧美| 白白色在线发布| 亚洲精品中文字幕在线| 欧美亚洲成人精品| 欧美一级片在线| 亚洲欧洲精品一区二区精品久久久| 欧美午夜免费影院| www.欧美视频| 欧美成人高清在线| 丝袜老师办公室里做好紧好爽| 成人免费高清完整版在线观看| 亚洲人成伊人成综合网久久久 | 一区国产精品视频| 欧美视频国产精品| 成人黄页在线观看| 亚洲无吗在线| 国产调教精品| 成人欧美一区二区三区的电影| 蜜桃av成人| 国产精品97在线|