从hdf5文件中读取数据,时间成本增加很快

时间:2016-06-09 06:47:57

标签: python database numpy pandas hdf5

我有一个大小为1.27gb的数据集。虽然我可以将它全部放入内存中,但是需要花费大量时间来进行数据分析。我的想法是随机抽取部分数据进行分析。

我使用的语言是python。我首先将所有数据放入hdf5:

的形式
import pandas as pd
import numpy as np
import time

store = pd.HDFStore('train.h5', mode='w')
data_reader = pd.read_csv('./train.csv', chunksize=1e8) 

for i, chuck in enumerate(data_reader):

    store.append('all_train', chuck)

store.close()

执行此操作并不需要很长时间,生成的文件大小为1.64gb:

<class 'pandas.io.pytables.HDFStore'>
File path: train.h5
/all_train            frame_table     (typ->appendable,nrows->29118021,ncols->6,indexers->[index])

然后我尝试通过索引随机抽样一些数据:

store = pd.HDFStore('train.h5')
nrows = store.get_storer('all_train').nrows

r = np.random.randint(0,nrows,size=20)

now = time.time()
print_type(pd.read_hdf('train.h5', 'all_train', where="index=r"))
print 'Time Cost : %f' % (time.time() - now)

当样本量非常小时,比如20,采样数据需要0.2秒。但是,当我将大小增加到35时,需要2分钟以上。那么为什么时间成本增加如此之快?

有关大数据采样的建议吗?

0 个答案:

没有答案