python - 如何用 pandas 读取大型 csv?

标签 python dataframe out-of-memory

我正在加载rdx ( csv 类似格式)大约 16GB 的文件作为 pandas 数据帧,然后我通过删除一些行来削减它。代码如下:

import pandas as pd

t_min, t_max, n_min, n_max, c_min, c_max = raw_input('t_min, t_max, n_min, n_max, c_min, c_max: ').split(' ')

data=pd.read_csv('/Users/me/Desktop/foo.rdx',header=None)

new_data=data.loc[(data[0] >= float(t_min)) & (data[0] <= float(t_max)) & (data[1] >= float(n_min)) & (data[1] <= float(n_max)) & (data[2] >= float(c_min)) & (data[2] <= float(c_max))]

此代码适用于较小的文件(~5GB),但它似乎无法加载此大小的文件。有解决方法吗?或者也许是一个 bash 脚本方法来做到这一点?

非常感谢任何帮助或建议。

最佳答案

尝试使用chunksize参数,按 block 过滤,然后concat

t_min, t_max, n_min, n_max, c_min, c_max = map(float, raw_input('t_min, t_max, n_min, n_max, c_min, c_max: ').split())

num_of_rows = 1024
TextFileReader = pd.read_csv(path, header=None, chunksize=num_of_rows)

dfs = []
for chunk_df in TextFileReader:
    dfs.append(chunk_df.loc[(chunk_df[0] >= t_min) & (chunk_df[0] <= t_max) & (chunk_df[1] >= n_min) & (chunk_df[1] <= n_max) & (chunk_df[2] >= c_min) & (chunk_df[2] <= c_max)])

df = pd.concat(dfs,sort=False)

关于python - 如何用 pandas 读取大型 csv?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55438686/

相关文章:

Python训练Kmeans算法预测图像的主色

python - 鼠标左键触发 "long click"的命令

数据框创建整数 julia 的新列

python - 添加对的缺失值

r - 是否可以在数据框中使用在该数据框中定义的变量调用 eval?

python - MemoryError 与 numpy arange

python - 使用 Beautiful Soup - Python 在 HTML 中查找 1 级内的所有文本

python - 重复 if 直到 true [python]

android - 如何解决在android中显示图像时内存不足的问题?

database - Groovy sql 数据集导致 java.lang.OutOfMemory