[英]Fastest way to read complex data structures from disk in Python
我有一個CSV數據集,在一個字段中包含值列表作為字符串,或多或少像這樣:
Id,sequence
1,'1;0;2;6'
2,'0;1'
3,'1;0;9'
在我處理的真實數據集中,序列長度差異很大,可以包含一個到數千個觀測值。 有許多列包含全部存儲為字符串的序列。
我正在讀取這些CSV並解析字符串,以使其成為嵌套在Pandas DataFrame中的列表。 這需要一些時間,但我可以接受。
但是,稍后將解析的結果保存到pickle時,此pickle文件的讀取時間非常長。
我面臨以下問題:
我正在嘗試找到一種以最快的方式從磁盤讀取經過處理的數據的方法。
已經嘗試過:
我並不完全依賴確切的數據結構。 事情是我想快速將解析的數據從磁盤直接讀取到Python。
這可能是這個問題的重復
HDF5在處理嵌套的熊貓數據幀方面要快得多。 我會試一試。
從此處借用的示例用法說明了如何在轉儲時有效地對其進行分塊:
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))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.