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

Fehlende und falsche Werte finden und beheben

Nach dieser Lektion: Ich kann fehlende und falsche Werte in einem Datensatz finden und beheben.

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

Ein Export mit Lücken

Das Buchungssystem des Verleihs exportiert ein Jahr zur Auswertung. Einige Temperaturen sind leer. Ein Tag meldet 99,9 Grad. Eine Ausleihzahl lautet „unknown“.

Ein Modell, das mit dieser Datei lernt, lernt die Fehler gleich mit. Das Bereinigen kommt zuerst, und es ist der größte Teil der Arbeit.

Am Ende dieser Lektion

Notiz

Ich kann fehlende und falsche Werte in einem Datensatz finden und beheben.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Fehlender Werteine Zelle ohne InhaltNaN
Datentypdie Art von Wert, die eine Spalte enthältfloat64
Duplikateine Zeile, die eine andere genau wiederholt
Ausreißerein Wert weit weg von den übrigen
Imputiereneinen fehlenden Wert durch eine vernünftige Schätzung ersetzen

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

Vier Fehler, nach denen Sie suchen

Unsaubere Daten haben meist einen von vier Fehlern. Ein Wert fehlt. Eine Spalte hat den falschen Datentyp, Zahlen stehen also als Text darin. Eine Zeile ist ein Duplikat. Oder ein Wert kann nicht stimmen.

Für jeden Fehler gibt es in pandas eine schnelle Prüfung. Schauen Sie zuerst nach, bevor Sie etwas ändern.

Beispiel: jeder Fehler und seine Prüfung

FehlerWoran man ihn siehtDie Prüfung
Fehlender WertNaN in einer Zelleroh.isna().sum()
Falscher Datentypobject, wo Zahlen stehen solltenroh.dtypes
Duplikatmehr Zeilen als Tageroh.duplicated().sum()
Unmöglicher Wertein Höchstwert, den es nicht geben kannroh["temp_c"].max()
Abweichende SchreibweiseSunny und sunny getrennt gezähltroh["weather"].value_counts()

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

Die unsaubere Kopie anlegen und prüfen

Befehl
docker exec jupyter python3 steps/messy.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: die Lücken

Code: python
import pandas as pd

roh = pd.read_csv("messy.csv")
# Nur die Daten der Tage ohne Temperatur.
roh[roh["temp_c"].isna()]["date"]

Eine Textspalte versteckt ein Zahlenproblem

Ein einziges Wort in einer Zahlenspalte genügt, und pandas speichert die ganze Spalte als Text. Ihr Typ wird object, und ein Mittelwert geht nicht mehr.

pd.to_numeric(spalte, errors="coerce") macht aus jedem lesbaren Wert eine Zahl. Was es nicht lesen kann, wird NaN, und Sie finden es.

Bei Wörtern lauert dieselbe Falle. „Sunny “ mit Leerzeichen und „SUNNY“ sind für einen Rechner verschiedene Werte.

Im Notebook eingeben: falsche Zahlen

Code: python
# Die Zahlen umwandeln; was nicht lesbar ist, wird NaN.
zahlen = pd.to_numeric(roh["hires"], errors="coerce")
roh[zahlen.isna() | (zahlen < 0)]

Wörter aufräumen und Zahlen prüfen

Code: python
# Drei Wetterwörter aus einem unsauberen Export.
woerter = ["sunny", "Sunny ", "SUNNY"]
for wort in woerter:
    print(repr(wort), "wird zu", repr(wort.strip().lower()))

# Ist eine Ausleihzahl eine ganze Zahl?
for text in ["318", "-12", "n/a"]:
    print(text, text.isdigit())
# Fügen Sie "7.5" zur zweiten Liste hinzu. Was sagt isdigit?

Ein häufiger Fehler

Warnung

Viele denken, jeder Ausreißer sei ein Fehler zum Löschen. Ein ungewöhnlicher Wert kann aber stimmen: Der vollste Tag mit 487 Ausleihen ist ein echter Tag. Entfernen oder ersetzen Sie einen Wert nur, wenn er nicht stimmen kann, etwa 99,9 Grad oder eine negative Zahl.

Löschen, füllen oder korrigieren, und alles festhalten

Für jeden Fehler wählen Sie eines von drei Dingen. Löschen Sie die Zeile, wenn sie nicht zu retten ist, etwa bei „unknown“. Korrigieren Sie, wenn der richtige Wert klar ist, etwa „Sunny “ zu „sunny“. Imputieren Sie, wenn eine Schätzung genügt, etwa mit dem Median der Temperaturen.

Lassen Sie die Rohdatei unverändert und bereinigen Sie eine Kopie. So lässt sich jeder Schritt prüfen und wiederholen.

Beispiel: die Schritte der Reihe nach

SchrittZeilen danachWarum
messy.csv lesen367Der Export, wie er kam
drop_duplicates365Zwei Zeilen waren Wiederholungen
Nur Zahlen ab 0 behalten363„unknown“ und -5 sind keine Anzahlen
Temperaturen über 45 als fehlend setzen363Die 99,9 kommt zu den Lücken
Lücken mit dem Median füllen363Hier ist eine Schätzung besser als eine Lücke

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

Die Schritte ausführen

Befehl
docker exec jupyter python3 steps/clean.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.

Weiterführend: mit dem Monat füllen

Bereinigen Sie messy.csv in Ihrem Notebook auf eine andere Art. Füllen Sie jede fehlende Temperatur nicht mit dem Median des Jahres, sondern mit dem Median ihres Monats.

Hinweis: groupby("month")["temp_c"].transform("median") gibt jeder Zeile den Median ihres Monats. Vergleichen Sie die Werte für den 21. Januar und den 31. Mai mit dem Median des Jahres. Welcher wirkt glaubwürdiger, und warum?

Ü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.