最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python Vaex實(shí)現(xiàn)快速分析100G大數(shù)據(jù)量

 更新時間:2023年03月14日 10:43:35   作者:朱衛(wèi)軍  
Vaex是一個開源的DataFrame庫,它可以對表格數(shù)據(jù)集進(jìn)行可視化、探索、分析,甚至機(jī)器學(xué)習(xí),這些數(shù)據(jù)集和你的硬盤驅(qū)動器一樣大。本文就來聊聊如何利用Vaex實(shí)現(xiàn)快速分析100G大數(shù)據(jù)量,需要的可以參考一下

pandas處理大數(shù)據(jù)的限制

現(xiàn)在的數(shù)據(jù)科學(xué)比賽提供的數(shù)據(jù)量越來越大,動不動幾十個G,甚至上百G,這就要考驗(yàn)機(jī)器性能和數(shù)據(jù)處理能力。

Python中的pandas是大家常用的數(shù)據(jù)處理工具,能應(yīng)付較大數(shù)據(jù)集(千萬行級別),但當(dāng)數(shù)據(jù)量達(dá)到十億百億行級別,pandas處理起來就有點(diǎn)力不從心了,可以說非常的慢。

這里面會有電腦內(nèi)存等性能的因素,但pandas本身的數(shù)據(jù)處理機(jī)制(依賴內(nèi)存)也限制了它處理大數(shù)據(jù)的能力。

當(dāng)然pandas可以通過chunk分批讀取數(shù)據(jù),但是這樣的劣勢在于數(shù)據(jù)處理較復(fù)雜,而且每一步分析都會消耗內(nèi)存和時間。

下面用pandas讀取3.7個G的數(shù)據(jù)集(hdf5格式),該數(shù)據(jù)集共有4列、1億行,并且計算第一行的平均值。我的電腦CPU是i7-8550U,內(nèi)存8G,看看這個加載和計算過程需要花費(fèi)多少時間。

數(shù)據(jù)集:

使用pandas讀取并計算:

看上面的過程,加載數(shù)據(jù)用了15秒,平均值計算用了3.5秒,總共18.5秒。

這里用的是hdf5文件,hdf5是一種文件存儲格式,相比較csv更適合存儲大數(shù)據(jù)量,壓縮程度高,而且讀取、寫入也更快。

換上今天的主角vaex,讀取同樣的數(shù)據(jù),做同樣的平均值計算,需要多少時間呢?

使用vaex讀取并計算:

文件讀取用了9ms,可以忽略不計,平均值計算用了1s,總共1s。

同樣是讀取1億行的hdfs數(shù)據(jù)集,為什么pandas需要十幾秒,而vaex耗費(fèi)時間接近于0呢?

這里主要是因?yàn)閜andas把數(shù)據(jù)讀取到了內(nèi)存中,然后用于處理和計算。而vaex只會對數(shù)據(jù)進(jìn)行內(nèi)存映射,而不是真的讀取數(shù)據(jù)到內(nèi)存中,這個和spark的懶加載是一樣的,在使用的時候 才會去加載,聲明的時候不加載。

所以說不管加載多大的數(shù)據(jù),10GB、100GB...對vaex來說都是瞬間搞定。美中不足的是,vaex的懶加載只支持HDF5, Apache Arrow,Parquet, FITS等文件,不支持csv等文本文件,因?yàn)槲谋疚募]辦法進(jìn)行內(nèi)存映射。

可能有的小伙伴不太理解內(nèi)存映射,下面放一段解釋,具體要弄清楚還得自行摸索:

內(nèi)存映射是指硬盤上文件的位置與進(jìn)程邏輯地址空間中一塊大小相同的區(qū)域之間的一一對應(yīng)。這種對應(yīng)關(guān)系純屬是邏輯上的概念,物理上是不存在的,原因是進(jìn)程的邏輯地址空間本身就是不存在的。在內(nèi)存映射的過程中,并沒有實(shí)際的數(shù)據(jù)拷貝,文件沒有被載入內(nèi)存,只是邏輯上被放入了內(nèi)存,具體到代碼,就是建立并初始化了相關(guān)的數(shù)據(jù)結(jié)構(gòu)(struct address_space)。

什么是vaex

前面對比了vaex和pandas處理大數(shù)據(jù)的速度,vaex優(yōu)勢明顯。雖然能力出眾,不比pandas家喻戶曉,vaex還是個剛出圈的新人。

vaex同樣是基于python的數(shù)據(jù)處理第三方庫,使用pip就可以安裝。

官網(wǎng)對vaex的介紹可以總結(jié)為三點(diǎn):

  • vaex是一個用處理、展示數(shù)據(jù)的數(shù)據(jù)表工具,類似pandas;
  • vaex采取內(nèi)存映射、惰性計算,不占用內(nèi)存,適合處理大數(shù)據(jù);
  • vaex可以在百億級數(shù)據(jù)集上進(jìn)行秒級的統(tǒng)計分析和可視化展示;

vaex的優(yōu)勢在于:

  • 性能:處理海量數(shù)據(jù),109 行/秒;
  • 惰性:快速計算,不占用內(nèi)存;
  • 零內(nèi)存復(fù)制:在進(jìn)行過濾/轉(zhuǎn)換/計算時,不復(fù)制內(nèi)存,在需要時進(jìn)行流式傳輸;
  • 可視化:內(nèi)含可視化組件;
  • API:類似pandas,擁有豐富的數(shù)據(jù)處理和計算函數(shù);
  • 可交互:配合Jupyter notebook使用,靈活的交互可視化;

安裝vaex

使用pip或者conda進(jìn)行安裝:

讀取數(shù)據(jù)

vaex支持讀取hdf5、csv、parquet等文件,使用read方法。hdf5可以惰性讀取,而csv只能讀到內(nèi)存中。

vaex數(shù)據(jù)讀取函數(shù):

數(shù)據(jù)處理

有時候我們需要對數(shù)據(jù)進(jìn)行各種各樣的轉(zhuǎn)換、篩選、計算等,pandas的每一步處理都會消耗內(nèi)存,而且時間成本高。除非說使用鏈?zhǔn)教幚恚菢舆^程就很不清晰。

vaex則全過程都是零內(nèi)存。因?yàn)樗奶幚磉^程僅僅產(chǎn)生expression(表達(dá)式),表達(dá)式是邏輯表示,不會執(zhí)行,只有到了最后的生成結(jié)果階段才會執(zhí)行。而且整個過程數(shù)據(jù)是流式傳輸,不會產(chǎn)生內(nèi)存積壓。

可以看到上面有篩選和計算兩個過程,都沒有復(fù)制內(nèi)存,這里采用了延遲計算,也就是惰性機(jī)制。如果每個過程都真實(shí)計算,消耗內(nèi)存不說,單是時間成本就很大。

vaex的統(tǒng)計計算函數(shù):

可視化展示

vaex還可以進(jìn)行快速可視化展示,即便是上百億的數(shù)據(jù)集,依然能秒出圖。

vaex可視化函數(shù):

結(jié)論

vaex有點(diǎn)類似spark和pandas的結(jié)合體,數(shù)據(jù)量越大越能體現(xiàn)它的優(yōu)勢。只要你的硬盤能裝下多大數(shù)據(jù),它就能快速分析這些數(shù)據(jù)。

vaex還在快速發(fā)展中,集成了越來越多pandas的功能,它在github上的star數(shù)是5k,成長潛力巨大。

附:hdf5數(shù)據(jù)集生成代碼(4列1億行數(shù)據(jù))

import pandas as pd
import vaex
df = pd.DataFrame(np.random.rand(100000000,4),columns=['col_1','col_2','col_3','col_4'])
df.to_csv('example.csv',index=False)
vaex.read('example.csv',convert='example1.hdf5')

注意這里不要用pandas直接生成hdf5,其格式會與vaex不兼容。

到此這篇關(guān)于Python Vaex實(shí)現(xiàn)快速分析100G大數(shù)據(jù)量的文章就介紹到這了,更多相關(guān)Python Vaex分析100G大數(shù)據(jù)量內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python簡單實(shí)現(xiàn)圖片轉(zhuǎn)字符畫的實(shí)例項(xiàng)目

    Python簡單實(shí)現(xiàn)圖片轉(zhuǎn)字符畫的實(shí)例項(xiàng)目

    這篇文章主要介紹了Python簡單實(shí)現(xiàn)圖片轉(zhuǎn)字符畫的實(shí)例項(xiàng)目,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Python map和reduce函數(shù)用法示例

    Python map和reduce函數(shù)用法示例

    這篇文章主要介紹了Python map和reduce函數(shù)用法示例,本文給出了兩個函數(shù)的多個用法示例,需要的朋友可以參考下
    2015-02-02
  • python basemap 畫出經(jīng)緯度并標(biāo)定的實(shí)例

    python basemap 畫出經(jīng)緯度并標(biāo)定的實(shí)例

    今天小編就為大家分享一篇python basemap 畫出經(jīng)緯度并標(biāo)定的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python兩個字典鍵同值相加的幾種方法

    Python兩個字典鍵同值相加的幾種方法

    今天小編就為大家分享一篇關(guān)于Python兩個字典鍵同值相加的幾種方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • 解決Tensorboard 不顯示計算圖graph的問題

    解決Tensorboard 不顯示計算圖graph的問題

    今天小編就為大家分享一篇解決Tensorboard 不顯示計算圖graph的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • PyTorch深度學(xué)習(xí)LSTM從input輸入到Linear輸出

    PyTorch深度學(xué)習(xí)LSTM從input輸入到Linear輸出

    這篇文章主要為大家介紹了PyTorch深度學(xué)習(xí)LSTM從input輸入到Linear輸出深入理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Python request使用方法及問題總結(jié)

    Python request使用方法及問題總結(jié)

    這篇文章主要介紹了Python request使用方法及問題總結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • python如何解決指定代碼段超時程序卡死

    python如何解決指定代碼段超時程序卡死

    這篇文章主要介紹了python如何解決指定代碼段超時程序卡死,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • python簡單利用字典破解zip文件口令

    python簡單利用字典破解zip文件口令

    這篇文章主要給大家介紹了關(guān)于python簡單利用字典破解zip文件口令的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 一起來學(xué)習(xí)Python的列表

    一起來學(xué)習(xí)Python的列表

    這篇文章主要為大家詳細(xì)介紹了Python的列表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03

最新評論

青龙| 聂荣县| 峨山| 大宁县| 西丰县| 五河县| 界首市| 句容市| 布拖县| 静乐县| 毕节市| 岳西县| 宣汉县| 安庆市| 普安县| 深泽县| 修武县| 长海县| 涟源市| 正宁县| 明水县| 澄江县| 敖汉旗| 烟台市| 万全县| 潜山县| 北碚区| 英超| 二连浩特市| 龙口市| 兴文县| 长治市| 靖江市| 永修县| 寻乌县| 滁州市| 清流县| 莱州市| 鄢陵县| 浙江省| 涟水县|