簡體   English   中英

在熊貓中加載大型csv文件

[英]Loading large csv file in pandas

我正在嘗試在熊貓數據框中加載csv文件。 但是,Python在加載文件時占用了大量內存。 例如,csv文件的大小為289 MB,但在我嘗試加載文件時,內存使用量約為1700 MB。 此時,系統顯示內存錯誤。 我也嘗試過塊大小,但問題仍然存在。 誰能告訴我前進的方向嗎?

好,首先,不要混淆磁盤大小和內存大小。 CSV的核心是純文本文件,而pandas數據框是加載到內存中的復雜對象。 就是說,鑒於我不知道您的csv文件中有什么內容,因此我無法就您的特殊情況發表聲明。 因此,我將為您提供一個在計算機上具有類似大小的csv的示例:

-rw-rw-r--  1 alex users 341M Jan 12  2017 cpromo_2017_01_12_rec.csv

現在閱讀CSV:

>>> import pandas as pd
>>> df = pd.read_csv('cpromo_2017_01_12_rec.csv')
>>> sys:1: DtypeWarning: Columns (9) have mixed types. Specify dtype option on import or set low_memory=False.
>>> df.memory_usage(deep=True).sum() / 1024**2
1474.4243307113647

熊貓將盡最大努力對其進行優化,但它不可能做到不可能。 如果您的內存不足,那么這個答案是一個很好的起點 另外,您也可以嘗試使用dask,但我認為對於小型csv而言這工作太多了。

您可以使用庫“ dask”
例如:

# Dataframes implement the Pandas API
import dask.dataframe as dd`<br>
df = dd.read_csv('s3://.../2018-*-*.csv')

嘗試這樣-1)加載dask,然后2)轉換為熊貓

import pandas as pd
import dask.dataframe as dd
import time
t=time.clock()
df_train = dd.read_csv('../data/train.csv', usecols=[col1, col2])
df_train=df_train.compute()
print("load train: " , time.clock()-t)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM