KeyError: 'ZTS_target'

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
evev
User
Beiträge: 27
Registriert: Dienstag 4. April 2017, 12:50

Hi Hi,
wie ihr sehen könnt habe ich folgenden KeyError und kann damit als Anfänger nichts anfangen.
Zurzeit arbeite ich mit demn Tutorials von pythonprogramming.net und komm nun nicht weiter aufgrund des Fehlers.
Das exakte tut findet ihr hier https://pythonprogramming.net/machine-l ... r-finance/ . Ich habe schon unzählige male probiert panda, numpy zu deinstallieren und habe natürlich auch Lösungsansetze verfolgt die mir nicht geholfen haben. Im Grunde war die Ausgangssitutation mit dieser Fehlermeldung behaftet. (bin mir nicht mehr ganz sicher, zu lange probiert und nichts hat funktioniert)

Code: Alles auswählen

Traceback (most recent call last):
  File "Python_Finance.py", line 4, in <module>
    import matplotlib.pyplot as plt
  File "C:\Python27\lib\site-packages\matplotlib\__init__.py", line 122, in <module>
    from matplotlib.cbook import is_string_like, mplDeprecation, dedent, get_label
  File "C:\Python27\lib\site-packages\matplotlib\cbook.py", line 32, in <module>
    import numpy as np
ImportError: No module named numpy
Worauf ebend numpy installiert wurde über pip und auch über den download numpy‑1.11.3+mkl‑cp27‑cp27m‑win32.whl. (die win 64 Version nimmt er erst garnicht an...)
Auch wurde scipy darüber installiert nur ohne Erfolg.
Nach der Installation von numpy‑1.11.3+mkl‑cp27‑cp27m‑win32.whl kommt dann die beschriebene Fehlermeldung.

Code: Alles auswählen

Traceback (most recent call last):
  File "Python_Finance.py", line 188, in <module>
    do_ml('XOM')
  File "Python_Finance.py", line 165, in do_ml
    X, y, df = extract_featuresets(ticker)
  File "Python_Finance.py", line 159, in extract_featuresets
    y = df['{}_target'.format(ticker)].values
  File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 2059, in __getitem__
    return self._getitem_column(key)
  File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 2066, in _getitem_column
    return self._get_item_cache(key)
  File "C:\Python27\lib\site-packages\pandas\core\generic.py", line 1386, in _get_item_cache
    values = self._data.get(item)
  File "C:\Python27\lib\site-packages\pandas\core\internals.py", line 3543, in get
    loc = self.items.get_loc(item)
  File "C:\Python27\lib\site-packages\pandas\indexes\base.py", line 2136, in get_loc
    return self._engine.get_loc(self._maybe_cast_indexer(key))
  File "pandas\index.pyx", line 132, in pandas.index.IndexEngine.get_loc (pandas\index.c:4433)
  File "pandas\index.pyx", line 154, in pandas.index.IndexEngine.get_loc (pandas\index.c:4279)
  File "pandas\src\hashtable_class_helper.pxi", line 732, in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:13742)
  File "pandas\src\hashtable_class_helper.pxi", line 740, in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:13696)
KeyError: 'ZTS_target'

Vielleicht kennt jemand das Tutorial/Problem und kann mir vielleicht helfen.
BlackJack

@evev: In dem `DataFrame` gibt es diese Spalte offenbar nicht. Da die Daten aus dem Netz geladen werden, hat sich da vielleicht irgendwas geändert‽ Gib an der Stelle doch mal aus welche Spaltennamen es beim `DataFrame` tatsächlich gibt.
evev
User
Beiträge: 27
Registriert: Dienstag 4. April 2017, 12:50

Die Daten wurden alle als csv gespeichert und darauf bezieht er sich.
BlackJack

@evev: Irgendwie habe ich Probleme den Code aus dem Tutorial mit Deinem Traceback in Einklang zu bringen. Laut Traceback wird `do_ml()` mit dem Argument 'XOM' aufgerufen. `do_ml()` ruft dann `extract_featuresets()` mit dem Argument 'XOM' auf und dort wird 'XOM' dann um '_target' ergänzt, also 'XOM_target' und als Schlüssel in den `DataFrame` benutzt und *das* soll dann zu einem `KeyError` wegen 'ZTS_target' führen? Das kann nicht sein. Das passt innerhalb des Tracebacks ja schon nicht zusammen.
evev
User
Beiträge: 27
Registriert: Dienstag 4. April 2017, 12:50

@BlackJack, ich hatte gestern auch noch einmal den Code kopiert und kam zum selben Ergebnis. Liegt das Problem vielleicht bei einem Python Modul?
benutze Python 2.7
BlackJack

@evev: Wenn im Traceback Quelltext und Daten nicht übereinstimmen, dann ist die einzige Ursache die mir so auf Anhieb einfallen würde, dass etwas mit den Datumsangaben bei der Quelltext und der Bytecodedatei nicht stimmt. Lösch am besten mal die zum Quelltext gehörende(n) *.pyc-Datei(en).

Ansonsten sagt dieser KeyError halt einfach genau das aus was er aussagt: In dem `DataFrame` gibt es keine Spalte mit dem Titel 'ZTS_target'. Sollte es die denn geben? Falls ja, musst Du halt herausfinden warum es sie nicht gibt.
evev
User
Beiträge: 27
Registriert: Dienstag 4. April 2017, 12:50

@BlackJack
eine .pyc Datei hinterlegt er nicht. Die ZTS Datei wurde auch heruntergeladen habe gerade nochmal nachgeschaut. Das gleiche passiert auch wenn man den download bspw auf 30 beschränkt dann spuckt er ebend das aus : KeyError: 'AEE_target', Die AEE.csv Datei gibt es aber auch.
BlackJack

Was jetzt immer noch nicht beantwortet ob es diese Spalte überhaupt gibt oder welche Spalten es gibt. Also letztendlich ist die erste Frage natürlich beantwortet: Es gibt diese Spalte *nicht*. Jedenfalls nicht im `DataFrame`. Welche Spalten(namen) gibt es denn im `DataFrame`? Und welche in der CSV-Datei?
evev
User
Beiträge: 27
Registriert: Dienstag 4. April 2017, 12:50

@BJ
wie bekomm ich raus, welcher Spaltenname im DataFrame existiert? In der CSV Datei sind es wahrscheinlich: Date,Open,High,Low,Close,Volume,Adj Close
BlackJack

@evev: Du kannst sie Dir vor der Zeile mit dem `KeyError` einfach mal ausgeben lassen. Und in der Aufzählung aus der CSV-Datei kommt ja auch gar kein ”irgendwas_target” als Spaltenname vor, also müsstest Du irgendwie mal erklären wie das dann im `DataFrame` so sein soll der aus der Datei erstellt wird. Vermute ich mal.
evev
User
Beiträge: 27
Registriert: Dienstag 4. April 2017, 12:50

Alle Daten wurden als Kürzel in jeweils eigenständige csv Datein gespeichert. Bspw ' Intel ' in ' INTC.csv ' oder ' AMD ' in ' AMD.csv '. Die über yahoo generierten Daten sind also für jeden kürzel unterschiedlich, aber immer mit den Daten: Date,Open,High,Low,Close,Volume,Adj Close, sodass eigentlich alles vergleichbar ist.
Antworten