2013-07-23 20 views
10

Pandalar bir HDF5 içinde Dataframes ve Series gibi şeyler saklamak kolaylaştıran bir nice interface sahiptir HDF5 düzenli Python nesnelerle birlikte nesneleri:Depolama Pandalar

random_matrix = np.random.random_integers(0,10, m_size) 
my_dataframe = pd.DataFrame(random_matrix) 

store = pd.HDFStore('some_file.h5',complevel=9, complib='bzip2') 
store['my_dataframe'] = my_dataframe 
store.close() 

Ama aynı diğer bazı düzenli Python nesneleri kaydetmeye çalışırsanız dosya, bu yakınır:

my_dictionary = dict() 
my_dictionary['a'] = 2   # <--- ERROR 
my_dictionary['b'] = [2,3,4] 

store['my_dictionary'] = my_dictionary 
store.close() 

Ben Stor nasıl

TypeError: cannot properly create the storer for: [_TYPE_MAP] [group->/par 
ameters (Group) u'',value-><type 'dict'>,table->None,append->False,kwargs- 
>{}]         

ile Diğer Pandas nesnelerini sakladığım aynı HDF5'teki düzenli Python veri yapıları?

cevap

11

Burada yemek kitabı örnek: http://pandas.pydata.org/pandas-docs/stable/cookbook.html#hdfstore

Bir düğümün nitelikleri olarak keyfi nesneler saklayabilir. 64kb bir limit olduğuna inanıyorum (bu düğüm için toplam öznitelik verilerini düşünüyorum). nesneler

In [1]: df = DataFrame(np.random.randn(8,3)) 

In [2]: store = HDFStore('test.h5') 

In [3]: store['df'] = df 

# you can store an arbitrary python object via pickle 
In [4]: store.get_storer('df').attrs.my_attribute = dict(A = 10) 

In [5]: store.get_storer('df').attrs.my_attribute 
{'A': 10} 
+0

Teşekkür salamura edilir! Bu arada, bazı 'mağaza 'komutlarıyla' PerformanceWarnings' aldım. Bunları devre dışı bırakmayı denedim: 'içe aktarma uyarıları; warnings.simplefilter (action = "ignore", kategori = PerformanceWarning) 'ancak 'Name' PerformanceWarning 'tanımlı değil' alıyorum. Onları nasıl susturmayı biliyor musun? –

+1

Aslında bunlara dikkat etmelisiniz. Bunlar temelde PyTables'ın '' pickle'''ya gideceği bir veri türü sakladığınızı söylüyor! (Tablo olarak depolamak kullanımı 'append'' veya' '' 'Tablo biçimde depolar' 'store.put ('df', df, masa = Doğru)' 'ya deneyin;' 'gibi şeyler daha iyi ele nan'' belli dtypes ('' Storer'' biçimi size PerfWarning vereceğini. Eğer gerçekten istiyorsan http://pandas.pydata.org/pandas-docs/dev/io.html#table-format – Jeff

+1

gör onları susturmak, deneyin:... '' pandas.io.pytables PerformanceWarning'' içe ama yukarıda benim yorumu görmek gelen bu – Jeff