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

标签 python pandas csv dataframe jupyter-notebook

我正在尝试从 http://grouplens.org/datasets/movielens/20m/ 中读取一个名为 ratings.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()

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

最佳答案

您应该考虑在 read_csv 中使用 chunksize 参数在读取数据帧时,因为它返回一个 TextFileReader 对象,您可以随后将其传递给 pd.concat 以连接您的 block 。

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

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

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

关于python - 使用 pandas 高效读取大型 CSV 文件而不会崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45870220/

相关文章:

Python- Pandas : AttributeError: 'numpy.ndarray' object has no attribute 'start'

python - 如何选择在python中写入(.csv)的列

python - Thrift python 3.4 TypeError : string argument expected, 得到 'bytes'

python - 字典 Python 空间

python - 如何计算 Pandas Dataframe 中的唯一值?

python - 根据 bool 向量组合 2 个 pandas 数据帧

csv - 如何告诉 Proof General ".csv"!= ".v"

java - 时间序列预测 encog 3 java 从 CSV 读取

python - Peewee 安装错误 : unable to find vcvarsall. bat - Microsoft server 2012 R2

python - 如何从格式良好的记录列表中打印学生记录数据(值列表)?