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

Dev*_*per 3 python csv dataframe pandas jupyter-notebook

我试图从http://grouplens.org/datasets/movielens/20m/读取名为ratings.csv的.csv文件,该文件在我的计算机中为533.4MB.

这是我在jupyter笔记本中写的内容

import pandas as pd
ratings = pd.read_cv('./movielens/ratings.csv', sep=',')
Run Code Online (Sandbox Code Playgroud)

这里的问题是内核会中断或死亡并要求我重新启动并且它会不断重复.没有任何错误.请问你可以建议任何解决这个问题的方法,就好像我的电脑无法运行它.

这有效,但它会继续重写

chunksize = 20000
for ratings in pd.read_csv('./movielens/ratings.csv', chunksize=chunksize):
ratings.append(ratings)
ratings.head()
Run Code Online (Sandbox Code Playgroud)

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

cs9*_*s95 7

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

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

适应性编辑:

chunksize = 20000
for chunk in pd.read_csv('./movielens/ratings.csv', 
                         chunksize=chunksize, 
                         iterator=True):
    do_something_with_chunk(chunk)
Run Code Online (Sandbox Code Playgroud)