{"id":178791,"date":"2026-01-28T13:12:07","date_gmt":"2026-01-28T12:12:07","guid":{"rendered":"https:\/\/liora.io\/de\/?p=178791"},"modified":"2026-02-23T11:35:35","modified_gmt":"2026-02-23T10:35:35","slug":"zeitreihe-python-verarbeitung-und-modellierung","status":"publish","type":"post","link":"https:\/\/liora.io\/de\/zeitreihe-python-verarbeitung-und-modellierung","title":{"rendered":"Zeitreihe Python: Verarbeitung und Modellierung"},"content":{"rendered":"\n<p><strong>Eine Zeitreihe ist eine Datentabelle, die die Entwicklung einer Variablen im Laufe der Zeit wiedergibt. In Python wird die Zeitreihe oft in Form einer Pandas-Reihe verarbeitet, die durch ein DateTime indiziert ist. Dieses Format ist sehr einfach zu verarbeiten und zu visualisieren.<\/strong><\/p>\n\n\n\n<p><strong>Zeitreihen<\/strong> werden in vielen Bereichen wie z. B. der Astronomie und der Meteorologie verwendet, aber wahrscheinlich am h\u00e4ufigsten in der Wirtschaft. Man denke z. B. an die Aktienkurse von Unternehmen oder auch an die Entwicklung der Temperaturen im Laufe der Zeit.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-der-arma-prozess\">Der ARMA-Prozess<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-ar\">AR<\/h3>\n\n\n\n<p>Eine erste Modellierung von Zeitreihen kann mithilfe des AR- oder Autoregressiven Modells erfolgen. Dieses Modell zielt darauf ab, den Wert unserer Zeitreihe zu einem Zeitpunkt t mithilfe einer Summe \u00fcber die p vorherigen Zeitpunkte vorherzusagen.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\" style=\"margin-top:var(--wp--preset--spacing--columns);margin-bottom:var(--wp--preset--spacing--columns)\"><img decoding=\"async\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/06\/series-temporelles-python1.jpg\" alt=\"\" \/><\/figure>\n\n\n\n<p>mit:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Xt der Wert zu einem Zeitpunkt t<\/li>\n\n\n\n<li>epsilon t der Fehler zu einem Zeitpunkt t<\/li>\n\n\n\n<li>alpha i der Koeffizient, der mit Xt-i verbunden ist<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-ma\">MA<\/h3>\n\n\n\n<p>Der <strong>MA- oder Moving-Average-Prozess<\/strong> hingegen versucht, den Wert zu einem Zeitpunkt t aus den Fehlern der letzten q Zeitpunkte vorherzusagen.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\" style=\"margin-top:var(--wp--preset--spacing--columns);margin-bottom:var(--wp--preset--spacing--columns)\"><img decoding=\"async\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/06\/series-temporelles-python2.png\" alt=\"\" \/><\/figure>\n\n\n\n<p>Dabei gilt Folgendes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Xt der Wert zu einem Zeitpunkt t<\/li>\n\n\n\n<li>epsilon t der Fehler zu einem Zeitpunkt t<\/li>\n\n\n\n<li>beta i der Koeffizient, der mit epsilon t-i verbunden ist<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-arma\">ARMA<\/h3>\n\n\n\n<p>Der ARMA-Prozess kombiniert einen AR- und einen MA-Prozess. Er wird als ARMA(p, q) bezeichnet. Die genaue mathematische Formel lautet wie folgt:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\" style=\"margin-top:var(--wp--preset--spacing--columns);margin-bottom:var(--wp--preset--spacing--columns)\"><img decoding=\"async\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/06\/series-temporelles-python3.png\" alt=\"\" \/><\/figure>\n\n\n\n<p>In der gleichen Schreibweise wie oben.<\/p>\n\n\n\n<p>Auch wenn diese Formel erschreckend klingen mag, ist sie in Wirklichkeit sehr einfach zu verstehen.<\/p>\n\n\n\n<p>Konkret bedeutet ein <strong>ARMA(1, 1)-Prozess Folgendes:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><img decoding=\"async\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/06\/series-temporelles-python4.png\" alt=\"\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-grenzen-des-modells\">Grenzen des Modells<\/h3>\n\n\n\n<p>Dieses Modell ist zwar sehr einfach und liefert gute Ergebnisse, hat aber einige Einschr\u00e4nkungen. Zun\u00e4chst einmal liefert dieses Modell nur gute Ergebnisse bei sogenannten station\u00e4ren Zeitreihen, d. h. bei Zeitreihen, deren <a href=\"https:\/\/liora.io\/de\/bayesianische-optimierung-definition-und-funktionsweise\">Mittelwert und Varianz konstant sind.<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\" style=\"margin-top:var(--wp--preset--spacing--columns);margin-bottom:var(--wp--preset--spacing--columns)\"><img decoding=\"async\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/06\/series-temporelles-python5.png\" alt=\"\" \/><\/figure>\n\n\n\n<p>Au\u00dferdem ist es schwierig, die n\u00e4chsten Werte f\u00fcr mehr als t + 1 vorherzusagen, da wir dann kein Feedback mehr \u00fcber den Fehler unseres Modells f\u00fcr den MA-Teil haben.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-python-studie\">Python-Studie<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-erste-analyse\">Erste Analyse<\/h3>\n\n\n\n<p>Um mit der Analyse der Zeitreihe zu beginnen, importieren wir die Pandas-Bibliothek und <a href=\"https:\/\/liora.io\/de\/matplotlib-alles-wissen\">Matplotlib<\/a>, die f\u00fcr die Visualisierung verwendet wird.<\/p>\n\n\n\n<p>In dieser Befehlszeile sind neben dem Namen der Datei, die gelesen werden soll, die Argumente f\u00fcr die Funktion:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>parse_dates:<\/strong> Dieses Argument teilt pandas mit, dass der Dataframe eine Datumsspalte enth\u00e4lt und dass diese die erste Spalte ist.<\/li>\n\n\n\n<li><strong>index_col:<\/strong> gibt an, dass der Index ebenfalls die erste Spalte ist.<\/li>\n\n\n\n<li><strong>squeeze:<\/strong> erm\u00f6glicht die R\u00fcckgabe einer Series und nicht eines Dataframes.<\/li>\n<\/ul>\n\n\n\n<p>Um unsere Analyse zu beginnen, k\u00f6nnen wir unsere Zeitreihe ganz einfach mithilfe der Bibliothek matplotlib.pyplot visualisieren, indem wir die folgende Funktion verwenden:<\/p>\n\n\n\n<p>Mithilfe dieser Funktion erh\u00e4ltst du ein Diagramm, das die Entwicklung unserer Variable im Laufe der Zeit zeigt.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/03\/power-bi-lizenz.webp\" alt=\"power bi lizenz\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-stationaritatstest\">Stationarit\u00e4tstest<\/h3>\n\n\n\n<p>Anschlie\u00dfend wird ein Stationarit\u00e4tstest durchgef\u00fchrt. Der Dickey-Fuller-Test liefert schnell gute Ergebnisse und ist in Python bereits in der Bibliothek Statsmodels implementiert.<\/p>\n\n\n\n<p>Indem wir die Funktion importieren und sie wie folgt verwenden, k\u00f6nnen wir feststellen, ob unsere Zeitreihe durch einen <strong>ARMA-Prozess<\/strong> modelliert werden kann:<\/p>\n\n\n\n<p>Dieser Code-Schnipsel ruft den p-Wert des <strong>Dickey-Fuller-Tests<\/strong> f\u00fcr die Reihe ab. Dieser Wert gibt an, ob die Reihe als station\u00e4r angesehen werden kann. Normalerweise wird sie als station\u00e4r angesehen, wenn der Wert unter 0,05 liegt. Hier liegt unser p-Wert bei 0,053. Wir befinden uns also an der Grenze zur Stationarit\u00e4t, da die Varianz der Reihe nicht wirklich konstant ist, aber du wirst sehen, dass dies sp\u00e4ter kein Problem darstellt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-modellierung\">Modellierung<\/h3>\n\n\n\n<p>Dazu wird ein ARMA-Modell erstellt, dessen Parameter so angepasst werden m\u00fcssen, dass sie der Zeitreihe so gut wie m\u00f6glich entsprechen, was sich als schwierig erweisen kann.<\/p>\n\n\n\n<p>Hier entsprechen die Begriffe p und q der ersten bzw. letzten Stelle des Arguments order der Funktion. Die am Ende hinzugef\u00fcgte Methode fit dient dazu, das Modell zu trainieren, damit es seine Parameter allein bestimmt.<\/p>\n\n\n\n<p>Mit der <strong>Methode summary<\/strong> k\u00f6nnen wir \u00fcberpr\u00fcfen, ob unser Modell gut ist:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\" style=\"margin-top:var(--wp--preset--spacing--columns);margin-bottom:var(--wp--preset--spacing--columns)\"><img decoding=\"async\" src=\"https:\/\/liora.io\/app\/uploads\/2022\/08\/series-temporelles-python7.png\" alt=\"\" title=\"\" \/><\/figure>\n\n\n\n<p>Diese<strong> Tabelle<\/strong> mag beeindruckend erscheinen, ist aber in Wirklichkeit sehr einfach zu interpretieren. Die lila umrandete Spalte entspricht den Parametern des Modells und die blau umrandete Spalte gibt den p-Wert jedes Parameters an. Hier sieht man, dass die Parameter gut sind, denn der p-Wert ist immer kleiner als 0,05. Wenn das nicht der Fall ist, kann man p und q \u00e4ndern, um unn\u00f6tige Parameter zu entfernen.<\/p>\n\n\n\n<p>So kannst die Ergebnisse aufrufen und ansehen:<\/p>\n\n\n\n<p>In Rot ist unser Modell dargestellt, in Blau die tats\u00e4chlichen Werte:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\" style=\"margin-top:var(--wp--preset--spacing--columns);margin-bottom:var(--wp--preset--spacing--columns)\"><img decoding=\"async\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/06\/series-temporelles-python8.png\" alt=\"\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-fazit\">Fazit<\/h2>\n\n\n\n<p>Zusammenfassend l\u00e4sst sich sagen, dass wir unsere Zeitreihe modellieren konnten, aber unser Modell hat einige Einschr\u00e4nkungen, die wir weiter oben besprochen haben. Um nicht-station\u00e4re Zeitreihen zu behandeln, k\u00f6nnen wir das <strong>ARIMA-Modell<\/strong> verwenden, das eine Differenzierung hinzuf\u00fcgt. Wenn unsere Reihe Saisonalit\u00e4t aufweist, d. h. Schwankungen in einem regelm\u00e4\u00dfigen Zeitintervall, solltest du eher das <strong>SARIMA-Modell<\/strong> verwenden. Diese Modelle und noch mehr werden in unserer Weiterbildung f\u00fcr Data Scientists behandelt.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/liora.io\/de\/weiterbildung\/data-ki\/data-scientist\">Data Scientist Weiterbildung<\/a><\/div>\n<\/div>\n\n\n\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Der ARMA-Prozess\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Der ARMA-Prozess kombiniert zwei Modelle: AR (autoregressiv) sagt den Wert aus den p vorherigen Zeitpunkten vorher, MA (Moving Average) nutzt die Fehler der letzten q Zeitpunkte. ARMA(p,q) ist die Kombination beider. Das Modell liefert gute Ergebnisse, hat aber Einschr\u00e4nkungen: Es ben\u00f6tigt station\u00e4re Zeitreihen (konstanter Mittelwert und Varianz) und kann nur schwer Werte f\u00fcr mehr als t+1 vorhersagen, da f\u00fcr den MA-Teil kein Fehler-Feedback mehr vorliegt.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Python-Studie\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Die Analyse umfasst drei Schritte: 1. Erste Analyse mit Pandas (Einlesen mit parse_dates, index_col, squeeze) und Visualisierung mit Matplotlib. 2. Stationarit\u00e4tstest mit Dickey-Fuller-Test (statsmodels) \u2013 p-Wert unter 0,05 zeigt Stationarit\u00e4t an. 3. Modellierung mit ARMA-Modell: Parameter p und q anpassen, Modell mit .fit() trainieren, Qualit\u00e4t \u00fcber .summary() pr\u00fcfen (p-Werte der Parameter unter 0,05). Die Ergebnisse k\u00f6nnen visualisiert werden.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Fazit\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"ARMA-Modelle haben Einschr\u00e4nkungen bei nicht-station\u00e4ren Zeitreihen. F\u00fcr diese F\u00e4lle gibt es erweiterte Modelle: ARIMA (mit Differenzierung) f\u00fcr nicht-station\u00e4re Reihen, SARIMA f\u00fcr Zeitreihen mit Saisonalit\u00e4t (regelm\u00e4\u00dfige Schwankungen). Diese Modelle werden in der Data Scientist Weiterbildung behandelt.\"\n      }\n    }\n  ]\n}\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Eine Zeitreihe ist eine Datentabelle, die die Entwicklung einer Variablen im Laufe der Zeit wiedergibt. In Python wird die Zeitreihe oft in Form einer Pandas-Reihe verarbeitet, die durch ein DateTime indiziert ist. Dieses Format ist sehr einfach zu verarbeiten und zu visualisieren.<\/p>\n","protected":false},"author":82,"featured_media":178793,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"editor_notices":[],"footnotes":""},"categories":[2472],"class_list":["post-178791","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-ki"],"acf":[],"_links":{"self":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/178791","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/users\/82"}],"replies":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/comments?post=178791"}],"version-history":[{"count":5,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/178791\/revisions"}],"predecessor-version":[{"id":219392,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/178791\/revisions\/219392"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/media\/178793"}],"wp:attachment":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/media?parent=178791"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/categories?post=178791"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}