Datenanalyse mit Python: Pandas und NumPy Leitfaden für Einsteiger mit Visualisierung

Was ist Datenanalyse mit Python, und was leisten Pandas und NumPy dabei?
Datenanalyse mit Python bedeutet, Rohdaten per Python Code einzulesen, zu bereinigen, zusammenzufassen und als Diagramm darzustellen. NumPy liefert schnelle numerische Arrays und vektorisierte Rechenoperationen. Pandas setzt darauf auf und ergänzt beschriftete Zeilen und Spalten, sodass Sie Tabellen wie in Excel direkt im Code steuern. Matplotlib zeichnet anschließend die Diagramme.
Zur Datenanalyse mit Python bin ich über das Marketing gekommen. Seit 2012 arbeite ich mit Reports aus Google Ads und SEO, und irgendwann hatten meine Tabellen 300.000 Zeilen. Genau dann habe ich angefangen, Code zu schreiben. Dieser Leitfaden sammelt die praktischen Notizen, die ich mir damals gewünscht hätte. Jeder Abschnitt enthält ein kurzes Beispiel zum Ausprobieren.
Ich stelle hier weder das komplette Bibliotheksangebot vor noch maschinelles Lernen. Das Ziel ist enger gefasst: Sie sollen Ihre erste echte Analyse mit Pandas, NumPy und Matplotlib abschließen. Weitere Beiträge finden Sie in der Kategorie Software.
Was müssen Sie vor dem Start installieren?
Zunächst brauchen Sie eine aktuelle Python Version. Laut den Versionshinweisen zu pandas 3.0 setzt die neue Version mindestens Python 3.11 und NumPy 1.26 voraus. Mit einem alten Interpreter scheitert also schon die Installation. Danach legen Sie für jedes Projekt eine eigene virtuelle Umgebung an.
python3 -m venv .venv
source .venv/bin/activate
pip install pandas numpy matplotlib jupyterlabZum Lernen eignet sich JupyterLab gut, denn Sie sehen die Ausgabe jeder Zelle sofort. Die Notebook Funktion in VS Code erfüllt allerdings denselben Zweck. Egal, wofür Sie sich entscheiden: Halten Sie alle Dateien in einem Projektordner und legen Sie Rohdaten in einen eigenen Ordner data.
- Python 3.11 oder neuer, die Untergrenze für pandas 3.
- Eine virtuelle Umgebung, damit Projekte keine Versionen teilen.
- JupyterLab oder VS Code für schrittweise Experimente.
- Eine echte CSV Datei, am besten Ihr eigener Export aus Werbung oder Verkauf.
Warum ist ein NumPy Array schneller als eine normale Python Liste?
Ein NumPy Array (ndarray) speichert alle Elemente mit demselben Typ in einem zusammenhängenden Speicherblock. Deshalb erledigen in C geschriebene Schleifen die Arbeit, und Python spart sich die Typprüfung für jedes einzelne Element. Das nennt man Vektorisierung: Sie wenden eine Operation auf das ganze Array an, ohne eine Schleife zu schreiben.
import numpy as np
klicks = np.array([120, 340, 95, 410])
kosten = np.array([300.0, 720.0, 250.0, 900.0])
cpc = kosten / klicks
print(cpc.round(2)) # Kosten pro KlickKonkret berechnet diese eine Zeile die Kosten pro Klick für vier Kampagnen. Mit einer Liste bräuchten Sie eine Schleife und eine Hilfsliste. Zudem wächst der Unterschied bei Millionen Zeilen von Millisekunden auf Minuten.
Am häufigsten nutzen Sie die Begriffe shape, dtype, Slicing und Broadcasting. Broadcasting verknüpft Arrays unterschiedlicher Größe nach klaren Regeln. So multiplizieren Sie zum Beispiel alle Preise in einem Schritt mit einem Steuersatz.
Welche NumPy Berechnungen brauchen Sie am häufigsten?
Im Alltag nutzen Sie NumPy meist indirekt, weil Pandas es im Hintergrund aufruft. Trotzdem lohnt es sich, einige Funktionen direkt zu kennen. Konkret vergibt np.where Werte nach einer Bedingung, und np.percentile ermittelt Quantile.
import numpy as np
bestellungen = np.array([150, 90, 1200, 340, 75, 610])
print(bestellungen.mean(), np.median(bestellungen))
print(np.percentile(bestellungen, [25, 75]))
label = np.where(bestellungen >= 500, "gross", "klein")Achten Sie auf den Abstand zwischen Mittelwert und Median. Denn eine einzige große Bestellung zieht den Mittelwert nach oben, der Median bleibt dagegen fast stabil. Daher ergänze ich bei schiefen Kennzahlen wie dem Warenkorbwert immer auch den Median.
Für zufällige Beispieldaten nutzen Sie np.random.default_rng(). Die NumPy Dokumentation empfiehlt diesen Generator statt des älteren Musters np.random.seed. Mehr Tiefe bietet der kurze und verlässliche NumPy Leitfaden für Einsteiger.
Was genau sind ein Pandas DataFrame und eine Series?
Eine Series ist eine beschriftete, eindimensionale Spalte. Ein DataFrame ist eine zweidimensionale Tabelle aus mehreren Series mit gemeinsamem Index. Kurz gesagt: Ein DataFrame ist eine Tabellenkalkulation, die Sie mit Code steuern. Der Unterschied liegt darin, dass jeder Schritt dokumentiert bleibt, also können Sie den Report morgen mit einem Klick wiederholen.
import pandas as pd
df = pd.DataFrame({
"kampagne": ["Marke", "Generisch", "Wettbewerb"],
"kosten": [1200.0, 3400.0, 900.0],
"conversions": [48, 61, 9],
})
print(df.dtypes)Mit pandas 3.0 hat sich das Verhalten von Textspalten geändert. Laut Versionshinweisen erhalten Texte jetzt standardmäßig einen eigenen Datentyp str statt des alten Typs object. Zeigt ein älteres Tutorial also object, ist das kein Grund zur Sorge. Derselbe Code gibt in der neuen Version str aus.
Zudem verdient der Index eigene Aufmerksamkeit. Standardmäßig zählt er ab null. Allerdings erleichtert eine sinnvolle Spalte wie Datum oder Artikelnummer als Index die Arbeit mit Zeitreihen erheblich.
Wie lesen Sie CSV und Excel Dateien für die Datenanalyse mit Python ein?
In der Praxis beginnt fast jede Analyse mit dem Einlesen einer Datei. Pandas bietet dafür read_csv, read_excel und read_json. Exporte aus deutschen Systemen verwenden oft das Semikolon als Trennzeichen und das Komma als Dezimalzeichen. Deshalb geben Sie diese Parameter von Anfang an ausdrücklich an.
df = pd.read_csv(
"data/werbung.csv",
sep=";",
decimal=",",
parse_dates=["datum"],
)
df.head()Für Excel Dateien installieren Sie zusätzlich das Paket openpyxl. Außerdem hält usecols den Speicherbedarf bei großen Dateien niedrig, da Pandas überflüssige Spalten gar nicht erst lädt. Mit parse_dates sparen Sie sich später eine eigene Umwandlung.
Stammen die Daten aus einer Werbeplattform, sparen einheitliche Kampagnennamen später viele Stunden. Aus diesem Grund versehe ich Links schon vorab mit einem festen Namensschema über den UTM Generator.
Welche Befehle sollten Sie beim ersten Blick auf die Daten ausführen?
Springen Sie nach dem Einlesen nicht sofort in die Berechnungen. Verschaffen Sie sich zunächst ein Bild davon, wie die Daten aussehen. Ich nehme mir dafür jedes Mal fünf Minuten, und genau hier finde ich die meisten Fehler.
- df.shape zeigt die Anzahl der Zeilen und Spalten.
- df.info() listet Datentypen und gefüllte Werte je Spalte.
- df.describe() liefert Kennzahlen für numerische Spalten.
- df.head() und df.sample(5) zeigen echte Zeilen.
- df["spalte"].value_counts() macht die Verteilung von Kategorien sichtbar.
Erscheint die Kostenspalte etwa als str, stehen darin vermutlich Texte wie "1.250,00 EUR". Das heißt, Sie müssen sie vor dem Summieren bereinigen. Ebenso scheitert eine monatliche Gruppierung, wenn die Datumsspalte keinen Datumstyp hat.
Prüfen Sie außerdem Minimum und Maximum in der Ausgabe von describe(). Denn negative Kosten oder eine einzelne Bestellung über zehn Millionen deuten auf einen Eingabefehler hin.
Wie bereinigen Sie fehlende und fehlerhafte Daten?
Die Bereinigung ist der längste, aber auch wertvollste Teil jeder Analyse. Mit isna().sum() finden Sie fehlende Werte, mit duplicated() doppelte Zeilen. Dann treffen Sie für jeden Fall eine bewusste Entscheidung: löschen, auffüllen oder markieren.
print(df.isna().sum())
df = df.drop_duplicates()
df["kosten"] = (
df["kosten"].astype(str)
.str.replace("EUR", "", regex=False)
.str.replace(".", "", regex=False)
.str.replace(",", ".", regex=False)
.astype(float)
)
df["conversions"] = df["conversions"].fillna(0)Fehlende Conversions mit 0 aufzufüllen ist sinnvoll, denn ohne Eintrag gab es auch keine Conversion. Andererseits würde ein fehlender Preis mit 0 jeden Durchschnitt verfälschen. Die richtige Füllung hängt also von der Bedeutung der Spalte ab. Eine Regel für alle Fälle gibt es also nicht.
Korrigieren Sie in Textspalten auch Leerzeichen und Groß- und Kleinschreibung. Mit str.strip() und str.lower() werden "Marke " und "marke" zur selben Kampagne. Sonst tauchen sie nach dem Gruppieren als zwei Zeilen auf.
Wie filtern und wählen Sie Zeilen aus?
Für die Auswahl haben Sie zwei Hauptwerkzeuge: loc arbeitet mit Beschriftungen, iloc mit Positionen. Für bedingte Filter schreiben Sie einen logischen Ausdruck in eckige Klammern. Mehrere Bedingungen verbinden Sie mit & und |, wobei jede Bedingung eigene Klammern bekommt.
teuer = df[(df["kosten"] > 1000) & (df["conversions"] < 10)]
# Werte immer über loc zuweisen
df.loc[df["conversions"] == 0, "status"] = "pruefen"Hier gilt seit pandas 3.0 eine wichtige Regel. Laut Versionshinweisen ist Copy on Write jetzt der Standard, also verhält sich jedes Ergebnis einer Indizierung für Sie wie eine Kopie. Folglich verändert eine verkettete Zuweisung wie df[maske]["spalte"] = wert die Tabelle überhaupt nicht mehr. Auch die alte Warnung SettingWithCopyWarning entfällt.
Die Lösung ist einfach: Weisen Sie Werte immer mit df.loc[maske, "spalte"] zu. Für Textsuche nutzen Sie str.contains(), für Listenabgleiche isin(). Details stehen in den Versionshinweisen zu pandas 3.0.
Wie berechnen Sie neue Spalten und Kennzahlen?
Abgeleitete Kennzahlen machen eine Analyse erst wertvoll. Rechnen Sie zwischen Pandas Spalten, arbeitet im Hintergrund die vektorisierte Logik von NumPy, somit brauchen Sie keine Schleife. Eine Division durch null sollten Sie allerdings von vornherein abfangen.
df["cpc"] = df["kosten"] / df["klicks"]
df["conv_rate"] = df["conversions"] / df["klicks"]
df["cpa"] = df["kosten"] / df["conversions"].replace(0, np.nan)In der letzten Zeile ersetze ich Nullen durch NaN. Dadurch zeigen Kampagnen ohne Conversion eine leere Zelle statt unendlich, und Durchschnitte bleiben korrekt. Was diese Kennzahlen geschäftlich bedeuten, erkläre ich im Beitrag über Online Marketing KPIs.
Zum Einteilen in Bereiche ist pd.cut sehr praktisch. Sie können etwa Warenkorbwerte in drei Stufen teilen und dann den Anteil jeder Stufe berechnen. Wollen Sie eine prozentuale Veränderung von Hand prüfen, bietet der Prozentrechner eine schnelle Gegenprobe.
Wie fassen Sie Daten mit groupby zusammen?
groupby ist die mächtigste Funktion in Pandas und folgt dem Muster Teilen, Anwenden, Zusammenführen. Zuerst teilt sie die Zeilen nach einer Spalte in Gruppen auf. Dann wendet sie auf jede Gruppe eine Aggregation an und führt die Ergebnisse schließlich in einer Tabelle zusammen. Das entspricht einer Pivot Tabelle in Excel.
uebersicht = (
df.groupby("kampagne")
.agg(kosten=("kosten", "sum"),
conversions=("conversions", "sum"),
tage=("datum", "nunique"))
.assign(cpa=lambda t: t["kosten"] / t["conversions"])
.sort_values("cpa")
)Zunächst nutze ich hier benannte Aggregationen, damit die Ergebnisspalten von Anfang an klare Namen tragen. Zudem berechne ich Quoten aus den Gruppensummen. Den Durchschnitt zeilenweiser Quoten zu bilden ist ein häufiger Fehler, denn kleine Kampagnen erhalten dabei dasselbe Gewicht wie große.
Für Zusammenfassungen nach Zeit nutzen Sie resample. Sobald die Datumsspalte der Index ist, liefert df.resample("W").sum() Wochensummen, und "MS" liefert Summen je Monatsanfang.
Wie funktionieren merge und Pivot Tabellen?
Allerdings kommen echte Projekte selten mit einer einzigen Datei aus. Die Werbekosten stehen in einem Export, die Bestellungen in einem anderen. Um zwei Tabellen über einen gemeinsamen Schlüssel zu verbinden, nutzen Sie merge. Das funktioniert nach derselben Logik wie ein JOIN in SQL.
verbunden = werbung.merge(bestellungen, on=["datum", "kampagne"], how="left", validate="one_to_one")
pivot = verbunden.pivot_table(
index="kampagne", columns="geraet",
values="umsatz", aggfunc="sum", fill_value=0,
)Den Parameter validate empfehle ich ausdrücklich. Wiederholt sich ein Schlüssel, meldet Pandas einen Fehler, statt Zeilen stillschweigend zu vervielfachen. Nach meiner Erfahrung ist ein aufgeblähter Umsatz nach dem Verbinden der häufigste Analysefehler überhaupt.
- how="left" behält alle Zeilen der linken Tabelle.
- how="inner" behält nur Zeilen mit Treffer auf beiden Seiten.
- how="outer" behält alles und lässt Lücken ohne Treffer leer.
- pd.concat hängt Dateien mit gleicher Struktur untereinander.
Wie visualisieren Sie Ergebnisse der Datenanalyse mit Python in Matplotlib?
Zahlen in einer Tabelle reichen selten aus, denn Entscheider wollen den Trend auf einen Blick sehen. Die Methode .plot() an Pandas Objekten ruft Matplotlib direkt auf, also brauchen schnelle Diagramme keinen zusätzlichen Code. Für Diagramme in einer Präsentation wechseln Sie dann zur objektorientierten Schnittstelle von Matplotlib.
import matplotlib.pyplot as plt
woche = df.set_index("datum").resample("W")[["kosten", "umsatz"]].sum()
fig, ax = plt.subplots(figsize=(9, 4))
woche.plot(ax=ax, marker="o")
ax.set_title("Kosten und Umsatz pro Woche")
ax.set_ylabel("EUR")
fig.tight_layout()
fig.savefig("woche.png", dpi=150)Als Datei gespeichert, lässt sich das Diagramm direkt in jeden Report und jede E-Mail einfügen. Verschicken Sie außerdem nie ein Diagramm ohne Titel und Achsenbeschriftung. Denn drei Wochen später wissen selbst Sie nicht mehr, was es zeigt. Der Schnellstart von Matplotlib erklärt die beiden Schnittstellen gut.
Welcher Diagrammtyp passt zu welcher Frage?
Die Wahl des Diagramms hängt zuerst von der Frage ab und erst danach vom Stil. Ein falsches Diagramm lässt selbst korrekte Daten irreführend wirken. Die folgende Tabelle zeigt die Kombinationen, die Sie als Einsteiger am häufigsten brauchen.
| Ihre Frage | Diagramm | Pandas Kurzbefehl |
|---|---|---|
| Wie hat es sich über die Zeit verändert? | Liniendiagramm | df.plot() |
| Wie ordnen sich Kategorien? | Horizontaler Balken | df.plot.barh() |
| Wie verteilen sich die Werte? | Histogramm | df["x"].plot.hist(bins=30) |
| Bewegen sich zwei Größen gemeinsam? | Streudiagramm | df.plot.scatter(x="a", y="b") |
| Wo liegen Ausreißer? | Boxplot | df.plot.box() |
Das Kreisdiagramm fehlt mit Absicht. Ab drei Segmenten kann das Auge Flächen kaum noch vergleichen, und ein horizontaler Balken zeigt dieselbe Information klarer. Wenn Sie zwei Kennzahlen in einem Diagramm zeigen, seien Sie zudem vorsichtig mit einer zweiten Werteachse. Unterschiedliche Skalen erzeugen leicht den Eindruck eines Zusammenhangs, den es gar nicht gibt.
Bleiben Sie auch bei Farben zurückhaltend. Eine Akzentfarbe und Grautöne lesen sich deutlich schneller als ein bunter Regenbogen.
Praxisbeispiel: Wie analysieren Sie Werbe und Verkaufsdaten von Anfang bis Ende?
Jetzt setzen wir die Teile also zusammen. Es handelt sich um ein Beispielszenario, nicht um echte Kundendaten. Angenommen, Sie haben einen täglichen Werbeexport und eine Bestellliste. Ziel ist es herauszufinden, welche Kampagne mehr Umsatz bringt, als sie kostet.
- Beide Dateien mit passenden Einstellungen für Trennzeichen und Datum einlesen.
- Kampagnennamen mit str.strip().str.lower() vereinheitlichen.
- Über Datum und Kampagne mit merge verbinden und validate setzen.
- Kosten und Umsatz je Kampagne mit groupby summieren.
- Den ROAS aus den Gruppensummen berechnen.
- Ein horizontales Balkendiagramm zeichnen und die Tabelle als CSV speichern.
uebersicht = verbunden.groupby("kampagne")[["kosten", "umsatz"]].sum()
uebersicht["roas"] = uebersicht["umsatz"] / uebersicht["kosten"]
uebersicht.sort_values("roas").plot.barh(y="roas", legend=False)
uebersicht.to_csv("kampagnen.csv", sep=";", decimal=",")Zur Kontrolle prüfen Sie einige Zeilen von Hand mit dem ROAS Rechner. So entdecken Sie einen Formelfehler, bevor er auf einer Folie landet. Bei der Deutung des fertigen Reports helfen Ihnen dann die Fragen aus meinem Beitrag Marketing Report richtig lesen.
Wie werten Sie Daten aus der Search Console mit Pandas aus?
Diese Methode nutze ich auch im SEO jede Woche. Exportierte Tabellen zu Suchanfragen und Seiten aus der Search Console zeigen in Pandas Muster, die in der Oberfläche verborgen bleiben. Zum Beispiel listet ein einziger Filter Suchanfragen mit vielen Impressionen, aber niedriger Klickrate.
gsc = pd.read_csv("data/suchanfragen.csv")
chancen = gsc[(gsc["Impressionen"] > 500) & (gsc["CTR"] < 0.02)]
chancen.sort_values("Impressionen", ascending=False).head(20)Die Spaltennamen hängen von der Sprache des Exports ab, deshalb prüfen Sie zuerst gsc.columns. Außerdem kommt die CTR oft als Text mit Prozentzeichen an; dann wenden Sie die Methode aus dem Abschnitt zur Bereinigung an. Die Exportschritte beschreibe ich in meiner Search Console Anleitung.
Die gefundenen Suchanfragen verbinden Sie danach mit Ihrer Keyword Planung. Wie Sie dabei Begriffe mit Kaufabsicht erkennen, zeige ich im Beitrag Keywords finden, die verkaufen.
Welche Fehler machen Einsteiger am häufigsten?
Zunächst eine Beruhigung: Beim Lernen tappt jeder in ähnliche Fallen. Mir ging es genauso, und diese Liste stammt aus meinen eigenen Notizen. Läuft Ihr Code, aber das Ergebnis wirkt seltsam, prüfen Sie zuerst diese Punkte.
- Verkettete Zuweisung: In pandas 3 bleibt sie wirkungslos, nutzen Sie loc.
- Durchschnitt zeilenweiser Quoten: Berechnen Sie Quoten aus Summen.
- Falsches Dezimalzeichen: Denken Sie an decimal=",".
- Doppelte Schlüssel beim Verbinden: Fangen Sie sie mit validate ab.
- Schleifen Zeile für Zeile: Bevorzugen Sie vektorisierte Operationen oder groupby.
- Überschreiben der Rohdatei: Speichern Sie bereinigte Daten immer in einer neuen Datei.
Der letzte Punkt rettet Ihnen den Tag. Bleiben die Rohdaten unverändert, starten Sie die gesamte Analyse neu, sobald Sie einen Fehler bemerken. Richten Sie Ihr Notebook deshalb so ein, dass es in einem Durchgang von oben nach unten läuft.
Auch bei Datumswerten gibt es eine Neuerung. Laut den Hinweisen zu pandas 3.0 erhalten aus Text eingelesene Datumswerte jetzt standardmäßig Mikrosekunden statt Nanosekunden als Auflösung. Rechnen Sie mit Datumswerten als Ganzzahlen, prüfen Sie diese Ergebnisse erneut.
Wie beschleunigen Sie die Arbeit mit großen Dateien?
Einige hunderttausend Zeilen verarbeitet Pandas auf einem Laptop problemlos. Mit wachsenden Dateien wird allerdings der Arbeitsspeicher zum Engpass. Ihr erster Schritt: überflüssige Spalten weglassen und Datentypen verkleinern.
- Wiederkehrende Textspalten in den Typ category umwandeln.
- Für Zahlenspalten pd.to_numeric(downcast="integer") nutzen.
- Parquet statt CSV bevorzugen, denn es ist kleiner und liest sich viel schneller.
- Sehr große Dateien mit chunksize stückweise verarbeiten.
- Wo möglich eingebaute vektorisierte Funktionen statt apply verwenden.
Den Speicherverbrauch zeigt Ihnen dann df.memory_usage(deep=True).sum(). Zudem nutzt der neue Typ str in pandas 3.0 im Hintergrund PyArrow, sofern es installiert ist. Laut Versionshinweisen fällt er ohne PyArrow auf NumPy object zurück. Deshalb lohnt sich die Installation von PyArrow bei großen Textspalten.
Übersteigen die Daten Millionen Zeilen, können Sie sich Polars oder DuckDB ansehen. Für den Einstieg brauchen Sie diese Werkzeuge jedoch nicht. Ein solides Fundament in Pandas macht den späteren Wechsel leicht.
Wie halten Sie Ihr Notebook ordentlich und teilen Ergebnisse?
Mit jeder Analyse wächst ein Notebook schnell zu einem Haufen Zellen an. Gliedern Sie es daher von Beginn an in Abschnitte: Importe, Einlesen, Bereinigung, Analyse und Diagramme. Über jeden Abschnitt setzen Sie eine kurze Überschrift in Markdown. Dann finden Sie drei Monate später alles sofort wieder.
Außerdem machen Sie wiederkehrende Schritte zu Funktionen. Schreiben Sie zum Beispiel eine Funktion betrag_bereinigen(), statt dieselbe Bereinigung in drei Spalten zu kopieren. Konstanten wie Dateipfade und Schwellenwerte gehören gesammelt in eine Zelle ganz oben. Führen Sie schließlich regelmäßig Restart and Run All aus, weil Zellen in wechselnder Reihenfolge versteckte Abhängigkeiten erzeugen.
Zum Teilen exportieren Sie Tabellen mit to_excel() und Diagramme mit savefig(). Beginnen Sie mit einem Satz als Fazit und zeigen Sie dann Tabelle und Diagramm, die es stützen. Nach der Methode fragen Vorgesetzte selten. Tun sie es doch, belegt Ihr Notebook die Herkunft jeder Zahl.
Mit welchem Lernplan festigen Sie das Gelernte?
Am schnellsten lernen Sie mit Ihren eigenen Daten. Öffentliche Datensätze sind ein guter Anfang. Echte Fragen an Ihren eigenen Verkaufs oder Trafficexport halten die Motivation allerdings viel höher. Der folgende Plan ist eine Empfehlung aus meiner Praxiserfahrung, keine Garantie.
- Erste Woche: NumPy Arrays, Slicing und einfache Statistik.
- Zweite Woche: CSV einlesen, erster Überblick und Bereinigung.
- Dritte Woche: Filtern, neue Spalten und groupby.
- Vierte Woche: merge, pivot_table und ein erster Report mit Matplotlib.
Erstellen Sie am Ende jeder Woche einen einseitigen Minireport mit einer Tabelle, einem Diagramm und drei Sätzen Interpretation. So trainieren Sie nicht nur Code, sondern auch die Fähigkeit, aus Daten Schlüsse zu ziehen. Genau diese Fähigkeit trennt am Ende eine Auswertung von einer Entscheidungsgrundlage.
Lohnt es sich, Datenanalyse mit Python zu lernen?
Meine kurze Antwort lautet also ja. Tabellenkalkulationen bleiben für kleine Tabellen hervorragend. Sobald sich Reports wiederholen, Dateien sich häufen und Zeilen in die Hunderttausende gehen, spart Ihnen Datenanalyse mit Python jedoch Zeit und erhöht die Genauigkeit. Außerdem dokumentiert Ihr Code genau, wie Sie zu jeder Zahl gekommen sind.
Zusammengefasst: Lernen Sie mit NumPy vektorisiert zu denken, mit Pandas Tabellen zu bereinigen und zusammenzufassen und mit Matplotlib die Geschichte zu erzählen. Übernehmen Sie die Änderungen aus pandas 3.0, etwa Copy on Write und den Typ str, von Anfang an, dann umgehen Sie die Fallen älterer Tutorials. Wählen Sie danach eine kleine Frage an Ihre eigenen Daten und liefern Sie Ihren ersten Report noch diese Woche.




