Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Einer Datentabelle Fragen stellen (pandas)

Nach dieser Lektion: Ich kann eine Datentabelle laden und ihr Fragen stellen.

Lektion, 55 Min.3 BefehleJupyterLab-Lab für Data Science: pandas, Matplotlib und scikit-learn im Browser

Ein Jahr Ausleihen und zwei Fragen

Ein Fahrradverleih speichert für jeden Tag des Jahres eine Zeile. Die Inhaberin will zwei Dinge wissen. Ist am Wochenende wirklich mehr los? Und an wie vielen Tagen wurden die Räder knapp?

Wer 365 Zeilen durchblättert, findet keine Antwort. Ein paar Zeilen pandas finden sie in Sekunden.

Am Ende dieser Lektion

Notiz

Ich kann eine Datentabelle laden und ihr Fragen stellen.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
DataFrameeine Tabelle in pandas mit benannten Spalten
Spalteein benanntes Feld, in jeder Zeile vorhandenausleihen["temp_c"]
Filterbehält nur die Zeilen, die eine Prüfung bestehenausleihen["hires"] > 400
Gruppierendie Zeilen nach dem Wert einer Spalte aufteilengroupby("weather")
Zusammenfassenviele Werte zu einem machen, etwa zu einem Mittelwert
Mediander mittlere Wert, wenn die Werte sortiert sind
Modusder Wert, der am häufigsten vorkommt

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Zwei Wege ins Lab

Klicken Sie in der Leiste der Lektion auf Lab starten und warten Sie, bis es läuft. Das Terminal daneben hat kein eigenes Python. Jede Schaltfläche Ausführen tippt docker exec jupyter und führt damit einen Befehl im Container des Labs aus.

Öffnen Sie JupyterLab über die Leiste und legen Sie ein neues Notebook an. Ein Block mit dem Titel Im Notebook eingeben gehört in eine Zelle. Auf dieser Seite läuft er nicht, denn ihr Python hat kein pandas.

Ein DataFrame ist eine Tabelle mit Spaltennamen

pd.read_csv liest eine CSV-Datei in einen DataFrame. Die Spaltennamen stammen aus der ersten Zeile der Datei. Hier sind sie englisch, etwa weather für das Wetter und hires für die Ausleihen.

Eckige Klammern mit einem Namen wählen eine Spalte: ausleihen["rain_mm"] ist der Regen jedes Tages. Eine Spalte hat eigene Methoden wie max, mean und value_counts.

Die rohe Datei ansehen

Befehl
docker exec jupyter head -n 4 hires.csv

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Im Notebook eingeben: eine Spalte

Code: python
import pandas as pd

ausleihen = pd.read_csv("hires.csv")
# Eine Spalte: der Regen in Millimetern, Tag für Tag.
ausleihen["rain_mm"].max()

Ein Filter behält Zeilen, die eine Prüfung bestehen

ausleihen["hires"] > 400 stellt jeder Zeile eine Frage. Die Antwort ist eine Spalte aus True und False.

Steht diese Antwort in ausleihen[...], behält pandas nur die Zeilen mit True. Zwei Prüfungen verbinden Sie mit & für „und“ oder | für „oder“. Jede Prüfung bekommt eigene Klammern.

Die sehr vollen Tage zählen

Befehl
docker exec jupyter python3 steps/filter.py

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Im Notebook eingeben: zwei Prüfungen

Code: python
# Regentage, an denen trotzdem viel los war.
regen_voll = ausleihen[(ausleihen["weather"] == "rainy") & (ausleihen["hires"] >= 300)]
len(regen_voll)

Ein häufiger Fehler

Warnung

Viele denken, das Python-Wort and verbinde in pandas zwei Prüfungen. Das stimmt nicht: and erwartet ein einziges True oder False, eine Spalte liefert aber 365 davon. pandas bricht mit „The truth value of a Series is ambiguous“ ab. Schreiben Sie & und Klammern um jede Prüfung.

groupby teilt die Zeilen auf und fasst zusammen

ausleihen.groupby("weather")["hires"].median() macht drei Dinge. Es teilt die Zeilen nach dem Wetter auf. Es nimmt in jeder Gruppe die Spalte hires. Es bildet den Median jeder Gruppe.

Der Mittelwert wird von wenigen extremen Tagen verschoben, der Median kaum. Sehen Sie sich deshalb beide an. Der Modus passt zu einer Spalte aus Wörtern wie dem Wetter.

Beispiel: ein einziger Ausreißer

TageMittelwertMedianModus
188, 240, 305, 240, 199, 412, 240, 2762100 / 8 = 262,5(240 + 240) / 2 = 240240, dreimal
Dieselben, 412 ersetzt durch 9002588 / 8 = 323,5(240 + 240) / 2 = 240240, dreimal

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Mittelwert und Median von Hand

Code: python
# Acht Tage Ausleihen an einer Station.
tage = [188, 240, 305, 240, 199, 412, 240, 276]

summe = 0
for wert in tage:
    summe = summe + wert
print("Mittelwert:", summe / len(tage))

sortiert = sorted(tage)
mitte = len(sortiert) // 2
print("Median:", (sortiert[mitte - 1] + sortiert[mitte]) / 2)
# Ersetzen Sie 412 durch 900 und starten Sie erneut.
# Welche der beiden Zahlen bewegt sich stärker?

Wochenende und Werktage vergleichen

Befehl
docker exec jupyter python3 steps/weekend.py

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Im Notebook eingeben: je Wetter

Code: python
# Der mittlere Tag für jede Wetterlage.
ausleihen.groupby("weather")["hires"].median()

Weiterführend: der stärkste Wochentag

Gruppieren Sie in Ihrem Notebook nach weekday und bilden Sie den Mittelwert von hires. Sortieren Sie das Ergebnis mit sort_values.

Stellen Sie danach eine eigene Frage mit einem Filter und einer Gruppierung zugleich. Zum Beispiel: Ist das Wochenende auch an Regentagen voller? Schreiben Sie Ihre Erwartung auf, bevor Sie die Zelle ausführen.

Über dieses Lab und seinen Quellcode: JupyterLab-Lab für Data Science: pandas, Matplotlib und scikit-learn im Browser

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.