0Pricing
Pandas & NumPy Academy · Lektion

Abschließende Visualisierung und Berichtexport

Erstellen Sie eine mehrteilige Matplotlib-Grafik mit annotierten Diagrammen, exportieren Sie sie als PNG und PDF und schreiben Sie eine strukturierte Zusammenfassung in eine Markdown-Datei.

Abschließende Visualisierung und Berichtexport 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.

Das fertige Ergebnis

In der letzten Phase des Capstone-Projekts werden die berechneten KPIs in ein professionelles, teilbares Ergebnis überführt: eine Matplotlib-Abbildung mit mehreren Panels und beschrifteten Diagrammen sowie ein strukturiertes Markdown-Reporting mit eingebetteten Verweisen auf Visualisierungen. Das erhalten die Stakeholder tatsächlich – klare Visualisierungen und eine zusammenfassende Erläuterung. Gute Visualisierungen verwandeln Zahlen in Erkenntnisse; eine gute Berichtsstruktur macht diese Erkenntnisse nutzbar. In dieser Lektion geht es um den Aufbau von Abbildungen, Beschriftungen, den Export in PNG/PDF und die strukturierte Erstellung von Markdown.

Einrichten der Abbildung mit mehreren Panels

Verwenden Sie plt.subplots() mit figsize und gridspec_kw, um eine Abbildung mit Panels unterschiedlicher Größe zu erstellen. Ein typisches Layout für einen Bericht an Führungskräfte besteht aus einem breiten Trenddiagramm oben sowie einer Heatmap zur Kundenbindung und einem Balkendiagramm für Regionen in der unteren Zeile. Legen Sie mit plt.style.use('seaborn-v0_8-whitegrid') von Anfang an einen einheitlichen Stil fest, damit Sie saubere, professionell wirkende Diagramme erhalten, ohne jedes Element manuell formatieren zu müssen.

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

plt.style.use('seaborn-v0_8-whitegrid')

# 2x2 layout with custom row heights
fig = plt.figure(figsize=(16, 12))
gs = gridspec.GridSpec(2, 2,
                       height_ratios=[1, 1.2],
                       hspace=0.4, wspace=0.35)

ax_trend   = fig.add_subplot(gs[0, :])   # full width top row
ax_heatmap = fig.add_subplot(gs[1, 0])   # bottom left
ax_bar     = fig.add_subplot(gs[1, 1])   # bottom right

print('Figure with 3 panels created.')

Panel 1: Liniendiagramm des monatlichen Umsatztrends

Stellen Sie den monatlichen Gesamtumsatz als Linie mit Markierungen dar, legen Sie einen gleitenden 3-Monats-Durchschnitt darüber und schattieren Sie die Fläche unter der tatsächlichen Linie. Beschriften Sie die Monate mit dem Höchst- und Tiefstwert mithilfe von Pfeilen und Text durch ax.annotate(). So wird die Entwicklung unmittelbar verständlich: wann der Umsatz am höchsten war, wann er zurückging und ob der langfristige Trend positiv ist. Verwenden Sie Farben, die tatsächliche und geglättete Werte unterscheiden, ohne sich gegenseitig zu beeinträchtigen.

import pandas as pd
import matplotlib.pyplot as plt

monthly = pd.read_parquet('output/kpi_monthly_category_revenue.parquet')
monthly_total = monthly.sum(axis=1)

ax = plt.gca()
ax.plot(monthly_total.index, monthly_total.values,
        marker='o', linewidth=2, color='#2196F3', label='Monthly Revenue')
ax.plot(monthly_total.index,
        monthly_total.rolling(3, min_periods=1).mean().values,
        linewidth=2, linestyle='--', color='#FF5722', label='3-Month Avg')
ax.fill_between(monthly_total.index, monthly_total.values, alpha=0.1, color='#2196F3')

# Annotate peak
peak_idx = monthly_total.idxmax()
ax.annotate(f'Peak: ${monthly_total[peak_idx]/1e3:.0f}K',
            xy=(peak_idx, monthly_total[peak_idx]),
            xytext=(0, 20), textcoords='offset points',
            arrowprops=dict(arrowstyle='->', color='#E91E63'),
            color='#E91E63', fontsize=10)
ax.set_title('Monthly Revenue Trend', fontsize=14, fontweight='bold')
ax.legend()
plt.show()

Panel 2: Heatmap zur Kohortenbindung

Visualisieren Sie die Matrix der Kohortenbindung mit Seaborn als farbcodierte Heatmap. Normalisieren Sie die Werte so, dass 100 % (Periode 0) in der hellsten Farbe dargestellt werden und eine sinkende Bindung zunehmend dunkler erscheint. Maskieren Sie NaN-Zellen (zukünftige Perioden, die noch nicht eingetreten sind), damit das Diagramm übersichtlich bleibt. Beschriften Sie jede Zelle mit dem Prozentwert, damit die Werte schnell abgelesen werden können. Dieses Diagramm ist eines der wertvollsten Werkzeuge, um Muster der Kundenloyalität zu verstehen.

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

retention = pd.read_parquet('output/kpi_cohort_retention.parquet')

fig, ax = plt.subplots(figsize=(10, 6))

sns.heatmap(
    retention,
    annot=True,
    fmt='.0%',
    cmap='YlOrRd_r',
    mask=retention.isna(),
    linewidths=0.5,
    ax=ax,
    cbar_kws={'label': 'Retention Rate'}
)
ax.set_title('Cohort Retention Matrix', fontsize=14, fontweight='bold')
ax.set_xlabel('Months After First Purchase')
ax.set_ylabel('Cohort Month')
plt.tight_layout()
plt.show()

Panel 3: Horizontales Balkendiagramm der wichtigsten Regionen

Ein horizontales Balkendiagramm eignet sich ideal, um Regionen (Textbeschriftungen auf der y-Achse) anhand ihres Umsatzes zu vergleichen. Sortieren Sie die Balken absteigend, sodass die beste Region oben steht. Fügen Sie mit ax.text() am Ende jedes Balkens die Umsatzwerte hinzu. Verwenden Sie eine divergierende Farbpalette auf Grundlage des Umsatzanteils – die führende Region erhält die intensivste Farbe. Dieses Diagramm vermittelt unmittelbar die geografische Konzentration und die regionale Leistung.

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import numpy as np

region_kpi = pd.read_parquet('output/kpi_region_summary.parquet')
top5 = region_kpi.head(5).sort_values('total_revenue')

fig, ax = plt.subplots(figsize=(8, 5))
colors = cm.Blues(np.linspace(0.4, 0.9, len(top5)))

bars = ax.barh(top5['region'], top5['total_revenue'], color=colors)
for bar, val in zip(bars, top5['total_revenue']):
    ax.text(bar.get_width() * 1.01, bar.get_y() + bar.get_height()/2,
            f'${val/1e3:.0f}K', va='center', fontsize=9)

ax.set_title('Top 5 Regions by Revenue', fontsize=13, fontweight='bold')
ax.set_xlabel('Total Revenue ($)')
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
plt.tight_layout()
plt.show()

Speichern der Abbildung mit mehreren Panels

Exportieren Sie die fertige Abbildung in zwei Formaten: PNG zum Einbetten in Präsentationen und Webberichte sowie PDF für den hochauflösenden Druck. Verwenden Sie für PNG dpi=150 oder höher, damit die Abbildung bei Bildschirmauflösung scharf dargestellt wird. Übergeben Sie bbox_inches='tight', um abgeschnittene Beschriftungen am Rand der Abbildung zu vermeiden. Speichern Sie die Datei im Ausgabeverzeichnis, das in der Einrichtungsphase des Projekts festgelegt wurde.

import matplotlib.pyplot as plt

# After assembling all panels in the figure
fig.suptitle('2024 Sales Performance Report', fontsize=16,
             fontweight='bold', y=1.02)

# Save as PNG (for web/presentations)
fig.savefig('output/report_figure.png',
            dpi=150,
            bbox_inches='tight',
            facecolor='white')

# Save as PDF (for print)
fig.savefig('output/report_figure.pdf',
            bbox_inches='tight',
            facecolor='white')

print('Figures saved:')
print('  output/report_figure.png')
print('  output/report_figure.pdf')

Erstellen des strukturierten Markdown-Berichts

Erzeugen Sie den Textbericht, indem Sie programmgesteuert eine strukturierte Markdown-Datei schreiben. Fügen Sie eine Kopfzeile, eine Zusammenfassung für Führungskräfte mit den wichtigsten KPIs, zentrale Erkenntnisse aus jedem Analyseabschnitt sowie Verweise auf die gespeicherten Abbildungsdateien ein. Wenn Sie den Bericht aus dem Code heraus erzeugen, statt ihn manuell zu schreiben, erstellt jeder Durchlauf einen aktuellen und korrekten Bericht mit den tatsächlich berechneten Werten. Verwenden Sie Python-f-Strings, um berechnete Zahlen direkt in den Text einzufügen.

import pandas as pd
from datetime import datetime

df = pd.read_parquet('output/analysis_ready.parquet')
region_kpi = pd.read_parquet('output/kpi_region_summary.parquet')
retention = pd.read_parquet('output/kpi_cohort_retention.parquet')

report = f'''
# 2024 Sales Performance Report

Generated: {datetime.now().strftime('%Y-%m-%d %H:%M')}

## Executive Summary

- **Total Revenue**: ${df['revenue'].sum():,.0f}
- **Total Orders**: {df['order_id'].nunique():,}
- **Unique Customers**: {df['customer_id'].nunique():,}
- **Top Region**: {region_kpi.iloc[0]['region']} (${region_kpi.iloc[0]['total_revenue']:,.0f})
- **Average Month-3 Retention**: {retention.get(3, pd.Series([0])).mean():.1%}

## Key Findings

1. Revenue grew steadily through the year with a peak in October.
2. The top region accounts for {region_kpi.iloc[0]['revenue_share']:.0%} of total revenue.
3. Month-3 cohort retention averages {retention.get(3, pd.Series([0])).mean():.1%}.

## Figures

![Revenue Trends](report_figure.png)
'''
with open('output/report.md', 'w') as f:
    f.write(report)
print('Report written to output/report.md')

Beschriftungen zu Diagrammen hinzufügen

Aussagekräftige Diagramme erzählen mithilfe von Beschriftungen eine Geschichte. Verwenden Sie ax.axvline(), um wichtige Ereignisse zu markieren (eine Produkteinführung, eine Preisänderung), ax.axhspan(), um Rezessionszeiträume zu schattieren, und ax.annotate(), um bemerkenswerte Datenpunkte mit Text und Pfeilen hervorzuheben. Beschriften Sie die Achsen mit Einheiten (ax.set_ylabel('Revenue ($)')), fügen Sie einen aussagekräftigen Titel hinzu, verwenden Sie bei mehreren dargestellten Reihen eine Legende und formatieren Sie die Teilstrichbeschriftungen mit ax.yaxis.set_major_formatter(FuncFormatter(...)) gut lesbar.

import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
import pandas as pd

monthly_total = pd.read_parquet('output/kpi_monthly_category_revenue.parquet').sum(axis=1)

fig, ax = plt.subplots(figsize=(12, 5))
ax.plot(monthly_total.index, monthly_total.values, linewidth=2.5, color='#1565C0')

# Format y-axis as $K
ax.yaxis.set_major_formatter(
    mticker.FuncFormatter(lambda x, _: f'${x/1e3:.0f}K')
)

# Mark a hypothetical event
ax.axvline(x='2024-06', color='red', linestyle=':', alpha=0.6)
ax.text('2024-06', monthly_total.max() * 0.95,
        ' Campaign\n Launch', color='red', fontsize=9)

ax.set_title('Monthly Revenue 2024', fontsize=14, fontweight='bold')
ax.set_xlabel('Month')
ax.set_ylabel('Revenue')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

Exportieren von Datentabellen nach Excel

Manche Stakeholder bevorzugen Excel gegenüber Markdown-Berichten. Verwenden Sie pd.ExcelWriter, um mehrere DataFrames in unterschiedliche Tabellenblätter einer einzigen Excel-Arbeitsmappe zu exportieren. Dies ist ein professionelles Ergebnis für Stakeholder aus dem Geschäftsbereich, die die Daten selbst untersuchen möchten. Verwenden Sie startrow und startcol, um Tabellen innerhalb eines Tabellenblatts anzuordnen, und fügen Sie als erstes Tabellenblatt ein Blatt „Summary“ mit den übergeordneten Kennzahlen hinzu.

import pandas as pd

region_kpi = pd.read_parquet('output/kpi_region_summary.parquet')
retention = pd.read_parquet('output/kpi_cohort_retention.parquet')
product_rank = pd.read_parquet('output/kpi_product_ranking.parquet')

with pd.ExcelWriter('output/sales_report_2024.xlsx', engine='openpyxl') as writer:
    region_kpi.to_excel(writer, sheet_name='Region KPIs', index=False)
    retention.to_excel(writer, sheet_name='Cohort Retention')
    product_rank.head(50).to_excel(writer, sheet_name='Top 50 Products', index=False)

print('Excel workbook written: output/sales_report_2024.xlsx')

Automatisieren der Berichtserstellung

Fassen Sie die gesamte Pipeline – Datenaufnahme, Bereinigung, KPI-Berechnung, Visualisierung und Berichtsexport – in einer main()-Funktion zusammen, die über die Befehlszeile ausgeführt werden kann. Verwenden Sie das Python-Modul logging, um Start- und Endzeit, die Zeilenanzahl in jeder Phase sowie erkannte Anomalien zu protokollieren. Eine Pipeline, die mit einem einzigen Befehl python pipeline.py von Anfang bis Ende ausgeführt wird, ist bereit für die zeitgesteuerte Automatisierung mit cron, Airflow oder einem Cloud-Scheduler.

import logging
import time
from datetime import datetime

logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s [%(levelname)s] %(message)s'
)

def main():
    start = time.time()
    logging.info('Pipeline started')

    logging.info('Step 1: Data ingestion')
    # load_and_merge()  # returns df

    logging.info('Step 2: Data cleaning')
    # clean(df)  # returns df_clean

    logging.info('Step 3: KPI computation')
    # compute_kpis(df_clean)  # saves parquet files

    logging.info('Step 4: Visualisation and report export')
    # build_report()  # saves PNG, PDF, markdown, Excel

    elapsed = time.time() - start
    logging.info(f'Pipeline complete in {elapsed:.1f}s')

if __name__ == '__main__':
    main()

Kursabschluss und nächste Schritte

Sie haben den Track Data Analysis: Pandas & NumPy abgeschlossen. Sie können jetzt: NumPy-Arrays mit Broadcasting und linearer Algebra erstellen und transformieren, Pandas-DataFrames aus beliebigen Datenquellen erstellen und bearbeiten, reale Datensätze bereinigen, umformen und aggregieren, Visualisierungen in Publikationsqualität mit Matplotlib und Seaborn erstellen, statistische Tests mit SciPy anwenden, mit Chunking und Dask auf große Datensätze skalieren, Pandas in SQL-Datenbanken integrieren und reproduzierbare End-to-End-Datenpipelines entwickeln. Diese Fähigkeiten bilden die Grundlage für jede datengetriebene Tätigkeit in der Industrie.

Kurztest

Testen Sie Ihr Verständnis der Konzepte zur Datenanalyse aus dieser Lektion.

Zusammenfassung der Lektion

In dieser letzten Lektion haben Sie gelernt: Matplotlib-Abbildungen mit mehreren Panels ermöglichen mit GridSpec professionelle Berichtslayouts, die mehrere Diagrammtypen kombinieren, Beschriftungen (axvline, annotate, text) liefern Diagrammen zusätzlichen Kontext, und die automatisierte Berichtserstellung (Markdown, Excel, PNG, PDF) in einer main()-Funktion macht die Pipeline planbar und reproduzierbar. Herzlichen Glückwunsch zum Abschluss des Pandas-und-NumPy-Tracks – Sie sind nun bereit, Herausforderungen der Datenanalyse aus der Praxis zu bewältigen!

Häufig gestellte Fragen

Ist die Lektion „Abschließende Visualisierung und Berichtexport“ kostenlos?

Ja — der vollständige Text von „Abschließende Visualisierung und Berichtexport“ 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 „Abschließende Visualisierung und Berichtexport“?

Erstellen Sie eine mehrteilige Matplotlib-Grafik mit annotierten Diagrammen, exportieren Sie sie als PNG und PDF und schreiben Sie eine strukturierte Zusammenfassung in eine Markdown-Datei. 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 „Abschließende Visualisierung und Berichtexport“?

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. Projekteinrichtung und Datenimport
  2. Datenbereinigung und Feature Engineering
  3. Analyse und KPI-Berechnung
  4. Abschließende Visualisierung und Berichtexport
← Zurück zu Pandas & NumPy Academy