2016-08-08 23 views
0

Ausgehend von den folgenden CSV-Daten in einen Pandas Datenrahmen geladen ...einfache Art und Weise Zeitreihen mit Echtdaten plotten Pandas mit

Buchung;Betrag;Saldo 
27.06.2016;-1.000,00;42.374,95 
02.06.2016;500,00;43.374,95 
01.06.2016;-1.000,00;42.874,95 
13.05.2016;-500,00;43.874,95 
02.05.2016;500,00;44.374,95 
04.04.2016;500,00;43.874,95 
02.03.2016;500,00;43.374,95 
10.02.2016;1.000,00;42.874,95 
02.02.2016;500,00;41.874,95 
01.02.2016;1.000,00;41.374,95 
04.01.2016;300,00;40.374,95 
30.12.2015;234,54;40.074,95 
02.12.2015;300,00;39.840,41 
02.11.2015;300,00;39.540,41 
08.10.2015;1.000,00;39.240,41 
02.10.2015;300,00;38.240,41 
02.09.2015;300,00;37.940,41 
31.08.2015;2.000,00;37.640,41 

... Ich würde eine intuitive Art und Weise wie die Zeit zu plotten Reihe angegeben durch die Daten in Spalte "Buchung" und die Geldwerte in Spalte "Saldo".

versuchte ich

seaborn.tsplot(data=data, time="Buchung", value="Saldo") 

die

ValueError: could not convert string to float: '31.08.2015' 

Was ergibt ist eine einfache Möglichkeit, die Daten und Werte zu lesen und die Zeitreihen zeichnen? Ich nehme an, dass dies ein so häufiges Problem ist, dass es eine Drei-Linien-Lösung geben muss.

+0

Verwenden Sie kein PNG für Daten und Code. Machen Sie sich ein wenig Mühe und tippen Sie es ein. – Kartik

Antwort

3

Sie benötigen eine Datumsspalte in das richtige Format konvertieren:

data['Buchung'] = pd.to_datetime(data['Buchung'], format='%d.%m.%Y') 

Jetzt wird Ihr Grundstück arbeiten.


Auch wenn Sie nicht fragen, ich glaube, Sie auch in ein ähnliches Problem auftreten, weil Ihre Zahlen (in 'Betrag' und 'Saldo') scheinen auch String zu sein. Daher empfehle ich, sie vor dem Plotten in numerische Werte umzuwandeln. Hier ist, wie Sie, dass durch einfache String-Manipulation tun:

data["Saldo"] = data["Saldo"].str.replace('.', '').str.replace(',', '.') 
data["Betrag"] = data["Betrag"].str.replace('.', '').str.replace(',', '.') 

Oder stellen Sie den locale:

import locale 
# The data appears to be in a European format, German locale might 
# fit. Try this on Windows machine: 
locale.setlocale(locale.LC_ALL, 'de') 
data['Betrag'] = data['Betrag'].apply(locale.atof) 
data['Saldo'] = data['Saldo'].apply(locale.atof) 
# This will reset the locale to system default 
locale.setlocale(locale.LC_ALL, '') 

auf einem Ubuntu-Maschine, folgen this answer. Wenn der obige Code auf einem Windows-Computer nicht funktioniert, versuchen Sie locale.locale_alias, um alle verfügbaren Gebietsschemas aufzulisten und den Namen daraus auszuwählen.


Ausgabe

matplotlib Verwendung, da kann ich nicht Seaborn installieren auf dem Rechner aus arbeite ich.

from matplotlib import pyplot as plt 

plt.plot(data['Buchung'], data['Saldo'], '-') 
_ = plt.xticks(rotation=45) 

The Plot

Hinweis: Dies erzeugt wurde, um die locale Methode. Daher sind die Monatsnamen in Deutsch.

+0

Noch nicht. Die Datumsumwandlung funktioniert, aber die Währungswerte unter "Saldo" müssen ebenfalls konvertiert werden, wenn ich die Fehlermeldung richtig interpretiere. – clstaudt

+0

War daran zu arbeiten, siehe die Bearbeitung. Sie sind herzlich willkommen! – Kartik

+0

https://docs.python.org/3.5/library/locale.html#locale.atof Sie müssen "locale.atof" in der Anwendung anwenden. Entschuldigung, dass ich das verpasst habe – Kartik

Verwandte Themen