我有一个问题,我想我已经解决了,但我想了解更多关于它或学习更好的解决办法。在
问题是:我有一个标签分隔的文件,有大约600k行(和一个注释行),其中一个字段(共8个字段)包含一个可变长度的字符串,长度介于1到2000个字符之间。在
使用以下函数读取该文件的速度非常慢:
df = pd.read_csv(tgfile,
sep="\t",
comment='#',
header=None,
names=list_of_names)
但是,也许我不太关心大多数字符串(此字符串的字段名为“motif”),如果字符串太长,我可以使用以下命令截断它:
^{pr2}$这一下子就快多了。在
所以我的问题是:
那么这个文件的大小是:600000*1000B~570MB。它是很多的,特别是如果你没有太多的内存。在
这很有帮助,因为突然间一条线的平均大小不是1000B,而是大约6-7B(考虑到新的max=8B)。系统不读取并保存整个字符串,但只检查其长度,并在需要时进行剪切。听起来很有逻辑!
在这种情况下,当需要加载大量数据时,最好使用块。
for chunk in pd.read_csv(tgfile, chunksize=10000): process(chunk)
chunksize
参数表示有多少行包含一个块。这是很好的检查,如果它改善了你的情况下的表现!在相关问题 更多 >
编程相关推荐