我有一个CSV数据集,在一个字段中包含字符串形式的值列表,看起来像这样:
Id,sequence
1,'1;0;2;6'
2,'0;1'
3,'1;0;9'
在我正在处理的真实数据集中,序列长度差异很大,可以包含一个到数千个观测值。有很多列包含全部存储为字符串的序列。
我正在读取这些CSV并解析字符串,以使其成为嵌套在Pandas DataFrame中的列表。这需要一些时间,但我可以接受。
但是,稍后我将解析结果保存为pickle时,此pickle文件的读取时间非常长。
我面临以下问题:
我正在尝试找到一种以最快的方式从磁盘读取已处理数据的方法。
已经尝试:
我对确切的数据结构不太感兴趣。问题是我想从磁盘直接将解析的数据直接读取到Python。
答案 0 :(得分:0)
这可能是对this问题的重复
HDF5在处理嵌套熊猫数据帧方面要快得多。我会试一试。
从here借用的示例用法说明了如何在转储时有效地对其进行分块:
import glob, os
import pandas as pd
df = DataFrame(np.random.randn(1000,2),columns=list('AB'))
df.to_hdf('test.h5','df',mode='w',format='table',data_columns=True)
store = pd.HDFStore('test.h5')
nrows = store.get_storer('df').nrows
chunksize = 100
for i in xrange(nrows//chunksize + 1):
chunk = store.select('df',
start=i*chunksize,
stop=(i+1)*chunksize)
store.close()
回读时,您也可以像这样大块地完成它:
for df in pd.read_hdf('raw_sample_storage2.h5','raw_sample_all', start=0,stop=300000,chunksize = 3000):
print df.info()
print(df.head(5))