2017-09-22 164 views
1

我有一個非常大的csv文件大約10GB。當我試圖讀入iPython筆記本使用讀取csv文件的一部分

data = pd.read_csv("data.csv") 

我的筆記本電腦卡住了。是否有可能只讀取10,000行或500 MB的csv文件。

+0

查看'iterator'和'chunksize'選項來處理文件塊。 – Barmar

+1

你是否嘗試閱讀文檔? [閱讀csv](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html),提示!看'nrows =' – DJK

+0

@ djk47463可以使用nrows =獲得隨機行嗎? –

回答

3

這是可能的。您可以創建一個迭代器,通過將iterator=True與您所需的chunksize一起傳遞到read_csv,一次將某個特定大小的csv數據塊作爲DataFrame生成。

df_iter = pd.read_csv('data.csv', chunksize=10000, iterator=True) 

for iter_num, chunk in enumerate(df_iter, 1): 
    print(f'Processing iteration {iter_num}') 
    # do things with chunk 

或者更簡單地

for chunk in pd.read_csv('data.csv', chunksize=10000): 
    # do things with chunk 

另外,如果有,只是你想讀,你可以使用skiprowsnrows選項來啓動,在一個特定的行,然後讀取CSV的特定部分n行,如命名所示。

-1

可能是內存問題。在read_csv上,你可以設置chunksize(你可以指定行數)。

或者,如果您不需要所有列,則可以更改read_csv上的usecols以僅導入所需的列。

+1

除非你提供了一個例子,這更像是一個評論,你在這裏所說的與@Mitch已經回答的完全匹配...... – DJK