2017-09-22 110 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