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

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

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

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

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

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

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

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

ok了!

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

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

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

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

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

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

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

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

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

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

過(guò)程如下:

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

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

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

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

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

我們可以通過(guò)read_csv()方法Chunksize來(lái)完成上述步驟。 Chunksize是指pandas 一次能讀取到多少行csv文件。這個(gè)當(dāng)然也是建立在RAM 內(nèi)存容量的基礎(chǔ)上。
假如我們認(rèn)為數(shù)據(jù)呈現(xiàn)高斯分布時(shí), 我們可以在一個(gè)chunk 上, 進(jìn)行數(shù)據(jù)處理和視覺(jué)化, 這樣會(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ù)前, 先跳過(guò)這些無(wú)用的列,可以幫我們節(jié)省很多內(nèi)存。 Pandas 可以允許我們選擇想要讀取的列。

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

此外,我們還可以把有缺失值的行,或者是包含“NA” 的行刪除掉。 通過(guò)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 查找

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

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

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

數(shù)據(jù)科學(xué)家新手往往不會(huì)對(duì)數(shù)據(jù)類型考慮太多。 當(dāng)處理數(shù)據(jù)越來(lái)越多時(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ù)來(lái)預(yù)測(cè)股票信息時(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)存。

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

請(qǐng)看下面的pandas 例子:

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

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

相關(guān)文章

最新評(píng)論

田林县| 宾阳县| 曲周县| 石首市| 黄龙县| 郧西县| 德格县| 黑水县| 思南县| 北碚区| 竹溪县| 龙泉市| 霸州市| 饶阳县| 洛川县| 徐水县| 安康市| 正阳县| 德惠市| 石泉县| 石城县| 阜南县| 循化| 南靖县| 廊坊市| 贵定县| 台州市| 嘉峪关市| 东丽区| 日照市| 申扎县| 双鸭山市| 木兰县| 瑞丽市| 碌曲县| 铁岭县| 舞阳县| 洛川县| 罗城| 夏河县| 吕梁市|