pandas讀取大量數據的分塊處理


 

數據分塊

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

一個chunk 就是我們數據的一個小組。 Chunk 的大小主要依據我們內存的大小,自行決定。

過程如下:

1.讀取一塊數據。

2.分析數據。

3.保存該塊數據的分析結果。

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

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


1、指定chunksize分塊讀取文件

read_csv 和 read_table 有一個 chunksize 參數,用以指定一個塊大小(每次讀取多少行),返回一個可迭代的 TextFileReader 對象。
代碼如下:

table=pd.read_table(path+'kuaishou.txt',sep='\t',chunksize=1000000)
df_list=[]
for df in table:
    #1.對每一個分塊df處理
    #2.添加每一個df(df_list.apend(df))
    #print(type(df),df.shape)打印看一下信息
df = pd.concat(df_list, ignore_index=True)

 

2、指定iterator=True

iterator=True同樣返回的是TextFileReader對象

import pandas as pd

f = open('./data/ows-raw.txt',encoding='utf-8')
reader = pd.read_table(f, sep=',', iterator=True, error_bad_lines=False) #跳過報錯行
loop = True
chunkSize = 1000
chunks = []
while loop:
  try:
    chunk = reader.get_chunk(chunkSize)
    chunks.append(chunk)
  except StopIteration:
    loop = False
    print("Iteration is stopped.")
df = pd.concat(chunks, ignore_index=True)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM