欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

pandas分批讀取大數(shù)據(jù)集教程

 更新時(shí)間:2020年06月06日 10:32:21   作者:htbeker  
這篇文章主要介紹了pandas分批讀取大數(shù)據(jù)集教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

如果你的電腦內(nèi)存較小那么想在本地做一些事情是很有局限性的(哭喪臉),比如想拿一個(gè)kaggle上面的競賽來練練手,你會(huì)發(fā)現(xiàn)多數(shù)訓(xùn)練數(shù)據(jù)集都是大幾G或者幾十G的,自己那小破電腦根本跑不起來。行,你有8000w條樣本你牛逼,我就取400w條出來跑跑總行了吧(狡滑臉)。

下圖是2015年kaggle上一個(gè)CTR預(yù)估比賽的數(shù)據(jù)集:

看到train了吧,原始數(shù)據(jù)集6個(gè)G,特征工程后得多大?那我就取400w出來train。為了節(jié)省時(shí)間和完整介紹分批讀入數(shù)據(jù)的功能,這里以test數(shù)據(jù)集為例演示。其實(shí)就是使用pandas讀取數(shù)據(jù)集時(shí)加入?yún)?shù)chunksize。

可以通過設(shè)置chunksize大小分批讀入,也可以設(shè)置iterator=True后通過get_chunk選取任意行。

當(dāng)然將分批讀入的數(shù)據(jù)合并后就是整個(gè)數(shù)據(jù)集了。

ok了!

補(bǔ)充知識(shí):用Pandas 處理大數(shù)據(jù)的3種超級(jí)方法

易上手, 文檔豐富的Pandas 已經(jīng)成為時(shí)下最火的數(shù)據(jù)處理庫。此外,Pandas數(shù)據(jù)處理能力也一流。

其實(shí)無論你使用什么庫,大量的數(shù)據(jù)處理起來往往回遇到新的挑戰(zhàn)。

數(shù)據(jù)處理時(shí),往往會(huì)遇到?jīng)]有足夠內(nèi)存(RAM)這個(gè)硬件問題。 企業(yè)往往需要能夠存夠數(shù)百, 乃至數(shù)千 的GB 數(shù)據(jù)。

即便你的計(jì)算機(jī)恰好有足夠的內(nèi)存來存儲(chǔ)這些數(shù)據(jù), 但是讀取數(shù)據(jù)到硬盤依舊非常耗時(shí)。

別擔(dān)心! Pandas 數(shù)據(jù)庫會(huì)幫我們擺脫這種困境。 這篇文章包含3種方法來減少數(shù)據(jù)大小,并且加快數(shù)據(jù)讀取速度。 我用這些方法,把超過100GB 的數(shù)據(jù), 壓縮到了64GB 甚至32GB 的內(nèi)存大小。

快來看看這三個(gè)妙招吧。

數(shù)據(jù)分塊

csv 格式是一種易儲(chǔ)存, 易更改并且用戶易讀取的格式。 pandas 有read_csv ()方法來上傳數(shù)據(jù),存儲(chǔ)為CSV 格式。當(dāng)遇到CSV 文件過大,導(dǎo)致內(nèi)存不足的問題該怎么辦呢?試試強(qiáng)大的pandas 工具吧!我們先把整個(gè)文件拆分成小塊。這里,我們把拆分的小塊稱為chunk。

一個(gè)chunk 就是我們數(shù)據(jù)的一個(gè)小組。 Chunk 的大小主要依據(jù)我們內(nèi)存的大小,自行決定。

過程如下:

1.讀取一塊數(shù)據(jù)。

2.分析數(shù)據(jù)。

3.保存該塊數(shù)據(jù)的分析結(jié)果。

4.重復(fù)1-3步驟,直到所有chunk 分析完畢。

5.把所有的chunk 合并在一起。

我們可以通過read_csv()方法Chunksize來完成上述步驟。 Chunksize是指pandas 一次能讀取到多少行csv文件。這個(gè)當(dāng)然也是建立在RAM 內(nèi)存容量的基礎(chǔ)上。
假如我們認(rèn)為數(shù)據(jù)呈現(xiàn)高斯分布時(shí), 我們可以在一個(gè)chunk 上, 進(jìn)行數(shù)據(jù)處理和視覺化, 這樣會(huì)提高準(zhǔn)確率。

當(dāng)數(shù)據(jù)稍微復(fù)雜時(shí), 例如呈現(xiàn)泊松分布時(shí), 我們最好能一塊塊篩選,然后把每一小塊整合在一起。 然后再進(jìn)行分析。很多時(shí)候, 我們往往刪除太多的不相關(guān)列,或者刪除有值行。 我們可以在每個(gè)chunk 上,刪除不相關(guān)數(shù)據(jù), 然后再把數(shù)據(jù)整合在一起,最后再進(jìn)行數(shù)據(jù)分析。

代碼如下:

刪除數(shù)據(jù)

有時(shí)候, 我們一眼就能看到需要分析的列。事實(shí)上, 通常名字,賬號(hào)等列,我們是不做分析的。

讀取數(shù)據(jù)前, 先跳過這些無用的列,可以幫我們節(jié)省很多內(nèi)存。 Pandas 可以允許我們選擇想要讀取的列。

把包含無用信息的列刪除掉, 往往給我們節(jié)省了大量內(nèi)存。

此外,我們還可以把有缺失值的行,或者是包含“NA” 的行刪除掉。 通過dropna()方法可以實(shí)現(xiàn):

有幾個(gè)非常有用的參數(shù),可以傳給dropna():

how: 可選項(xiàng):“any”(該行的任意一列如果出現(xiàn)”NA”, 刪除該行)

“all” (只有某行所有數(shù)數(shù)據(jù)全部是”NA” 時(shí)才刪除)

thresh: 設(shè)定某行最多包含多少個(gè)NA 時(shí),才進(jìn)行刪除

subset: 選定某個(gè)子集,進(jìn)行NA 查找

可以通過這些參數(shù), 尤其是thresh 和 subset 兩個(gè)參數(shù)可以決定某行是否被刪除掉。

Pandas 在讀取信息的時(shí)候,無法刪除列。但是我們可以在每個(gè)chunk 上,進(jìn)行上述操作。

為列設(shè)定不同的數(shù)據(jù)類型

數(shù)據(jù)科學(xué)家新手往往不會(huì)對(duì)數(shù)據(jù)類型考慮太多。 當(dāng)處理數(shù)據(jù)越來越多時(shí), 就非常有必要考慮數(shù)據(jù)類型了。

行業(yè)常用的解決方法是從數(shù)據(jù)文件中,讀取數(shù)據(jù), 然后一列列設(shè)置數(shù)據(jù)類型。 但當(dāng)數(shù)據(jù)量非常大時(shí), 我們往往擔(dān)心內(nèi)存空間不夠用。

在CSV 文件中,例如某列是浮點(diǎn)數(shù), 它往往會(huì)占據(jù)更多的存儲(chǔ)空間。 例如, 當(dāng)我們下載數(shù)據(jù)來預(yù)測股票信息時(shí), 價(jià)格往往以32位浮點(diǎn)數(shù)形式存儲(chǔ)。

但是,我們真的需要32位浮點(diǎn)數(shù)碼? 大多數(shù)情況下, 股票價(jià)格以小數(shù)點(diǎn)后保留兩位數(shù)據(jù)進(jìn)行交易。 即便我們想看到更精確的數(shù)據(jù), 16位浮點(diǎn)數(shù)已經(jīng)足夠了。

我們往往會(huì)在讀取數(shù)據(jù)的時(shí)候, 設(shè)置數(shù)據(jù)類型,而不是保留數(shù)據(jù)原類型。 那樣的話,會(huì)浪費(fèi)掉部分內(nèi)存。

通過read_csv() 中設(shè)置dtype參數(shù)來完成數(shù)據(jù)類型設(shè)置。還可以設(shè)置字典類型,設(shè)置該列是鍵, 設(shè)置某列是字典的值。

請看下面的pandas 例子:

文章到這里結(jié)束了! 希望上述三個(gè)方法可以幫你節(jié)省時(shí)間和內(nèi)存。

以上這篇pandas分批讀取大數(shù)據(jù)集教程就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Pickle模塊中的dump()和load()方法簡介

    Pickle模塊中的dump()和load()方法簡介

    Pickle模塊實(shí)現(xiàn)了基本的數(shù)據(jù)序列化與反序列化操作,通過序列化操作,我們可以將程序中運(yùn)行的對(duì)象信息轉(zhuǎn)化為字節(jié)流保存到文件中去,永久存儲(chǔ)在磁盤上,這篇文章主要介紹了Pickle模塊中的dump()和load()方法介紹,需要的朋友可以參考下
    2023-03-03
  • django的分頁器Paginator 從django中導(dǎo)入類

    django的分頁器Paginator 從django中導(dǎo)入類

    這篇文章主要介紹了django的分頁器Paginator 從django中導(dǎo)入類,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python中關(guān)于tqdm的用法

    python中關(guān)于tqdm的用法

    這篇文章主要介紹了python中關(guān)于tqdm的用法及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 詳解如何用Python實(shí)現(xiàn)感知器算法

    詳解如何用Python實(shí)現(xiàn)感知器算法

    今天給大家?guī)淼氖顷P(guān)于Python的相關(guān)知識(shí),文章圍繞著如何用Python實(shí)現(xiàn)感知器算法展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Python開發(fā)網(wǎng)站目錄掃描器的實(shí)現(xiàn)

    Python開發(fā)網(wǎng)站目錄掃描器的實(shí)現(xiàn)

    這篇文章主要介紹了Python開發(fā)網(wǎng)站目錄掃描器的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • 淺談python中常用的excel模塊庫

    淺談python中常用的excel模塊庫

    本文主要介紹了python中常用的excel模塊庫,感興趣的同學(xué),可以參考下。
    2021-06-06
  • python去除刪除數(shù)據(jù)中\(zhòng)u0000\u0001等unicode字符串的代碼

    python去除刪除數(shù)據(jù)中\(zhòng)u0000\u0001等unicode字符串的代碼

    這篇文章主要介紹了python去除刪除數(shù)據(jù)中\(zhòng)u0000\u0001等unicode字符串的代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • 如何基于Python pygame實(shí)現(xiàn)動(dòng)畫跑馬燈

    如何基于Python pygame實(shí)現(xiàn)動(dòng)畫跑馬燈

    這篇文章主要介紹了如何基于Python pygame實(shí)現(xiàn)動(dòng)畫跑馬燈,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 詳解Python如何求不同分辨率圖像的峰值信噪比

    詳解Python如何求不同分辨率圖像的峰值信噪比

    這篇文章主要為大家詳細(xì)介紹了如何利用Python中的?NumPy?和?OpenCV?庫實(shí)現(xiàn)求不同分辨率圖像的峰值信噪比,感興趣的小伙伴可以跟隨不想一起學(xué)習(xí)一下
    2023-01-01
  • Python pytest裝飾器總結(jié)(實(shí)例詳解)

    Python pytest裝飾器總結(jié)(實(shí)例詳解)

    這篇文章主要介紹了Python pytest裝飾器總結(jié),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04

最新評(píng)論