Es gibt zahlreiche Fälle, in denen ich eine Pandas Panel-Instanz in einem kleinen Format für die spätere Verwendung auf der Festplatte ausgeben muss. Momentan speichere ich es als Pickle-Objekt, da pandas.read_pickle es direkt als Panel-Objekt abrufen kann. Aber es gibt zwei Fallstricke dabei: Erstens muss ich immer im Dateinamen darauf achten, dass es sich um ein Panel-Objekt handelt, sonst kann ich es vergessen. Zweitens: Hat das in Zukunft ein Risiko? Zum Beispiel unterstützen die zukünftigen Versionen von Pandas dies möglicherweise nicht und ich kann den Zugriff auf die Daten als direktes Panel verlieren. Was sind die anderen alternativen Möglichkeiten, um ein Panel-Objekt sicher zu speichern, während es immer noch einfach ist, es direkt wieder als Panel zu lesen? Ich könnte auch Panel in Excel-Format schreiben, aber ich muss die Mitglied Datareframes eins nach dem anderen lesen und sie wieder in Panel kombinieren, wenn ich die Daten zurückbekomme.Wie speichert man eine Pandas Panel Instanz?
2
A
Antwort
2
können Sie HDF als Speicher verwenden.
Demo:
Lassen Sie uns ein Panel mit Finanzdaten erzeugen:
import pandas as pd
import pandas_datareader.data as wb
stocks = ['AAPL', 'GOOG', 'FB']
p = wb.DataReader(stocks, 'yahoo', '2016-01-01')
jetzt haben wir die folgende Panel:
In [10]: p.axes
Out[10]:
[Index(['Open', 'High', 'Low', 'Close', 'Volume', 'Adj Close'], dtype='object'),
DatetimeIndex(['2016-01-04', '2016-01-05', '2016-01-06', '2016-01-07', '2016-01-08', '2016-01-11', '2016-01-12', '2016-01-13', '2016-01-14',
'2016-01-15',
...
'2017-02-02', '2017-02-03', '2017-02-06', '2017-02-07', '2017-02-08', '2017-02-09', '2017-02-10', '2017-02-13', '2017-02-14',
'2017-02-15'],
dtype='datetime64[ns]', name='Date', length=283, freq=None),
Index(['AAPL', 'FB', 'GOOG'], dtype='object')]
es Speichern von Datei auf hdf5:
In [12]: p.to_hdf('c:/temp/panel.h5', 'p', format='t')
Che ck:
In [13]: store = pd.HDFStore('c:/temp/panel.h5')
In [14]: store
Out[14]:
<class 'pandas.io.pytables.HDFStore'>
File path: c:/temp/panel.h5
/p wide_table (typ->appendable,nrows->849,ncols->6,indexers->[major_axis,minor_axis])
In [15]: store.get_storer('p')
Out[15]: wide_table (typ->appendable,nrows->849,ncols->6,indexers->[major_axis,minor_axis])
In [16]: store.get_storer('p').table
Out[16]:
/p/table (Table(849,)) ''
description := {
"major_axis": Int64Col(shape=(), dflt=0, pos=0),
"minor_axis": StringCol(itemsize=4, shape=(), dflt=b'', pos=1),
"values_block_0": Float64Col(shape=(6,), dflt=0.0, pos=2)}
byteorder := 'little'
chunkshape := (1092,)
autoindex := True
colindexes := {
"major_axis": Index(6, medium, shuffle, zlib(1)).is_csi=False,
"minor_axis": Index(6, medium, shuffle, zlib(1)).is_csi=False}
In [17]: x = store['p']
In [18]: x
Out[18]:
<class 'pandas.core.panel.Panel'>
Dimensions: 6 (items) x 283 (major_axis) x 3 (minor_axis)
Items axis: Open to Adj Close
Major_axis axis: 2016-01-04 00:00:00 to 2017-02-15 00:00:00
Minor_axis axis: AAPL to GOOG
In [20]: x.loc[:,:,'GOOG']
Out[20]:
Open High Low Close Volume Adj Close
2016-01-04 743.000000 744.059998 731.257996 741.840027 3272800.0 741.840027
2016-01-05 746.450012 752.000000 738.640015 742.580017 1950700.0 742.580017
2016-01-06 730.000000 747.179993 728.919983 743.619995 1947000.0 743.619995
2016-01-07 730.309998 738.500000 719.059998 726.390015 2963700.0 726.390015
2016-01-08 731.450012 733.229980 713.000000 714.469971 2450900.0 714.469971
2016-01-11 716.609985 718.854980 703.539978 716.030029 2090600.0 716.030029
2016-01-12 721.679993 728.750000 717.317017 726.070007 2024500.0 726.070007
2016-01-13 730.849976 734.739990 698.609985 700.559998 2501700.0 700.559998
2016-01-14 705.380005 721.924988 689.099976 714.719971 2225800.0 714.719971
2016-01-15 692.289978 706.739990 685.369995 694.450012 3592400.0 694.450012
...
Verwandte Themen
- 1. Pandas: Wie speichert man eine Liste in einem Datenrahmen?
- 2. Wie man Panel als Bild im Schwung speichert?
- 3. Wie man Einstellungen speichert
- 4. Pandas Panel-Merge
- 5. Wie macht man eine Fabricator Instanz öffentlich?
- 6. pandas Panel max
- 7. Pandas MultiIndex versus Panel
- 8. Wie man Formeln anstelle von Werten in Pandas speichert DataFrame
- 9. Wie wird eine GPU-Instanz mit Amazon EC2 Panel ausgeführt?
- 10. ember-data: Wie man eine Flash-Nachricht speichert/speichert
- 11. Wie speichert man Videos für eine Website?
- 12. Wie speichert man eine Zeichenfolge im Computerspeicher?
- 13. Wie speichert man eine Datei in LDAP?
- 14. wie man Datenbankpasswort speichert
- 15. Gewichte in Panel-Daten - Pandas
- 16. OnSaveInstanceState speichert die Instanz nicht
- 17. Pandas-Format - Wie speichert man eine DataFrame float64-Spalte (mit NaNs) als int?
- 18. Wie man Panel in Flex
- 19. Wie erstellt man eine Graphics2D-Instanz?
- 20. Wie erstellt man eine Instanz von org.springframework.dao.DataAccessException?
- 21. Wie man den Wert einer Instanz liest und speichert, indem man ein Array durchläuft?
- 22. Heroku - wie man Zustand speichert
- 23. Wie man Brettspiel speichert? Python
- 24. Wie entpacken Sie ein Pandas-Panel mit einem Wörterbuch erstellt?
- 25. pysqlite - wie man Bilder speichert
- 26. Wie speichert man mehrere Formulare?
- 27. Wie man verwandte Daten speichert
- 28. Bukkit wie man Daten speichert
- 29. Wie man Zeichenfeld dynamisch speichert?
- 30. Zeit, wie man es speichert