數據分塊
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)