Seite 1 von 1
Matplotlib
Verfasst: Montag 22. November 2021, 23:02
von Schlummerman
Hallo an Alle!
Ich bin gerade etwas mit historischen Aktiendaten am experimentieren und da habe ich mich gefragt, wie man die in Python mittels Matplotlib darstellen kann
Ich habe es ausprobiert, doch irgendwie ist das Diagramm "Überladen". Ich denke mal es sind zu viele Datensätze(9750 pro Achse).
Wie kann ich nun einen Aktien Chart darstellen? Geht es überhaupt mit Matplotlib?
Danke für eure Vorschläge und Lösungen!

Re: Matplotlib
Verfasst: Montag 22. November 2021, 23:27
von __deets__
Ohne zu sehen, was du da machst, kann man das nicht beurteilen. Das es irgendeine Mindestanzahl an Daten darzustellen gäbe, ist jedenfalls eine recht gewagte Schlussfolgerung.
Re: Matplotlib
Verfasst: Dienstag 23. November 2021, 01:19
von Schlummerman
Um Grunde hat die csv zwei Werte: Uhrzeit und Briefwert als Komma Zahl.
Diese packe ich in jeweils in eine Liste und lasse es dann einfach per Plt.plot(x,y) ausgeben. Allerdings zeigt er wirklich alle Daten an. Daraus wird dann nur ein "schwarzer Balken" vor lauter Text.
Re: Matplotlib
Verfasst: Dienstag 23. November 2021, 08:09
von Sirius3
Dann hast Du wohl die Uhrzeit nicht als Datumsobjekt sondern als String und/oder die Kommazahl nicht als Zahl sondern als String.
Du mußt beides in die passenden Typen umwandeln.
Am einfachsten geht das, wenn Du pandas benutzt.
Re: Matplotlib
Verfasst: Dienstag 23. November 2021, 10:06
von Schlummerman
Wie wandelt man den 08:00:01 und 2,940 in den passenden Datumstyp mit pandas um?
Re: Matplotlib
Verfasst: Dienstag 23. November 2021, 10:10
von __deets__
Indem man es benutzt wie *ausführlich* dokumentiert. Wo ist dein Code, wo deine Beispieldaten, was verstehst du nicht?
Re: Matplotlib
Verfasst: Dienstag 23. November 2021, 11:09
von Schlummerman
Akutell läuft das so:
import matplotlib.pyplot as plt
import csv
import numpy as np
import math
from datetime import datetime
y = []
x = []
with open('Test.csv') as csvfile:
readCSV = csv.reader(csvfile, delimiter=",")
for row in readCSV:
splitter = row[1].split(",")
setter = splitter[0] + "." + splitter[1]
y.append(float(setter))
x.append(datetime.strptime(row[0], "%H:%M:%S"))
x.reverse()
y.reverse()
plt.plot(x,y)
plt.title(f"Kurs daten von heute")
plt.show()
#plt.savefig(f"{sym}.png")
Die Daten ziehe ich mir aus der Börse Frankfurt.
und kommen als CSV Datei an.
beispiel: Uhr 08:00:01 und Wert 2,990
wie Wandel ich das ganze jetzt mit pandas um?

Re: Matplotlib
Verfasst: Dienstag 23. November 2021, 11:27
von __blackjack__
@Schlummerman: Da ist tatsächlich der CSV-Trenner das Komma *und* die Zahlen enthalten ein Dezimal*komma*? Also klar ist das möglich, aber nicht so wirklich wahrscheinlich.
Wenn da nur die Uhrzeit ohne Datum ist, dann will man sehr wahrscheinlich die Tick-Beschriftungen explizit beeinflussen, damit da nicht irgendwo doch mal das Datum 01.01.1900 in der Beschriftung auftaucht.
"," durch "." ersetzen geht einfacher in dem man genau das macht: das "," durch "." ersetzen. Zeichenketten haben dafür eine Methode.
Re: Matplotlib
Verfasst: Dienstag 23. November 2021, 11:40
von __deets__
Der Plan war schon, dass *du* versuchst das mit pandas zu lösen. Und bei Problemen den dazugehörigen Code zeigst.
Re: Matplotlib
Verfasst: Dienstag 23. November 2021, 12:03
von __deets__
@__blackjack__: doch, das Format ist so, dank "":
Code: Alles auswählen
"TIME";"ISIN";"PRODUCT TYPE";"ISSUER";"UNDERLYING";"PRICE";"VOLUME"
"22.11.2021 21:59:55";"DE000PF7KWW7";"Optionsschein Call";"BNP Paribas Emissions- und Handelsges.";"NASDAQ 100";"7,37";"200"
"22.11.2021 21:59:38";"DE000VX22VN6";"Optionsschein Put";"Vontobel Financial Products GmbH";"Nvidia Corporation";"0,25";"2000"
"22.11.2021 21:59:38";"DE000VP2ABQ5";"Knock-Out & Open-End Knock-Out Call";"Vontobel Financial Products GmbH";"Newmont Corp.";"1";"100"
"22.11.2021 21:59:33";"DE000DV4KUE0";"Knock-Out & Open-End Knock-Out Put";"DZ BANK AG";"DAX Performance";"3,62";"93"
Re: Matplotlib
Verfasst: Dienstag 23. November 2021, 12:38
von Schlummerman
Also es funktioniert er ruft die Grafik lesbar auf. Auch ohne Pandas
Wenn ihr Tipps und Verbesserungen habt wäre ich damit sehr glücklich!

Re: Matplotlib
Verfasst: Dienstag 23. November 2021, 13:25
von __blackjack__
@__deets__: Ich weiss dass das geht, aber das was Du da jetzt zeigst ist ja was anderes, denn da sind Semikolons als Trenner auf CSV-Ebene. Der Code vom OP behauptet Komma für CSV-Trenner *und* Dezimaltrenner. Wie gesagt, das geht, aber es ist unwahrscheinlich.
Re: Matplotlib
Verfasst: Dienstag 23. November 2021, 13:43
von __deets__
Ah, ich habe nur auf die Formatierung der Zahlwerte geachtet. Vor allem denke ich wird es schon beim TE sein wie angegeben, denn sonst würde er ja nicht das Problem haben, das er hat, sondern schon vorher scheitern.