我如何读取大的csv(20G)[重复]
Posted
技术标签:
【中文标题】我如何读取大的csv(20G)[重复]【英文标题】:how do I read a large csv(20G) [duplicate] 【发布时间】:2017-03-30 04:43:36 【问题描述】:我是python的新用户。我的问题是这样的:
我有三个 csv 文件(每个大约 15G,有三列),我想将它们读入 python 并删除 dur=0 的行 我的csv是这样的。
sn_fx sn_tx dur
5129789 3310325 2
5129789 5144184 1
5129789 5144184 1
5129789 5144184 1
5129789 5144184 1
5129789 6302346 4
5129789 6302346 0
我知道我应该逐行阅读,我尝试这样:
file='cmct_0430x.csv'
for line in file.xreadlines():
pass
但它似乎不起作用。
另外,我不知道如何将这些行转换为数据框。
谁能告诉我更多关于这个的细节,我将非常感谢你!
【问题讨论】:
Python 有一个csv
模块,否则使用pandas
。但首先要确认你有足够的内存来读取这个文件。
有许多问题是重复的。如果没有任何关于您将如何处理数据的信息,就无法判断哪个最适合。
谢谢。我试过pd.read_csv,但它有内存错误。
还有***.com/questions/9087039/…, ***.com/questions/25962114/… .
您遇到内存错误,因为您正在处理大于内存大小的块。
【参考方案1】:
你应该使用熊猫。并读取chunks
(处理的行数)中大小合适的csv。然后使用concat
获取所有块。
from pandas import *
tp = read_csv('cmct_0430x.csv', iterator=True, chunksize=1000)
df = concat(tp, ignore_index=True)
熊猫:Read_csv
您遇到内存错误,因为您一次处理整个 csv 大于主内存的大小。试着把它分成块然后处理它。
【讨论】:
谢谢,刚刚试了,内存不足以上是关于我如何读取大的csv(20G)[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Pandas Python-read_csv没有读取每一行的完整数据[重复]