【发布时间】:2016-01-20 19:42:32
【问题描述】:
CSV 文件可能不干净(元素数量不一致的行),需要忽略不干净的行。 处理过程中需要对字符串进行操作。
示例输入:
20150701 20:00:15.173,0.5019,0.91665
期望的输出:float32(伪日期,一天中的秒数,f3,f4)
0.150701 72015.173 0.5019 0.91665 (+ the trailing trash floats usually get)
CSV 文件也很大,内存中的 numpy 数组预计会占用 5-10 GB,CSV 文件超过 30GB。
寻找一种有效的方法来处理 CSV 文件并最终得到一个 numpy 数组。
当前解决方案:使用 csv 模块,逐行处理并使用 list() 作为缓冲区,稍后使用 asarray() 将其转换为 numpy 数组。问题是,在翻转过程中,内存消耗增加了一倍,并且复制过程增加了执行开销。
Numpy 的 genfromtxt 和 loadtxt 似乎无法按需要处理数据。
【问题讨论】:
-
你能发布你的代码吗?
-
你是否(能)提前知道最终数组有多少行?
-
看看 [pandas.read_csv] (pandas.pydata.org/pandas-docs/version/0.17.1/generated/…)。特别是日期格式有很多工具。
标签: python arrays csv numpy genfromtxt