unrecognized index type datetime64

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
kairoehrig
User
Beiträge: 2
Registriert: Freitag 31. Mai 2013, 15:39

Liebe Python Gemeinde,

ich habe ein Problem beim Einlesen einer hdf5 Datei. Die Datei enthält eine Datenreihe vom type datetime64. Beim Einlesen der Datei mit dem code

Code: Alles auswählen

s = HDFStore('matrix.h5')
sp500matrix = s['SPY']
bricht das Programm ab mit der Fehlermeldung:


Traceback (most recent call last):
File "test.py", line 31, in <module>
sp500matrix = s['SPY']
File "/usr/lib/pymodules/python2.7/pandas/io/pytables.py", line 118, in __getitem__
return self.get(key)
File "/usr/lib/pymodules/python2.7/pandas/io/pytables.py", line 207, in get
return self._read_group(group)
File "/usr/lib/pymodules/python2.7/pandas/io/pytables.py", line 597, in _read_group
return handler(group, where)
File "/usr/lib/pymodules/python2.7/pandas/io/pytables.py", line 346, in _read_frame
return DataFrame(self._read_block_manager(group))
File "/usr/lib/pymodules/python2.7/pandas/io/pytables.py", line 372, in _read_block_manager
ax = self._read_index(group, 'axis%d' % i)
File "/usr/lib/pymodules/python2.7/pandas/io/pytables.py", line 433, in _read_index
_, index = self._read_index_node(getattr(group, key))
File "/usr/lib/pymodules/python2.7/pandas/io/pytables.py", line 485, in _read_index_node
index = Index(_unconvert_index(data, kind))
File "/usr/lib/pymodules/python2.7/pandas/io/pytables.py", line 759, in _unconvert_index
raise ValueError('unrecognized index type %s' % kind)
ValueError: unrecognized index type datetime64


Das Paket numpy ist importiert. Der volle header des Programms ist:

Code: Alles auswählen

   import numpy
   from numpy import *
   from pandas import *
   import pandas
   import datetime
   from datetime import datetime
Die installierten Versionen sind:

python version: 2.7.3
numpy version: 1.6.1
pandas version: 0.7.0

und ich laufe auf Ubuntu 12.04.2 LTS (GNU/Linux 3.2.0-45-generic x86_64)


Komischerweise kann ich innerhalb des Programms mit datetime64 Variablen arbeiten, z.B.

Code: Alles auswählen

dt = datetime.utcnow()
dt64 = numpy.datetime64(dt)
print dt64
print type(dt64)
funktioniert ohne Problem.

ich wäre sehr dankbar für jede Idee oder jeden Vorschlag, wie ich dieses Problem lösen kann!

kai
Dami123
User
Beiträge: 225
Registriert: Samstag 23. Februar 2013, 13:01

vielleicht

Code: Alles auswählen

s = HDFStore(str('matrix.h5'))
BlackJack

@Dami123: Was soll denn das bringen eine Zeichenkette in eine Zeichenkette zu wandeln? Was erwartest Du denn was dieser Funktionsaufruf am Ergebnis ändern könnte?

@kairoehrig: Die Ausnahme wird ja in `pandas` ausgelöst. Diese Bibliothek kennt den Datentyp offensichtlich nicht. Das wird auch durch einen Blick in die Funktion bestätigt, wo die Ausnahme konkret ausgelöst wird:

Code: Alles auswählen

Type:       function
Base Class: <type 'function'>
String Form:<function _unconvert_index at 0x8a2ba74>
Namespace:  Interactive
File:       /usr/lib/pymodules/python2.7/pandas/io/pytables.py
Definition: pandas.io.pytables._unconvert_index(data, kind)
Source:
def _unconvert_index(data, kind):
    if kind == 'datetime':
        index = np.array([datetime.fromtimestamp(v) for v in data],
                         dtype=object)
    elif kind == 'date':
        index = np.array([date.fromtimestamp(v) for v in data],
                         dtype=object)

    elif kind in ('string', 'integer', 'float'):
        index = np.array(data)
    elif kind == 'object':
        index = np.array(data[0])
    else: # pragma: no cover
        raise ValueError('unrecognized index type %s' % kind)
    return index
kairoehrig
User
Beiträge: 2
Registriert: Freitag 31. Mai 2013, 15:39

Ja in der Tat... es war schlicht und ergreifend eine falsche nupmy Version in Benutzung. Obwohl die neuste Version durchaus installiert war, war noch eine ältere mit pyhton verlinkt (weiss aber auch nicht wieso...). Dieser Fehler hat sich dann auf pandas ausgewirkt...

Habe nun alle numpy Versionen deinstalliert und dann nur die neuste reinstalliert. Nun klappts!

Vielen Dank BlackJack !! :D


p.s. wie kann ich den thread schließen?
lunar

@kairoehrig Gar nicht. Wir schließen keine Threads.
Antworten