0Pricing
Pandas & NumPy Academy · Lektion

Monatliche Trendvisualisierung

Stellen Sie den monatlichen Umsatz als Liniendiagramm dar, legen Sie einen gleitenden Dreimonatsdurchschnitt darüber und kennzeichnen Sie Monate mit Höchst- und Tiefstwerten.

Monatliche Trendvisualisierung ist eine kostenlose Pandas & NumPy Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Pandas & NumPy Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Pandas & NumPy Academy-Kurs umfasst insgesamt 4 Lektionen.

Monatliche Umsatzsummen berechnen

Aggregieren Sie das Verkaufs-DataFrame vor dem Erstellen des Diagramms zu Monatssummen. Gruppieren Sie nach der Periodenspalte year_month und summieren Sie den Umsatz. Wandeln Sie den PeriodIndex mit .to_timestamp() in einen DatetimeIndex um, damit Matplotlibs Datumsformatierer die Beschriftungen der Achsenmarkierungen korrekt darstellt. Durch das Sortieren nach dem Index verläuft das Liniendiagramm chronologisch von links nach rechts.

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_parquet('sales_features.parquet')

monthly = df.groupby('year_month')['revenue'].sum().sort_index()
monthly.index = monthly.index.to_timestamp()
print(monthly.head())

Monatliches Umsatzliniendiagramm erstellen

Erstellen Sie mit plt.subplots(figsize=(12, 5)) eine Figure und Axes und rufen Sie ax.plot() auf, um den monatlichen Umsatztrend zu zeichnen. Verwenden Sie marker='o', um jeden Monat mit einem Punkt zu markieren, sodass einzelne Datenpunkte auch bei einer glatten Linie sichtbar bleiben. Legen Sie Farbe und Linienstärke so fest, dass der primäre Trend sich deutlich von später hinzugefügten Überlagerungen abhebt.

fig, ax = plt.subplots(figsize=(12, 5))

ax.plot(monthly.index, monthly.values,
        color='steelblue', linewidth=2, marker='o', markersize=5,
        label='Monthly Revenue')

ax.set_title('Monthly Revenue Trend')
ax.set_xlabel('Month')
ax.set_ylabel('Revenue (USD)')
plt.tight_layout()
plt.show()

Einen gleitenden 3-Monats-Durchschnitt überlagern

Eine unbearbeitete monatliche Umsatzlinie kann aufgrund saisonaler Schwankungen unruhig wirken. Überlagern Sie einen mit monthly.rolling(3).mean() berechneten gleitenden 3-Monats-Durchschnitt, um den zugrunde liegenden Trend deutlicher zu zeigen. Zeichnen Sie ihn als gestrichelte Linie in einer kontrastierenden Farbe, damit er sich von der ursprünglichen Reihe abhebt, ohne sie zu verdecken.

rolling_avg = monthly.rolling(3).mean()

ax.plot(rolling_avg.index, rolling_avg.values,
        color='darkorange', linewidth=2, linestyle='--',
        label='3-Month Moving Avg')

ax.legend()
plt.show()

Den Monat mit dem Höchstwert beschriften

Verwenden Sie ax.annotate(), um den Monat mit dem höchsten Umsatz zu markieren. Ermitteln Sie den Höchstwert mit monthly.idxmax() und dessen Wert mit monthly.max(). Der Pfeil der Annotation zeigt von einer Textbeschriftung auf den Datenpunkt mit dem Höchstwert. Dadurch wird die Erkenntnis für alle Leser des Diagramms sofort sichtbar, auch wenn sie es als PNG oder PDF erhalten.

peak_date = monthly.idxmax()
peak_val = monthly.max()

ax.annotate(f'Peak: ${peak_val:,.0f}',
            xy=(peak_date, peak_val),
            xytext=(peak_date, peak_val * 1.1),
            arrowprops=dict(arrowstyle='->', color='red'),
            color='red', fontsize=10)
plt.show()

Den Monat mit dem Tiefstwert beschriften

Markieren Sie analog den Monat mit dem niedrigsten Umsatz mithilfe von monthly.idxmin(), um mögliche saisonale Effekte oder Störungen zu erkennen. Anmerkungen sowohl am Höchst- als auch am Tiefstwert liefern ein vollständiges Bild: So sehen Stakeholder nicht nur den besten Monat, sondern auch, wie stark der Umsatz zurückgehen kann, was in die Cashflow-Planung einfließt.

trough_date = monthly.idxmin()
trough_val = monthly.min()

ax.annotate(f'Trough: ${trough_val:,.0f}',
            xy=(trough_date, trough_val),
            xytext=(trough_date, trough_val * 0.85),
            arrowprops=dict(arrowstyle='->', color='navy'),
            color='navy', fontsize=10)
plt.show()

Datumsbeschriftungen der Achsenticks formatieren

Die standardmäßigen Datumsbeschriftungen der Achsenticks von Matplotlib überlappen häufig oder verwenden ein schlecht lesbares Format. Importieren Sie mdates aus matplotlib und legen Sie einen MonthLocator sowie einen DateFormatter fest, um die Tick-Häufigkeit und das Beschriftungsformat zu steuern. Durch eine Drehung der Tick-Beschriftungen um 45 Grad verhindern Sie Überlappungen auf einer 12-Monats-Achse.

import matplotlib.dates as mdates

ax.xaxis.set_major_locator(mdates.MonthLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter('%b %Y'))

plt.xticks(rotation=45, ha='right')
plt.tight_layout()
plt.show()

Einen schattierten Bereich für Q4 hinzufügen

Heben Sie den Zeitraum Q4 (Oktober–Dezember) mit einem schattierten Hintergrund mithilfe von ax.axvspan() hervor. Dadurch werden saisonale Muster sofort sichtbar: Liegt der Höchstwert regelmäßig innerhalb des schattierten Bereichs, ist Q4 ein wichtiger Verkaufszeitraum, für den sich gezielte Werbeaktionen lohnen. Der Parameter alpha steuert die Transparenz der Schattierung.

import datetime

q4_start = datetime.datetime(2023, 10, 1)
q4_end = datetime.datetime(2023, 12, 31)

ax.axvspan(q4_start, q4_end, alpha=0.15, color='gold', label='Q4')
ax.legend()
plt.show()

Umsatz nach Kategorie im Zeitverlauf darstellen

Erstellen Sie ein Diagramm mit mehreren Linien, wobei jede Linie eine Produktkategorie darstellt. Pivotieren Sie den DataFrame mit Monats- und Kategoriedaten so, dass die Kategorien die Spalten und die Zeit den Index bilden. Durchlaufen Sie anschließend die Spalten und rufen Sie für jede Spalte ax.plot() auf. Matplotlib weist jeder Linie automatisch eine andere Farbe zu, wenn Sie wiederholt dasselbe Axes-Objekt verwenden.

monthly_cat = df.groupby(['year_month', 'category'])['revenue'].sum().unstack('category')
monthly_cat.index = monthly_cat.index.to_timestamp()

fig, ax = plt.subplots(figsize=(12, 6))
for col in monthly_cat.columns:
    ax.plot(monthly_cat.index, monthly_cat[col], label=col, linewidth=1.5)

ax.legend(loc='upper left', fontsize=8)
ax.set_title('Monthly Revenue by Category')
plt.tight_layout()
plt.show()

Gestapeltes Balkendiagramm für den Monatsumsatz

Ein gestapeltes Balkendiagramm zeigt den gesamten Monatsumsatz und macht gleichzeitig den Beitrag jeder Kategorie zum Stapel sichtbar. Verwenden Sie direkt auf dem pivotierten DataFrame monthly_cat.plot(kind='bar', stacked=True, ax=ax). Gestapelte Balken eignen sich am besten für weniger als sechs Kategorien, da die Farben sonst schwer zu unterscheiden sind.

fig, ax = plt.subplots(figsize=(12, 5))

monthly_cat.plot(kind='bar', stacked=True, ax=ax, colormap='tab10')

ax.set_title('Monthly Revenue by Category (Stacked)')
ax.set_xlabel('Month')
ax.set_ylabel('Revenue')
ax.legend(loc='upper left', fontsize=8)
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

Wachstumsrate gegenüber dem Vormonat

Stellen Sie die prozentuale Wachstumsrate gegenüber dem Vormonat zusammen mit dem Umsatz dar, um den Kontext zu verdeutlichen: Ein visuell kleiner Balken im Januar kann beispielsweise einem Wachstumssprung von 20 % gegenüber dem Vormonat entsprechen. Berechnen Sie das Wachstum mit monthly.pct_change() * 100 und stellen Sie es mithilfe von ax.twinx() auf einer zweiten y-Achse dar. So verwenden beide Achsen dieselbe x-Achse, ohne unterschiedliche Einheiten zu vermischen.

growth = monthly.pct_change() * 100

fig, ax1 = plt.subplots(figsize=(12, 5))
ax2 = ax1.twinx()

ax1.bar(monthly.index, monthly.values, width=20, color='steelblue', alpha=0.6, label='Revenue')
ax2.plot(growth.index, growth.values, color='red', marker='o', label='MoM Growth %')

ax1.set_ylabel('Revenue')
ax2.set_ylabel('MoM Growth %')
plt.title('Revenue and Month-over-Month Growth')
plt.tight_layout()
plt.show()

Die Abbildung für Berichte speichern

Verwenden Sie fig.savefig('monthly_trend.png', dpi=150, bbox_inches='tight'), um eine hochauflösende PNG-Datei zu erzeugen, die sich für Präsentationen oder Web-Dashboards eignet. Das Argument bbox_inches='tight' entfernt überschüssigen Weißraum, und dpi=150 sorgt für ein scharfes Bild, ohne die Datei unnötig groß zu machen. Speichern Sie die Abbildung außerdem als PDF für Berichte in Druckqualität.

fig.savefig('monthly_trend.png', dpi=150, bbox_inches='tight')
fig.savefig('monthly_trend.pdf', bbox_inches='tight')
print('Figure saved as PNG and PDF')

Kurzer Test

Testen Sie Ihr Verständnis der Data-Analysis-Konzepte aus dieser Lektion.

Zusammenfassung der Lektion

In dieser Lektion haben Sie Folgendes gelernt: monatliche Umsatzsummen zu berechnen und als Liniendiagramm darzustellen, einen gleitenden Durchschnitt einzublenden sowie Monate mit Höchst- und Tiefstwerten zu annotieren und Abbildungen in Veröffentlichungsqualität als PNG und PDF zu speichern. Als Nächstes untersuchen wir Session-Bildung und Ereignisabfolgen in Daten zum Nutzerverhalten.

Häufig gestellte Fragen

Ist die Lektion „Monatliche Trendvisualisierung“ kostenlos?

Ja — der vollständige Text von „Monatliche Trendvisualisierung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Pandas & NumPy Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Pandas & NumPy Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Monatliche Trendvisualisierung“?

Stellen Sie den monatlichen Umsatz als Liniendiagramm dar, legen Sie einen gleitenden Dreimonatsdurchschnitt darüber und kennzeichnen Sie Monate mit Höchst- und Tiefstwerten. Du übst Pandas & NumPy Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Pandas & NumPy Academy zu starten?

Keine Vorkenntnisse erforderlich. Pandas & NumPy Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Monatliche Trendvisualisierung“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Pandas & NumPy Academy-Lektion Code schreiben und ausführen?

Ja. Jede Pandas & NumPy Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Verkaufsdatensatz laden und prüfen
  2. Umsatzberechnung und Feature Engineering
  3. GroupBy-Analyse nach Region und Kategorie
  4. Monatliche Trendvisualisierung
← Zurück zu Pandas & NumPy Academy