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!
Matplotlib
-
- User
- Beiträge: 11
- Registriert: Freitag 2. Juli 2021, 15:01
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.
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.
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.
Du mußt beides in die passenden Typen umwandeln.
Am einfachsten geht das, wenn Du pandas benutzt.
-
- User
- Beiträge: 11
- Registriert: Freitag 2. Juli 2021, 15:01
Wie wandelt man den 08:00:01 und 2,940 in den passenden Datumstyp mit pandas um?
-
- User
- Beiträge: 11
- Registriert: Freitag 2. Juli 2021, 15:01
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?
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?
- __blackjack__
- User
- Beiträge: 13100
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@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.
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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
@__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"
-
- User
- Beiträge: 11
- Registriert: Freitag 2. Juli 2021, 15:01
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!
Wenn ihr Tipps und Verbesserungen habt wäre ich damit sehr glücklich!
- __blackjack__
- User
- Beiträge: 13100
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@__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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
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.