我对python mining数据集感兴趣,这些数据集太大而无法放在RAM中但只能放在一个HD中.
据我所知,我可以将数据导出为hdf5文件pytables.还numexpr允许一些基本的核外计算.
接下来会发生什么?尽可能进行小批量处理,并且在不能使用迷你批处理时依靠线性代数结果来分解计算?
还是有一些我错过的更高级别的工具?
感谢您的见解,
我试图从大约1 GB的HDFStore表中选择随机行.当我要求大约50个随机行时,RAM使用率会爆炸.
我正在使用熊猫0-11-dev, python 2.7, linux64.
在第一种情况下,RAM使用量适合大小 chunk
with pd.get_store("train.h5",'r') as train:
for chunk in train.select('train',chunksize=50):
pass
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,似乎整个表都被加载到RAM中
r=random.choice(400000,size=40,replace=False)
train.select('train',pd.Term("index",r))
Run Code Online (Sandbox Code Playgroud)
在最后一种情况下,RAM使用量与等效chunk大小相符
r=random.choice(400000,size=30,replace=False)
train.select('train',pd.Term("index",r))
Run Code Online (Sandbox Code Playgroud)
我很困惑,为什么从30行随机移动到40行会导致RAM使用率急剧增加.
请注意,使用以下代码创建索引= range(nrows(table))时,表已被编入索引:
def txtfile2hdfstore(infile, storefile, table_name, sep="\t", header=0, chunksize=50000 ):
max_len, dtypes0 = txtfile2dtypes(infile, sep, header, chunksize)
with pd.get_store( storefile,'w') as store:
for i, chunk in enumerate(pd.read_table(infile,header=header,sep=sep,chunksize=chunksize, dtype=dict(dtypes0))):
chunk.index= range( chunksize*(i), chunksize*(i+1))[:chunk.shape[0]]
store.append(table_name,chunk, min_itemsize={'values':max_len})
Run Code Online (Sandbox Code Playgroud)
感谢您的见解
编辑回答Zelazny7
这是我用来编写Train.csv到train.h5的文件.我用Zelazny7的代码编写了这个代码来自如何解决HDFStore异常:无法找到正确的原子类型
import pandas as pd
import numpy as np
from sklearn.feature_extraction import DictVectorizer
def object_max_len(x): …Run Code Online (Sandbox Code Playgroud) 我不明白为什么numpy.genfromtxt不能正确分割下面的字符串,delimiter=","而它适用于我的块中的大多数其他字符串.
chunk[12968]
Out[143]: '2901869281,3279442095,2012-12-15T23:00:00.003Z,Sacramento,CA,R#3817874,United States,38.583,-121.498,11, 8, 6, 5, 1, 0, 2, 3, 3, 5, 3, 3, 2, 2, 6, 6, 1, 2, 3, 0, 1, 1, 0, 0, 2, 2, 2, 2, 1, 0, 0, 2, 1, 0, 1, 1, 2, 0, 3, 1, 1, 1, 1, 0, 0, 4, 0, 0, 0, 1, 3, 1, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 9, 0, 0, 0, …Run Code Online (Sandbox Code Playgroud) python ×3
numpy ×2
data-mining ×1
database ×1
genfromtxt ×1
hdfstore ×1
large-data ×1
pandas ×1
pytables ×1
vim ×1