小编典典

使用pandas高效读取大型CSV文件而不会崩溃

python

我正在尝试从http://grouplens.org/datasets/movielens/20m/中读取一个名为rating.csv的.csv文件,该文件在我的计算机中为533.4MB。

这是在Jupyter Notebook中编写的内容

import pandas as pd
ratings = pd.read_cv('./movielens/ratings.csv', sep=',')

从这里开始的问题是内核将崩溃或死亡,并要求我重新启动,并且它不断重复执行同样的操作。没有任何错误。请您提出解决此问题的任何替代方案,就好像我的计算机没有运行此功能的能力一样。

这有效,但仍在重写

chunksize = 20000
for ratings in pd.read_csv('./movielens/ratings.csv', chunksize=chunksize):
ratings.append(ratings)
ratings.head()

只有最后一块被写入,其他被注销


阅读 215

收藏
2021-01-16

共1个答案

小编典典

chunksizeread_csv读取数据帧时,您应该考虑使用in参数,因为它返回一个TextFileReader对象,然后您可以传递该对象pd.concat以连接您的块。

chunksize = 100000
tfr = pd.read_csv('./movielens/ratings.csv', chunksize=chunksize, iterator=True)
df = pd.concat(tfr, ignore_index=True)

如果您只想单独处理每个块,请使用,

chunksize = 20000
for chunk in pd.read_csv('./movielens/ratings.csv', 
                         chunksize=chunksize, 
                         iterator=True):
    do_something_with_chunk(chunk)
2021-01-16