读取csv文件的一部分内容

5

我有一个非常大的csv文件,约10GB。每当我尝试使用iPython笔记本读取它时,

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

我的笔记本电脑经常卡顿。是否可以只读取CSV文件的10000行或500MB大小的部分内容?


请查看iteratorchunksize选项以分块处理文件。 - Barmar
1
你有尝试阅读文档吗?读取csv,提示!看一下nrows= - DJK
1
@djk47463 可以使用 nrows= ? 获取随机行。 - John Constantine
2个回答

13

这是可能的。您可以通过将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

如果只想读取 CSV 文件的特定部分,可以使用 skiprowsnrows 选项从特定行开始读取,并依次读取 n 行,如其名称所示。


我正在尝试理解read_csv()函数中参数iterator的含义。当我们将iterator = True时(默认值为False),是否会有任何区别?我已经查过了,但没有帮助。谢谢。 - Chau Pham

0
可能是内存问题。在read_csv中,您可以设置chunksize(其中可以指定行数)。
或者,如果您不需要所有列,则可以在read_csv上更改usecols以仅导入所需的列。

1
除非您提供一个例子,否则这更像是一条评论,而您在这里所说的与@Mitch已经回答的完全相符。 - DJK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接