青鳥飛揚(yáng)教育:數(shù)據(jù)幀的塊讀取和寫入

數(shù)據(jù)幀的塊讀取和寫入

分塊,正如其名所示,意味著以,嗯,的形式處理文件。你按部分讀?。ɑ?qū)懭耄┪募?。如果你使?Zarr(見第 8.4 節(jié))或 Dask(見第十章),你肯定會(huì)處理分塊。

在這里,我們將回到我們信任的出租車示例。我們將以塊的形式將文件從 CSV 轉(zhuǎn)換為 Parquet,盡管文件足夠小,在大多數(shù)計(jì)算機(jī)上我們可以在內(nèi)存中完成這個(gè)操作,但讓我們假設(shè)我們在一個(gè)內(nèi)存受限的機(jī)器上,并且無法在內(nèi)存中加載整個(gè)文件。

我們將使用 pandas 讀取 CSV 文件,并使用 Arrow 寫入 Parquet 版本。我們可以用 Arrow 完成所有操作,這將更高效,但我們想展示 pandas 分塊接口

① 類型將是 pandas.io.parsers.TextFileReader。

② 每個(gè)塊將是一個(gè)數(shù)據(jù)幀。

我們只需要將 chunksize 參數(shù)添加到 read_csv 中。你將不會(huì)從 read_csv 獲得一個(gè)數(shù)據(jù)幀,而是一個(gè)塊生成器。然后每個(gè)塊將是一個(gè)數(shù)據(jù)幀,最大行數(shù)為 100 萬行。

我們現(xiàn)在將進(jìn)行適當(dāng)?shù)霓D(zhuǎn)換。首先,我們需要重新打開文件。我們已經(jīng)遍歷了所有塊一次,所以我們需要回到開始

我們還需要指定一些列的數(shù)據(jù)類型;某些列的類型可能會(huì)從一塊數(shù)據(jù)變化到另一塊數(shù)據(jù)。這種情況在整數(shù)列中尤為常見,尤其是那些包含空值的列。當(dāng)存在空值時(shí),類型會(huì)被提升為float,因?yàn)樵?pandas 中無法用整數(shù)來表示空值。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容