Hallo in die Runde,
wenn ich für eine Datenreihe (pandas.DataFrame) über rolling und mean den gleitenden Durchschnitt berechne, fehlt mir logischerweise der erste Teil der Linie, da mir Punkte für die "Vergangenheit" fehlen.
Nun kenne ich interpolate-Funktionen für das Füllen von fehlenden Daten oder "Glätten" einer Kurve, aber es muss doch auch irgendwie möglich sein, diesen gleitenden Durchschnitt im Anfangsbereich zu interpolieren?
Geht das?
Wie?
Danke euch!
pandas / rolling().mean() / interpolate Anfangsbereich
- PythonTrader
- User
- Beiträge: 55
- Registriert: Montag 13. Februar 2017, 22:31
Nach Basic, Pascal, Visual Basic, C++, Visual C, HTML und PHP folgt endlich Python und Shell!
- PythonTrader
- User
- Beiträge: 55
- Registriert: Montag 13. Februar 2017, 22:31
Das ist natürlich ein Argument.__deets__ hat geschrieben:Warum willst du lügen? Du hast keine Daten. Du müsstest sie extrapolieren. Nach welcher Vorschrift?
Also auf die "Schönheit" des Graphen verzichten oder diesen erst ab dem ersten möglichen Datenpunkt des Durchschnitts anzeigen?
Oder siehst du noch eine andere Möglichkeit?
P.S. Und wie würde das Extrapolieren(=Lügen) funktionieren?
Nach Basic, Pascal, Visual Basic, C++, Visual C, HTML und PHP folgt endlich Python und Shell!
Was du darstellen magst kannst nur du wissen. Wenn dein Publikum nur am Durchschnitt interessiert ist, kannst du abschneiden. Ich würde es nicht machen.
Extrapolieren kannst du zb mit einer Funktion die du gefittet hast. Damit kannst du dann Daten generieren.
Extrapolieren kannst du zb mit einer Funktion die du gefittet hast. Damit kannst du dann Daten generieren.
- PythonTrader
- User
- Beiträge: 55
- Registriert: Montag 13. Februar 2017, 22:31
Ah, also durch interpolieren habe ich f(x) und berechne einfach die ersten Werte? Wie einfach ... danke dir!__deets__ hat geschrieben:Extrapolieren kannst du zb mit einer Funktion die du gefittet hast. Damit kannst du dann Daten generieren.
Nach Basic, Pascal, Visual Basic, C++, Visual C, HTML und PHP folgt endlich Python und Shell!
- PythonTrader
- User
- Beiträge: 55
- Registriert: Montag 13. Februar 2017, 22:31
Also ich nutze aus interp1d aus scipy.interpolate. Ist das nicht dasselbe wie fitten?__deets__ hat geschrieben:Ich weiss jetzt nicht, wieso du fitten und interpolieren gleichsetzt. Ersteres kann dazu genutzt werden, letzteres zu machen - aber umgekehrt geht da nix.
Nach Basic, Pascal, Visual Basic, C++, Visual C, HTML und PHP folgt endlich Python und Shell!
Wenn ich schon sage, das es nicht dasselbe ist, dann wohl kaum
Fitting ist der Versuch, eine Funktion zu finden, die deine Daten moeglichst gut nachbildet. Dann kannst du auch ausserhalb der bekannten Werte Daten erzeugen. Wie *sinnvoll* die sind, ist immer fraglich, darum nenne ich das ganze ja luegen.
Fitting ist aber ein kompliziertes Ding, da gibt es keine one-size-fits-all Loesung. Du musst schon wissen, wie deine Daten aussehen, und was dein Fitting fuer Eigenschaften haben soll.
Interpolieren geht immer nur zwischen Werten, die bekannt sind. Das ist ja nun genau das, was du schon kannst, wobei dir halt werte "fehlen".
Warum ist das denn ueberhaupt ein Problem, das du keine Daten hast?
Fitting ist der Versuch, eine Funktion zu finden, die deine Daten moeglichst gut nachbildet. Dann kannst du auch ausserhalb der bekannten Werte Daten erzeugen. Wie *sinnvoll* die sind, ist immer fraglich, darum nenne ich das ganze ja luegen.
Fitting ist aber ein kompliziertes Ding, da gibt es keine one-size-fits-all Loesung. Du musst schon wissen, wie deine Daten aussehen, und was dein Fitting fuer Eigenschaften haben soll.
Interpolieren geht immer nur zwischen Werten, die bekannt sind. Das ist ja nun genau das, was du schon kannst, wobei dir halt werte "fehlen".
Warum ist das denn ueberhaupt ein Problem, das du keine Daten hast?
Wenn du den gleitenden Mittelwert plotten willst, dann solltest du das auch tun und nur das, das macht die Doku nämlich einfacher.PythonTrader hat geschrieben:Also auf die "Schönheit" des Graphen verzichten oder diesen erst ab dem ersten möglichen Datenpunkt des Durchschnitts anzeigen?
Du musst den Plot einfach nur mit gleitender Mittelwert von Y beschreiben. Du brauchst nicht zu erklären was der gleitende Mittelwert ist oder
wie er berechnet wird.
Wenn du an den Anfang und das Ende der Kurve noch Daten dazu-berechnest, dann musst du ein Vielfaches dokumentieren.
Denn diese Daten sind eben kein gleitender Mittelwert von Y mehr. Sie werden anders berechnet, diese andere Berechnung musst
du beschreiben, im Plot musst du zeigen wo der gleitende Mittelwert anfängt und aufhört und was deine anders berechneten Daten sind.
Extrapolieren ist nicht Lügen. Gelogen ist es nur, wenn du es heimlich machst ohne im Plot klar zu kennzeichnen welche Daten echt sind und welchePythonTrader hat geschrieben:P.S. Und wie würde das Extrapolieren(=Lügen) funktionieren?
extrapoliert sind.
Auf
https://de.wikipedia.org/wiki/Nigeria#E ... %B6lkerung
werden in der Tabelle gemessene Daten und extrapolierte Daten angezeigt.
Es ist nicht gelogen eine Bevölkerungsschätzung für 2030 und 2050 zu machen.
In meinem Plot zu diesen Daten
zeige ich aber nur echte Daten (+ minimale Extrapolation bis 2019), weil ich das Ganze nicht unnötig kompliziert machen wollte mit der Kennzeichnung der Prognose.
- PythonTrader
- User
- Beiträge: 55
- Registriert: Montag 13. Februar 2017, 22:31
Entschuldige die späte Rückmeldung.
Vielen Dank für die Erläuterungen. Ich werde mich mit dem Extrapolieren beschäftigen, es aber nur selten und dann dokumentiert nutzen.
Danke allen!
Vielen Dank für die Erläuterungen. Ich werde mich mit dem Extrapolieren beschäftigen, es aber nur selten und dann dokumentiert nutzen.
Danke allen!
Nach Basic, Pascal, Visual Basic, C++, Visual C, HTML und PHP folgt endlich Python und Shell!
Wie lange reichen denn deine Datasets zurück und welchen Bereich willst du dir anzeigen? Bei den meisten Sachen berechne ich - aus Faulheit - z. B. gleitende Durchschnitte von Beginn an mit der von dir beschriebenen Lücke und plotte nur z. B. das letzte Jahr oder einen Ausschnitt, der mich interessiert. Wenn ich mich nicht gerade für den Anfang des Datensets interessiere, habe ich da "überall" schön durchgehende gleitende Durchschnitte.
Alle anderen Überlegungen - meine Meinung - sind nicht praktikabel, weil du falsche Werte generierst und kaum noch unterscheiden kannst, was jetzt real und was eben nur der Optik wegen da ist. Das führt dann leicht zu Fehlschlüssen usw., die du kaum noch später ausfindig machen kannst.
BTW: Bei matplotlib nutze ich schon mal die Achsenbeschriftungen, um mir nach einem Zeilenumbruch was unterzubringen (aber meist nur das erste und letzte Datum, das in den Plot Eingang gefunden hat).
Alle anderen Überlegungen - meine Meinung - sind nicht praktikabel, weil du falsche Werte generierst und kaum noch unterscheiden kannst, was jetzt real und was eben nur der Optik wegen da ist. Das führt dann leicht zu Fehlschlüssen usw., die du kaum noch später ausfindig machen kannst.
BTW: Bei matplotlib nutze ich schon mal die Achsenbeschriftungen, um mir nach einem Zeilenumbruch was unterzubringen (aber meist nur das erste und letzte Datum, das in den Plot Eingang gefunden hat).