Rob*_*ith 7 python csv machine-learning scientific-computing amazon-ec2
我一直在尝试处理大量数据(几GB),但我的个人计算机拒绝在合理的时间内完成,所以我想知道我有哪些选项?我使用的是python的csv.reader,但即使拿到 200,000行也很慢.然后我将这些数据迁移到一个sqlite数据库,该数据库检索结果的速度更快,而且没有使用如此多的内存但速度仍然是一个主要问题.
那么,再次......我有什么选择来处理这些数据?我想知道如何使用亚马逊的现场实例,这些实例似乎对此类目的有用,但也许还有其他解决方案可供探索.
假设现场实例是一个不错的选择,考虑到我之前从未使用它们,我想问一下我对它们的期望是什么?有没有人有经验使用它们做这种事情?如果是这样,您的工作流程是什么?我想我可以找到一些博客文章,详细介绍科学计算,图像处理等工作流程,但我没有找到任何东西,如果你能解释一下或者指出一些链接,我会很感激.
提前致谢.
我会尝试使用numpy你的大数据集localy.Numpy数组应该使用较少的内存比较,csv.reader并且使用矢量化numpy函数时计算时间应该快得多.
但是,在读取文件时可能存在内存问题.
numpy.loadtxt或者numpy.genfromtxt在读取文件时消耗大量内存.如果这是一个问题,那么在这里比较一些(全新的)替代解析器引擎.根据这篇文章,新的pandas(一个建立在numpy之上的库)解析器似乎是一个选项.
如评论中所述,我还建议您在读取文件一次后以二进制格式存储数据,如HDF5.从我的经验中加载HDF5文件中的数据真的很快(知道在你的情况下它与sqlite相比有多快会很有趣).我知道将数组保存为HDF5的最简单方法是使用pandas
import pandas as pd
data = pd.read_csv(filename, options...)
store = pd.HDFStore('data.h5')
store['mydata'] = data
store.close()
Run Code Online (Sandbox Code Playgroud)
加载数据非常简单
import pandas as pd
store = pd.HDFStore('data.h5')
data = store['mydata']
store.close()
Run Code Online (Sandbox Code Playgroud)