Datenaufbereitung mit pandas

Reale Daten liegen selten sofort für eine Analyse bereit. Dieses Material zeigt, wie du einen pandas-DataFrame aufbereitest: Du erkennst und behandelst fehlende Werte und doppelte Zeilen, ersetzt Werte, ordnest sie zu und teilst sie in Klassen ein, bereinigst Text mit Zeichenkettenmethoden und regulären Ausdrücken und speicherst wiederkehrende Bezeichnungen als kategoriale Daten. Anschließend kombinierst du Tabellen mit merge, join und concat und formst sie mit hierarchischen Indizes, stack, unstack, pivot und melt zwischen Lang- und Breitformat um. Zu jeder Methode gibt es ein kleines durchgerechnetes Beispiel und Hinweise auf mögliche Fehler, etwa wenn ein Verbund unbemerkt zusätzliche Zeilen erzeugt.

MittelEinheit 4 von 8 in Kurs: Datenanalyse mit Python – NumPy, pandas und Matplotlib

Was du lernst

  1. Erkenne fehlende Werte und doppelte Zeilen in einem pandas-DataFrame, entscheide, ob du sie entfernst, auffüllst oder behältst, und prüfe die Auswirkungen jeder Entscheidung auf die Daten.
    • Fehlende Werte in einem DataFrame erkennen
      Erkenne, wie pandas fehlende Daten kennzeichnet, zähle sie pro Spalte und Zeile und finde versteckte Codes, die für fehlende Werte stehen.
    • Fehlende Werte entfernen oder auffüllen
      Entferne unvollständige Zeilen oder Spalten mit dropna oder fülle Lücken mit festen Werten, statistischen Kennwerten, benachbarten Werten oder durch Interpolation und wähle die zu den Daten passende Methode.
    • Doppelte Zeilen finden und entfernen
      Markiere und entferne wiederholte Zeilen mit duplicated und drop_duplicates, vergleiche bei Bedarf nur Schlüsselspalten und behalte die richtige Kopie jedes Datensatzes.
  2. Ändere die Werte einer Spalte kontrolliert: Ersetze Codes, ordne Werte anhand einer Zuordnungstabelle zu, wandle Datentypen um, benenne Bezeichnungen um und wandle Zahlen in Gruppen, skalierte Werte und Indikatorspalten um.
    • Werte ersetzen, zuordnen und umwandeln
      Ersetze exakte Werte mit replace, ordne Werte mit map über ein Dictionary oder eine Funktion zu, benenne Zeilen und Spalten um und wandle Text sicher in Zahlen um.
    • Werte in Klassen einteilen, skalieren, begrenzen und kodieren
      Teile Zahlen mit cut und qcut in Intervalle ein, skaliere Spalten, begrenze extreme Werte mit clip und erstelle Indikatorspalten für Kategorien.
  3. Vereinheitliche und durchsuche Textspalten mit dem str-Accessor und regulären Ausdrücken und speichere Spalten mit einer festen Auswahl an Werten effizient als kategoriale Daten.
    • Textspalten mit Zeichenkettenmethoden bereinigen
      Nutze die vektorisierten str-Methoden, um Text in jeder Zeile einer Spalte gleichzeitig zu kürzen, die Groß- und Kleinschreibung zu ändern, ihn aufzuteilen, zu durchsuchen, zu ersetzen und zu kombinieren.
    • Muster mit regulären Ausdrücken erkennen und passende Textteile extrahieren
      Schreibe einfache reguläre Ausdrücke und nutze sie mit contains, extract, findall und replace, um strukturierte Textteile zu prüfen, zu extrahieren und zu bereinigen.
    • Den kategorialen Datentyp nutzen
      Wandle Spalten mit einer begrenzten Auswahl an Werten in kategoriale Daten um, arbeite mit ihren Kategorien und Codes und nutze geordnete Kategorien für Werte mit einer natürlichen Reihenfolge.
  4. Führe Daten aus mehreren Tabellen zusammen: Ordne Zeilen mit merge und join anhand von Schlüsselspalten oder Indexbezeichnungen einander zu, fülle Lücken aus einer zweiten Quelle und füge Tabellen mit concat aneinander.
    • DataFrames anhand von Schlüsselspalten verknüpfen
      Kombiniere zwei Tabellen mit merge anhand übereinstimmender Werte in Schlüsselspalten, wähle den Verbundtyp und prüfe das Ergebnis auf nicht zugeordnete und vervielfachte Zeilen.
    • Tabellen über den Index verknüpfen und Lücken aus einer anderen Tabelle füllen
      Verknüpfe Tabellen anhand von Indexbezeichnungen mit join oder left_index und right_index und ergänze fehlende Werte aus einer zweiten Quelle mit combine_first und der Ausrichtung anhand von Indexbezeichnungen.
    • DataFrames mit concat aneinanderfügen
      Füge Tabellen mit pd.concat entlang der Zeilen oder Spalten zusammen, steuere den entstehenden Index und die Spalten und kennzeichne die Herkunft jedes Teils.
  5. Arbeite mit Tabellen, die mehrere Indexebenen haben, und wandle Daten mit stack, unstack, pivot und melt zwischen Lang- und Breitformat um.
    • Mit hierarchischen Indizes arbeiten
      Erstelle und lies einen MultiIndex, wähle Daten anhand äußerer und innerer Ebenen aus, ordne und sortiere Ebenen neu und verschiebe Ebenen zwischen Index und Spalten.
    • Daten mit stack und unstack umformen
      Verschiebe Spaltenbezeichnungen mit stack in den Index und Indexebenen mit unstack in die Spalten und behandle fehlende Kombinationen, die beim Umformen sichtbar werden.
    • Mit pivot und melt zwischen Lang- und Breitformat wechseln
      Erkenne Lang- und Breitformat, wandle lange Daten mit pivot oder pivot_table in eine breite Tabelle um und eine breite Tabelle mit melt in lange Daten.

Datenaufbereitung mit pandas einfach erklärt

5 Kapitel

1

Fehlende Werte und Dubletten erkennen und behandeln

Eine Lücke, eine Null und ein wiederholter Datensatz haben unterschiedliche Bedeutungen. Lerne, fehlende Werte zu quantifizieren, bevor du entscheidest, was du behältst, entfernst oder schätzt, und Dubletten anhand der Spalten zu erkennen, die einen Datensatz definieren. Kleine Wetter- und Bestelltabellen zeigen, wie pandas diese Entscheidungen umsetzt und wie sie sich auf Zeilenanzahl, Datentypen und Kennwerte auswirken. Jede Änderung hat ein sichtbares Ergebnis, das du prüfen kannst, bevor du mit einer Analyse fortfährst.

1.1 Lücken vor dem Rechnen finden

Fehlende Daten bedeuten, dass ein Wert unbekannt oder nicht verfügbar ist. pandas speichert an seiner Stelle ein besonderes Kennzeichen. Erkenne das Kennzeichen, bevor du Summen berechnest oder entscheidest, welche Zeilen nutzbar sind.

Die Kennzeichen erkennen

Das Kennzeichen hängt vom Datentyp ab. Gleitkommaspalten verwenden NaN, Datum-Zeit-Spalten NaT und Datentypen mit Fehlwertunterstützung wie "Int64", "boolean" und "string" verwenden pd.NA. pandas 3 erkennt Textspalten als str, mit NaN für fehlenden Text. Auch Pythons None wird als fehlend erkannt. Nutze für die Beispiele import pandas as pd und import numpy as np.

df.isna() erzeugt eine boolesche Tabelle mit denselben Zeilen und Spalten wie df. Ein True markiert eine Lücke; df.notna() markiert vorhandene Werte. Die alternativen Namen isnull() und notnull() erfüllen dieselben Aufgaben. Vergleiche eine Spalte nicht mit np.nan: NaN ist selbst sich selbst nicht gleich, daher übersieht s == np.nan die Lücken.

Zellen und betroffene Zeilen zählen

Betrachte diese Wettermesswerte:

citytemp_crain_mm
Lima18,00,0
OsloNaN4,0
Pune31,0NaN
KyivNaNNaN

Ein boolesches True zählt als 1, daher ergibt df.isna().sum() 0 fehlende Städte, 2 Temperaturen und 2 Niederschlagsmesswerte. df.isna().mean() ergibt die Anteile 0,0, 0,5 und 0,5. Für den Anteil jeder Spalte dienen alle vier Zeilen als Nenner.

Um betroffene Zeilen zu finden, nutze df.isna().any(axis=1). Der Aufruf gibt False, True, True, True zurück; die Summe ergibt 3. Dagegen ergibt df.isna().sum().sum() 4 fehlende Zellen. Kyiv trägt zwei Zellen, aber nur eine betroffene Zeile bei. Nutze die Kennzahl, die deine Frage beantwortet.

Versteckte Fehlwertcodes erkennen

Ein Messgerät kann einen nicht verfügbaren Messwert als -999, "-" oder "unknown" erfassen. Das sind gewöhnliche Werte, bis du sie umwandelst. Nachdem du die Bedeutung des Codes bestätigt hast, nutze df.replace([-999, "unknown"], np.nan). Beim Laden einer CSV-Datei fügt na_values=[-999, "unknown"] diese Codes zu den erkannten Kennzeichen hinzu. Leere CSV-Felder und häufige Zeichenketten wie "NA", "n/a" und "NULL" werden standardmäßig bereits erkannt.

Ein Niederschlagsmesswert von null kann bedeuten, dass kein Regen gefallen ist. Daher würde das Ersetzen jeder Null echte Beobachtungen zerstören. Außerdem gelten eine im Speicher erstellte leere Zeichenkette "" und eine Zeichenkette aus Leerzeichen für isna() nicht als fehlend. Untersuche den gespeicherten Text ebenso wie die Anzahl der Kennzeichen. Um fehlende Kategorien in eine Häufigkeitstabelle aufzunehmen, nutze value_counts(dropna=False).

Berechnungen und Datentypen prüfen

Für s = pd.Series([4, np.nan, 8]) ist s.mean() gleich 6,0: Der Aufruf nutzt die zwei bekannten Werte. s.count() ist 2, während len(s) gleich 3 ist. Dividierst du s.sum() durch len(s), erhältst du 4,0 und behandelst die Lücke fälschlich als null. Die meisten statistischen Methoden überspringen Lücken standardmäßig; eine Spalte, deren Werte alle fehlen, hat die Summe 0, aber den Mittelwert NaN.

Eine Lücke kann auch die Speicherung ändern. pd.Series([3, None, 5]) wird zu float64 und enthält 3,0, NaN und 5,0. Die Angabe dtype="Int64" behält ganzzahlige Werte bei und setzt <NA> für die Lücke. Das große I kennzeichnet den pandas-Ganzzahldatentyp mit Fehlwertunterstützung.

Wichtige Erkenntnisse

  • Nutze isna(), um Fehlwertkennzeichen in verschiedenen Datentypen zu erkennen.
  • Zähle fehlende Zellen getrennt von Zeilen mit mindestens einer Lücke.
  • Wandle bestätigte Fehlwertcodes um; erhalte gültige Nullen.
  • Prüfe, wie viele bekannte Werte in einen Kennwert eingehen.
  • Nutze "Int64", wenn ganzzahlige Werte ein Fehlwertkennzeichen benötigen.

1.2 Entscheiden, was entfernt oder aufgefüllt wird

Wenn du eine Zeile entfernst, entfernst du ihre bekannten Werte zusammen mit ihren Lücken. Füllst du eine Lücke auf, bleibt die Zeile erhalten, aber du führst eine Schätzung ein. Entscheide anhand der Bedeutung der Beobachtung und der Spalten, die die Analyse benötigt.

Steuern, welche Zeilen entfernt werden

df.dropna() entfernt jede Zeile mit einem fehlenden Wert. In der Wettertabelle bleibt nur Lima. Schränke die Entscheidung mit subset ein oder verlange mit thresh eine Mindestanzahl vorhandener Zellen.

AufrufBehaltene ZeilenGrund
df.dropna(subset=["temp_c"])Lima, PuneTemperatur ist vorhanden
df.dropna(thresh=2)Lima, Oslo, PuneMindestens zwei Zellen sind vorhanden
df.dropna(how="all")Alle vierJede Zeile hat eine Stadt

axis="columns" entfernt Spalten mit Lücken und behält hier nur city. Bei einer breiten Tabelle kann die standardmäßige Regel für Zeilen einen großen Teil der Daten verwerfen, weil eine Lücke in einer beliebigen Spalte genügt. Vergleiche len(df) vor und nach dem Entfernen.

Das Ergebnis zuweisen

Lerne die Form mit erneuter Zuweisung: df = df.dropna(). Standardmäßig geben Bereinigungsmethoden ein neues Objekt zurück. pandas 3.1 stuft inplace=True unter anderem für die Methoden dropna, drop_duplicates und rename als veraltet ein.

Für eine Spalte schreibe df["temp_c"] = df["temp_c"].fillna(0). Ein verketteter Aufruf wie df["temp_c"].fillna(0, inplace=True) aktualisiert unter Copy-on-Write in pandas 3 nie den übergeordneten DataFrame. Die Zuweisung macht das Ziel ausdrücklich sichtbar.

Mit einem kompatiblen Wert auffüllen

Ein Dictionary mit Werten pro Spalte ermöglicht es, eine gemischte Tabelle mit passenden Werten aufzufüllen: df.fillna({"rain_mm": 0, "city": "Unknown"}). Spalten, die im Dictionary fehlen, behalten ihre Lücken. Ein Skalar wie 0 ist praktisch für eine rein numerische Tabelle, deren Spalten ihn alle annehmen. Text mit einer Zahl aufzufüllen ist nicht kompatibel; pandas 3.1 warnt davor und eine zukünftige Version wird es ablehnen.

Die bekannten Temperaturen sind 18,0 und 31,0. Ihr Mittelwert ist 24,5, daher setzt df["temp_c"].fillna(df["temp_c"].mean()) 24,5 in beide Lücken ein. Ein extremer Wert kann den Mittelwert stark verschieben; ein Median reagiert weniger empfindlich. Halte vor dem Auffüllen mit df["temp_missing"] = df["temp_c"].isna() einen Indikator fest, damit geschätzte und beobachtete Werte unterscheidbar bleiben.

Die Mittelwertimputation verringert die scheinbare Streuung der Spalte. Ein weit entfernter fester Wert kann sie erhöhen. Niederschlagswerte mit 0 aufzufüllen, besagt, dass kein Regen gefallen ist. Das ist bei einem ausgeschalteten Sensor unangemessen.

Benachbarte Messwerte nutzen, wenn die Reihenfolge zählt

ffill() übernimmt den letzten bekannten Wert vorwärts; bfill() übernimmt den nächsten bekannten Wert rückwärts. Für 12,0, NaN, NaN, NaN, 15,0 ergibt das Vorwärtsauffüllen vier Werte von 12,0, gefolgt von 15,0. ffill(limit=1) füllt nur die erste Lücke in dieser Folge. Eine Lücke am Anfang hat keinen vorherigen Wert und bleibt bestehen. Nutze ffill() direkt; fillna(method="ffill") wurde in pandas 3 entfernt.

interpolate() schätzt zwischen benachbarten Positionen. Für 10, NaN, NaN, 16 ergibt lineare Interpolation 10, 12, 14, 16. Sie eignet sich für Messwerte, die sich in einer sinnvollen Reihenfolge stetig ändern. Das Übernehmen oder Interpolieren über nicht zusammengehörige Städte hinweg würde eine Beziehung unterstellen, die zwischen den Zeilen nicht besteht.

Führe nach jeder Operation isna().sum() erneut aus und prüfe die Zeilenanzahl. Ein erfolgreicher Methodenaufruf sagt dir, dass der Code ausgeführt wurde; diese Prüfungen zeigen dir, was sich geändert hat.

Wichtige Erkenntnisse

  • Nutze subset, how oder thresh, um anzugeben, welche Lücken wichtig sind.
  • Weise die zurückgegebenen Ergebnisse dem DataFrame oder der Spalte zu, die du ändern möchtest.
  • Wähle Füllwerte, die sowohl zum Datentyp der Spalte als auch zur Bedeutung der Lücke passen.
  • Halte vor dem Auffüllen mit geschätzten Werten einen Fehlwertindikator fest.
  • Nutze Methoden mit benachbarten Werten nur, wenn die Reihenfolge der Zeilen sinnvoll ist.
  • Prüfe nach der Bereinigung die Zeilenanzahl und die Anzahl fehlender Werte.

1.3 Den Datensatz bestimmen, bevor du seine Kopien entfernst

Zwei Zeilen können ähnlich aussehen, ohne dass sie dasselbe Ereignis beschreiben. Entscheide vor dem Entfernen von Dubletten, welche Werte einen Datensatz identifizieren. Eine Bestell-ID kann eine Bestellung identifizieren; Kunde und Datum allein können mehrere tatsächliche Käufe bezeichnen.

Die zusätzlichen Kopien markieren

df.duplicated() gibt pro Zeile einen booleschen Wert zurück. Standardmäßig vergleicht die Methode jede Spalte, behält das erste Vorkommen und markiert spätere Kopien mit True. Die Summe des Ergebnisses zählt zusätzliche Kopien, nicht alle Mitglieder wiederholter Gruppen.

Betrachte sechs Bestellzeilen mit den IDs 101, 102, 102, 103, 104, 104. Die beiden Zeilen mit 102 sind identisch. Die beiden Zeilen mit 104 haben unterschiedliche erfasste Gewichte, 0,5 kg und 0,8 kg. Werden alle Spalten verglichen, gibt es eine zusätzliche Kopie: df.duplicated().sum() ist 1. df.drop_duplicates() behält fünf Zeilen, weil die beiden unterschiedlichen Zeilen mit 104 keine exakten Kopien sind.

Die Spalten vergleichen, die die Identität bestimmen

df.duplicated(subset=["order_id"]) vergleicht nur die IDs. Die Methode markiert die zweite 102 und die zweite 104 und ergibt damit zwei zusätzliche Kopien. Die Werte der anderen Spalten beeinflussen diese Entscheidung nicht mehr. Untersuche die widersprüchlichen Gewichte, bevor du entscheidest, welchen Bestelldatensatz du behältst.

keep-WertVerhalten bei einer wiederholten Gruppe
"first"Erste Zeile in der aktuellen Reihenfolge behalten
"last"Letzte Zeile in der aktuellen Reihenfolge behalten
FalseJedes Mitglied einer wiederholten Gruppe entfernen

df.drop_duplicates(subset="order_id", keep="last") behält bei dieser Reihenfolge die Version mit 0,8 kg für Bestellung 104. Die letzte Zeile zu behalten bedeutet nicht von selbst, den neuesten Datensatz zu behalten. Stelle diese Reihenfolge zuerst her:

latest = df.sort_values("updated").drop_duplicates(
    subset="customer_id", keep="last"
)

Das Sortieren nach updated setzt ältere Datensätze vor neuere. Die Dublettenprüfung vergleicht dann nur customer_id, sodass unterschiedliche Aktualisierungszeitpunkte nicht verhindern, dass zwei Zeilen als Versionen desselben Kunden erkannt werden.

Zeilenwerte von Indexbezeichnungen unterscheiden

Diese Methoden vergleichen Werte und ignorieren Indexbezeichnungen. Identische Zeilen mit den Bezeichnungen 4 und 9 zählen weiterhin als Dubletten. Fehlende Werte an entsprechenden Positionen gelten bei dieser Prüfung als gleich. Um wiederholte Bezeichnungen selbst zu prüfen, nutze df.index.duplicated().

Der exakte Vergleich unterscheidet auch Groß- und Kleinschreibung sowie Leerraumzeichen. Die Werte „ Lisbon“, „lisbon“ und „LISBON “ sind unterschiedlich. Bereinige sie vor der Dublettenprüfung mit .str.strip().str.lower(), wenn diese Schreibweisen dieselbe Stadt bezeichnen. Andernfalls zählt nunique() drei Namen für einen Ort.

Eindeutigkeit dort prüfen, wo die Beziehung sie verlangt

Eine Zuordnungstabelle sollte eine Zeile pro Zuordnungsschlüssel enthalten, wenn jeder Datensatz einen Satz von Angaben erhalten muss. lookup["customer_id"].is_unique prüft diese Anforderung. Wiederholte Kunden-IDs in einer Bestelltabelle sind normal, weil ein Kunde mehrere Bestellungen aufgeben kann.

Wiederholt sich ein Zuordnungsschlüssel, wiederholt ein späterer Verbund jede passende Bestellung für jede passende Zeile der Zuordnungstabelle. Das Entfernen von Dubletten aus den Bestellungen würde echte Käufe verwerfen, ohne die Zuordnungstabelle zu korrigieren. Prüfe den vorgesehenen Schlüssel in der richtigen Tabelle, untersuche widersprüchliche Datensätze und vergleiche die Zeilenanzahl nach dem Entfernen.

Wichtige Erkenntnisse

  • Definiere einen Datensatz anhand der richtigen Schlüsselspalten, bevor du Kopien entfernst.
  • duplicated().sum() zählt mit der Standardeinstellung keep="first" spätere Kopien.
  • Sortiere nach dem Aktualisierungszeitpunkt, bevor du den neuesten Datensatz behältst.
  • Doppelte Zeilenwerte und wiederholte Indexbezeichnungen werden getrennt geprüft.
  • Eindeutige Zuordnungsschlüssel verhindern eine versehentliche Vervielfachung von Zeilen bei Verbunden.
2

Werte durch Ersetzen, Zuordnen und Klasseneinteilung transformieren

Die Transformation einer Spalte ändert, was ihre Werte bedeuten oder wie sie dargestellt werden. Wähle zwischen exaktem Ersetzen, Zuordnen, numerischer Umwandlung, Intervallen, skalierten Werten und Indikatorspalten. Du untersuchst die Eingaben und Ausgaben jeder Methode, einschließlich dessen, was mit Werten ohne Zuordnung und mit Grenzwerten geschieht. So verändert eine praktische Operation nicht unbemerkt Kategorien oder führt zum Verlust nutzbarer Messwerte.

2.1 Werte und Bezeichnungen gezielt ändern

Eine Ersetzung ändert passende Werte, eine Zuordnung übersetzt Werte und eine Umbenennung ändert Bezeichnungen. Im Code können diese Aufgaben ähnlich aussehen, sie liefern aber unterschiedliche Ergebnisse, wenn ein Wert in einem Dictionary fehlt.

Exakte Werte ersetzen

s.replace("N/A", np.nan) ändert nur Zellen, die "N/A" entsprechen. Eine Liste kann mehrere alte Werte nennen: s.replace(["-", "?"], np.nan). Ein Dictionary gibt für jeden Wert eine eigene Ersetzung an, etwa s.replace({"M": "male", "F": "female"}). Werte ohne Übereinstimmung bleiben unverändert.

Für eine ganze Tabelle beschränkt ein verschachteltes Dictionary die Änderung auf eine Spalte: df.replace({"status": {0: "open", 1: "closed"}}). So vermeidest du, dass andere Nullen und Einsen an anderer Stelle geändert werden. Weise das zurückgegebene Ergebnis zu, um die Änderung zu behalten.

replace gleicht ganze Zellen ab. Bei „Main St“ und „St“ ändert s.replace("St", "Street") nur „St“. Um Teile einer Zeichenkette zu ändern, nutze s.str.replace("St", "Street", regex=False), das auch „Main Street“ erzeugt.

Mit einer Zuordnung Werte übersetzen

Vergleiche für die Codes „PT“, „JP“ und „KE“ dasselbe Dictionary in zwei Methoden:

MethodePTJPKE
s.map({"PT": "Portugal", "JP": "Japan"})PortugalJapanNaN
s.replace({"PT": "Portugal", "JP": "Japan"})PortugalJapanKE

Ein an map übergebenes Dictionary legt die möglichen Ausgaben fest. Ein fehlender Schlüssel hat keine Ausgabe und wird zu einem fehlenden Wert. Prüfe anschließend isna().sum(), damit eine unvollständige Zuordnung sichtbar wird.

map akzeptiert auch eine Funktion: s.map(lambda x: x * 1000) wandelt Kilometerwerte in Meter um. Für diese Rechnung ist s * 1000 einfacher und schneller, weil der Ausdruck auf die ganze Spalte wirkt. DataFrame.map wendet eine Funktion Zelle für Zelle an; es ersetzt die entfernte Methode applymap.

Text in Zahlen umwandeln

astype fordert einen Datentyp an, etwa "float64", "Int64" oder "category". Die Methode löst einen Fehler aus, wenn ein Wert nicht umgewandelt werden kann. Für den Text "12", "7.5" und "n/a" erzeugt pd.to_numeric(s, errors="coerce") dagegen 12,0, 7,5 und NaN. Die Typumwandlung mit Fehlerersetzung erhält lesbare Zahlen, verlangt aber, dass du die fehlgeschlagenen Umwandlungen untersuchst.

Die Formatierung kann eine Umwandlung verhindern, selbst wenn die Zahl gültig ist. Entferne für „1,200“ und „950“ zuerst das Tausendertrennzeichen:

cleaned = s.str.replace(",", "", regex=False)
numbers = pd.to_numeric(cleaned, errors="coerce")
failed = s.notna() & numbers.isna()

Hier markiert failed Werte, die vor der Umwandlung vorhanden waren, danach aber fehlten. Der alleinige Vergleich der Anzahl fehlender Werte liefert eine nützliche Gesamtzahl; die Maske zeigt zusätzlich, wo der ursprüngliche Text zur Prüfung steht. Entferne bekannte Einheiten aus Messtexten vor der Umwandlung ebenso gezielt.

Die Bezeichnungen umbenennen

df.rename(columns={"Qty": "quantity"}) ändert eine Spaltenüberschrift und lässt ihre Zellen unverändert. df.rename(columns=str.lower) schreibt alle Überschriften klein. Eine Folge wie df.columns.str.strip().str.lower().str.replace(" ", "_", regex=False) macht aus „Total KG “ den Namen total_kg; weise sie df.columns zu.

Nutze replace oder map für Werte innerhalb einer Spalte. Nutze rename für die Bezeichnungen, anhand derer du diese Werte auswählst.

Wichtige Erkenntnisse

  • replace behält Werte ohne Übereinstimmung; map mit einem Dictionary macht sie zu fehlenden Werten.
  • Nutze .str.replace, um einen Teil jedes Textwerts zu ändern.
  • Bevorzuge vektorisierte Arithmetik für einfache Berechnungen in Spalten.
  • Untersuche neu entstandene fehlende Werte nach einer numerischen Typumwandlung mit Fehlerersetzung.
  • rename ändert Bezeichnungen und lässt Datenwerte unverändert.

2.2 Messwerte gruppieren und neu skalieren

Manche Analysen benötigen exakte Messwerte, andere Gruppen oder vergleichbare numerische Bereiche. Halte die ursprüngliche Bedeutung klar: Die Klasseneinteilung erzeugt Kategorien, die Skalierung ändert die numerische Skala und die Wertbegrenzung ersetzt extreme Werte.

Werte in Intervalle einteilen

pd.cut(ages, [18, 30, 45, 65]) verwendet die Intervalle (18, 30], (30, 45] und (45, 65]. Die runde Klammer schließt den linken Endpunkt aus; die schließende eckige Klammer schließt den rechten Endpunkt ein. Die Alterswerte 19, 25 und 30 gelangen in das erste Intervall, 41 in das zweite und 64 in das dritte. Der Alterswert 18 wird zu einem fehlenden Wert, weil er auf der ausgeschlossenen linken Grenze liegt.

include_lowest=True nimmt diesen niedrigsten Wert in das erste Intervall auf. right=False erzeugt dagegen links abgeschlossene Intervalle wie [18, 30), sodass 30 in das zweite Intervall gelangt. Werte außerhalb aller Intervalle bleiben fehlend. Teste sowohl die genauen Grenzen als auch typische Werte dazwischen.

Es muss eine Bezeichnung pro Intervall geben, also eine weniger als die Anzahl der Grenzen. Mit labels=["18-30", "31-45", "46-65"] und include_lowest=True ergeben die sechs obigen Alterswerte die Anzahlen 4, 1 und 1. Diese Bezeichnungen beschreiben ganzzahlige Alterswerte; die Intervallgrenzen bestimmen weiterhin die Zuordnung.

Grenzen oder Gruppengrößen wählen
OperationWas sie steuertNützlicher Zweck
pd.cut(x, [18, 30, 45, 65])Feste GrenzenAussagekräftige Bereiche
pd.cut(x, 4)Vier gleich breite IntervalleWertebereiche vergleichen
pd.qcut(x, 4)Vier Gruppen mit etwa gleicher AnzahlRangplätze in den Daten vergleichen

Für 2, 4, 6, 8, 10, 12, 14, 16 ergibt qcut zwei Werte pro Quartilgruppe. Gruppen mit gleicher Besetzungszahl müssen nicht gleich breite Zahlenbereiche abdecken.

Skalieren, ohne Gruppen zu erzeugen

Die Min-Max-Skalierung nutzt (x - x.min()) / (x.max() - x.min()). Für 10, 20, 40 beträgt die Spannweite 30: Die Ergebnisse sind 0, etwa 0,333 und 1. Sowohl das Minimum als auch das Maximum werden benötigt; allein durch das Maximum zu dividieren ist eine andere Operation. Eine konstante Spalte hat die Spannweite null, sodass dieser Ausdruck keine sinnvolle skalierte Streuung liefern kann.

Die Standardisierung nutzt (x - x.mean()) / x.std(). Für 10, 20, 30 ist der Mittelwert 20 und die standardmäßig von pandas berechnete Stichprobenstandardabweichung 10. Subtrahierst du 20 und dividierst durch 10, erhältst du die z-Werte -1, 0 und 1. Ein z-Wert beschreibt den Abstand vom Mittelwert in Einheiten der Standardabweichung, keine Intervallbezeichnung.

Begrenzen und kodieren

pd.Series([5, 12, 250, 8]).clip(upper=100) ergibt 5, 12, 100, 8. Anders als ein Filter behält clip die Zeile und ersetzt die extreme Zahl. Untersuche große Werte vor dem Begrenzen mit describe() oder einem Filter: Auch ein echter großer Messwert ist ein Datenwert.

pd.get_dummies(s) erstellt eine boolesche Indikatorspalte pro Kategorie. Bei Rot, Grün, Rot, Blau ist jede Zeile nur in der Spalte ihrer Farbe True. Nutze dtype=int für Nullen und Einsen. Fehlende Werte ergeben durchweg falsche Indikatorwerte, sofern dummy_na=True keine Spalte für fehlende Werte hinzufügt. Für eine gewöhnliche Kleinste-Quadrate-Regression mit Achsenabschnitt entfernt drop_first=True eine redundante Kategoriespalte; andere Modelle können alle Kategorien behalten. Bei einer Kategorie pro Zeile summiert sich der vollständige Satz von Indikatoren zur Konstanten 1 des Achsenabschnitts und erzeugt eine lineare Abhängigkeit.

Bei Zellen mit mehreren Schlagwörtern teilt s.str.get_dummies(sep="|") einen Wert wie „Action|Comedy“ in separate Indikatoren auf. Auch die Intervalle einer Klasseneinteilung lassen sich an get_dummies übergeben, sodass eine Spalte pro Bereich entsteht.

Wichtige Erkenntnisse

  • Prüfe bei cut die Intervallendpunkte und Werte außerhalb der Bereiche.
  • cut steuert die Wertebereiche; qcut zielt auf ähnliche Gruppenanzahlen ab.
  • Min-Max-Skalierung und z-Werte erhalten numerische Werte auf einer veränderten Skala.
  • clip begrenzt Werte, ohne Zeilen zu entfernen.
  • Indikatorspalten stellen die Zugehörigkeit zu Kategorien dar, ohne eine numerische Reihenfolge zu erfinden.
  • Behandle fehlende Kategorien ausdrücklich, wenn ihre Indikatoren wichtig sind.
3

Textdaten und kategoriale Daten bereinigen

Textwerte brauchen eine einheitliche Schreibweise und einheitliche Leerzeichen, bevor sie als Kategorien oder Schlüssel dienen können. Wende Zeichenkettenmethoden auf eine Spalte an, extrahiere strukturierte Teile mit regulären Ausdrücken und wähle einen kategorialen Datentyp, wenn sich wenige Bezeichnungen wiederholen. Die Beispiele verbinden Textbereinigung mit Dublettenprüfungen und Verbunden und zeigen, wie sich gespeicherte Codes und die Kategorienreihenfolge von den Wörtern unterscheiden, die Lernende in einer Tabelle sehen.

3.1 Textwerte vereinheitlichen

Ein Mensch erkennt in „ Lisbon“, „lisbon“ und „LISBON “ dieselbe Stadt. pandas sieht drei verschiedene Zeichenketten. Durch das Bereinigen einer Textspalte erhalten spätere Zählungen, Dublettenprüfungen und Verbunde einheitliche Werte zum Vergleichen.

Zeichenkettenmethoden auf eine Series anwenden

Pythons "Lima ".strip() arbeitet mit einer Zeichenkette. Nutze für eine Spalte den .str-Accessor: s.str.strip() entfernt äußere Leerraumzeichen aus jedem nicht fehlenden Wert. s.lower() löst einen AttributeError aus, weil die Series selbst keine Methode lower hat. Nutze s.str.lower().

pandas 3 erkennt Text normalerweise als Datentyp str, der die ältere Standardeinstellung object ersetzt. Der Datentyp str enthält Text und fehlende Werte, wobei NaN für fehlenden Text steht. Zeichenkettenmethoden funktionieren bei beiden Typen. Weise einer str-Spalte Text zu; wandle eine Zahl zuerst in Text um, wenn sie dort als Text hingehört.

Kombiniere passende Bereinigungsoperationen und weise das Ergebnis zu:

df["city"] = df["city"].str.strip().str.lower()

Die drei Schreibweisen von Lissabon werden zu „lisbon“. strip() entfernt äußere Leerraumzeichen, keine Leerzeichen innerhalb eines Namens. upper() schreibt alle Buchstaben groß, während title() jedes Wort am Anfang großschreibt und aus „new york“ „New York“ macht. Wähle für Schlüssel und Zählungen eine einheitliche Form.

Strukturierte Zeichenketten aufteilen

Für „Silva, Ana“ und „Tanaka, Yui“ gibt s.str.split(", ") Listen wie ["Silva", "Ana"] zurück. Füge expand=True hinzu, um separate Spalten zu erzeugen. Hole mit .str[0] oder .str.get(1) einen Teil aus jeder Liste.

Soll nur das erste Trennzeichen einen Wert aufteilen, nutze n=1. Das Aufteilen von „a,b,c“ an Kommas mit n=1 ergibt „a“ und „b,c“. Ohne Begrenzung ergeben sich drei Teile. Gleiche das Trennzeichen exakt ab, einschließlich jedes Leerzeichens, das zum Format gehört.

Suchen und filtern

s.str.contains("lis", case=False) prüft, ob Text irgendwo vorkommt, und ignoriert dabei die Groß- und Kleinschreibung. s.str.startswith("ID") prüft den Anfang; s.str.endswith(".csv") prüft das Ende. Die booleschen Ergebnisse können Zeilen auswählen:

mask = df["city"].str.contains("san", case=False, na=False)
selected = df[mask]

Beim Datentyp str in pandas 3 ergibt fehlender Text in diesen Suchtests False. Die Angabe na=False macht auch bei der Verwendung von Zeichenkettendaten mit Fehlwertunterstützung die beabsichtigte Behandlung deutlich. contains liest standardmäßig ein Regex-Muster; ergänze regex=False für wörtlich zu suchenden Text mit Sonderzeichen.

Teile ersetzen und neue Zeichenketten bilden

s.str.replace("kg", "", regex=False) entfernt „kg“, wo immer es vorkommt. s.replace("kg", "") ändert nur Zellen, die genau „kg“ enthalten. Dieser Unterschied ist bei Werten wie „12 kg“ wichtig.

str.replace behandelt seinen Suchtext standardmäßig wörtlich. Für „3.5 kg“ entfernt .str.replace(".", "", regex=False) den Punkt und ergibt „35 kg“. Mit regex=True steht der Punkt als Muster für fast jedes Zeichen und entfernt in diesem einzeiligen Beispiel alle Zeichen. Nutze diese Änderung niemals, um einen dezimalen Messwert einzulesen.

s.str.len() zählt Zeichen; ein fehlender Wert ergibt NaN und kann das Ergebnis zu einer Gleitkommaspalte machen. s.str[:3] extrahiert die ersten drei Zeichen. Um Spalten zu kombinieren, verbindet df["first"] + " " + df["last"] Ana und Silva zu „Ana Silva“; str.cat ist eine weitere Methode zum Verbinden. Jede Operation gibt ein Ergebnis zurück, speichere es daher in der Spalte, die du verwenden möchtest.

Wichtige Erkenntnisse

  • Nutze .str, um Textmethoden auf eine Series anzuwenden.
  • Entferne äußere Leerraumzeichen und vereinheitliche die Groß- und Kleinschreibung, bevor du Textschlüssel abgleichst.
  • Steuere die Ausgabe beim Aufteilen mit expand und n.
  • Wähle bei Sonderzeichen ausdrücklich zwischen wörtlicher Suche und Suche mit regulären Ausdrücken.
  • Weise bereinigten Text wieder zu, um die Änderung zu behalten.

3.2 Die Teile extrahieren, die ein Textmuster beschreibt

Ein regulärer Ausdruck, auch Regex genannt, beschreibt ein Muster in Text. Er kann eine Mengenangabe erkennen, selbst wenn die Anzahl der Ziffern oder die Abstände variieren. Beginne mit einem kleinen Muster, dessen Teile du erklären kannst.

Die Musterbestandteile lesen
MusterBedeutung
\dEine Ziffer
\wEin Wortzeichen: ein Buchstabe, eine Ziffer oder ein Unterstrich
\sEin Leerraumzeichen
[A-Z]Ein Großbuchstabe aus diesem Bereich
+Das vorherige Element ein- oder mehrmals
*Das vorherige Element null- oder mehrmals
?Das vorherige Element ist optional
{4}Genau vier Wiederholungen
(…)Eine Erfassungsgruppe

Schreibe Python-Muster als Raw-Strings wie r"\d+", damit Python ihre umgekehrten Schrägstriche beibehält. Ein Punkt passt standardmäßig auf jedes Zeichen außer einem Zeilenumbruch. Maskiere ihn als r"\.", um einen tatsächlichen Punkt zu finden. Für eine einfache Textsuche verhindert regex=False die Interpretation als Muster vollständig.

Festlegen, wie viel Text passen muss

contains findet ein Muster an beliebiger Stelle, match beginnt am Anfang und fullmatch verlangt, dass der gesamte Wert passt. Für „123a“ sind s.str.contains(r"\d+") und s.str.match(r"\d+") erfolgreich, aber s.str.fullmatch(r"\d+") schlägt fehl. Nutze die Prüfung der gesamten Zeichenkette, wenn du einen vollständigen Code prüfst. case=False oder flags=re.IGNORECASE nach import re ermöglicht, wo unterstützt, einen Abgleich ohne Beachtung der Groß- und Kleinschreibung.

Einen Messwert erfassen

Nimm „Rice 5 kg“, „Flour 2kg“, „Salt“ und „Beans 12 kg, 3 kg“. Das Muster r"(\d+)\s*kg" bedeutet eine oder mehrere Ziffern, die als Gruppe erfasst werden, gefolgt von null oder mehr Leerzeichen und dann „kg“.

quantity = s.str.extract(r"(\d+)\s*kg", expand=False)
quantity = pd.to_numeric(quantity)

Die extrahierten Zeichenketten sind „5“, „2“, ein fehlender Wert und „12“. Die Umwandlung ergibt die numerischen Werte 5,0, 2,0, NaN und 12,0. extract nimmt die erste Übereinstimmung jeder Zeile, sodass die zweite Mengenangabe in der Bohnenbeschreibung nicht enthalten ist. Ohne expand=False gibt eine einzelne Gruppe einen DataFrame mit einer Spalte zurück.

Benannte Gruppen beschriften die Ausgabe. s.str.extract(r"(?P<year>\d{4})-(?P<month>\d{2})") findet „2024-03“ in „Report 2024-03 final“ und gibt die Textspalten year und month zurück. Das Muster erkennt die Anordnung der Ziffern; die numerische Umwandlung ist ein separater Schritt.

Alle Übereinstimmungen finden oder nach Muster bereinigen

findall(r"\d+") ergibt pro Zeile eine Liste, darunter ["12", "3"] für den Bohnentext und [] für „Salt“. count(r"\d+") zählt Übereinstimmungen. extractall ergibt eine Zeile pro Übereinstimmung mit einer zusätzlichen Indexebene namens match.

Mit regex=True reduziert s.str.replace(r"\s+", " ", regex=True) Folgen von Leerraumzeichen auf ein Leerzeichen. r"\D" steht für ein Zeichen, das keine Ziffer ist. Entfernst du es, wird aus „+351 912-345-678“ die Zeichenkette „351912345678“. Die Großbuchstabenformen \S und \W verneinen entsprechend die Klassen der Leerraumzeichen und Wortzeichen.

Wiederholungen sind standardmäßig gierig. In "<b>x</b>" reicht r"<.*>" vom ersten öffnenden bis zum letzten schließenden Zeichen. Das Entfernen dieser Übereinstimmung entfernt alles. Das nicht gierige Muster r"<.*?>" erfasst jedes Tag einzeln und lässt „x“ stehen. Prüfe Beispielausgaben, bevor du ein Muster auf eine ganze Spalte anwendest.

Wichtige Erkenntnisse

  • Nutze Raw-Strings, damit die umgekehrten Schrägstriche in regulären Ausdrücken erhalten bleiben.
  • Wähle contains, match oder fullmatch für den gewünschten Suchbereich.
  • Erfassungsgruppen geben Text zurück; wandle extrahierte Zahlen separat um.
  • extract nimmt die erste Übereinstimmung; findall und extractall behalten mehrere Übereinstimmungen.
  • Maskiere Sonderzeichen für wörtliche Übereinstimmungen in regulären Ausdrücken.
  • Prüfe gierige Muster anhand von Beispielen mit mehreren möglichen Übereinstimmungen.

3.3 Wiederholte Bezeichnungen als Kategorien speichern

Eine Spalte mit wenigen Werten, die sich oft wiederholen, kann den Datentyp category verwenden. Dabei werden die unterschiedlichen Bezeichnungen einmal gespeichert und jede Zeile durch einen kleinen Ganzzahlcode dargestellt. Der sichtbare Wert bleibt die Bezeichnung.

Kategorien und Codes verstehen

Für die Größen M, S, L, M, M ermittelt s.astype("category") die Kategorien L, M, S in alphabetischer Reihenfolge. Die Codes sind 1, 2, 0, 1, 1. Nutze s.cat.categories, um die Bezeichnungen zu prüfen, und s.cat.codes, um die Kennungen zu prüfen. Ein Code von 0 bezeichnet die erste gespeicherte Kategorie; er ist keine gemessene Größe.

Bei wiederholten Bezeichnungen lässt sich viel Speicher sparen. Bis zu 126 Kategorien benötigen die Codes jeweils ein Byte; ab 127 Kategorien benötigen sie zwei Bytes. In einer pandas-3.1-Umgebung mit PyArrow benötigten drei Ländernamen, die sich über 3.000.000 Zeilen wiederholten, etwa 3 MB als kategoriale Daten, etwa 42 MB als str und etwa 165 MB als object. Das verwendete Backend für die Textspeicherung beeinflusst diese Zahlen. Bei einer Spalte mit fast ausschließlich eindeutigen Werten bringt es keinen Vorteil, eine Kategorienliste und einen Code pro Zeile zu speichern.

Eine sinnvolle Reihenfolge festlegen

Die alphabetische Reihenfolge der Größen setzt L vor M und M vor S. Lege die tatsächliche Größenreihenfolge ausdrücklich fest:

size_type = pd.CategoricalDtype(["S", "M", "L"], ordered=True)
sizes = s.astype(size_type)

Nun folgt die Sortierung S, M, L, Vergleiche wie sizes > "S" sind sinnvoll und sizes.max() ist „L“, wenn L vorkommt. Bei ungeordneten Bezeichnungen wie Ländern funktionieren Gleichheitsprüfungen, aber Größer-als-Vergleiche lösen einen TypeError aus. as_ordered() nutzt die vorhandene Kategorienreihenfolge; prüfe sie, bevor du sie als sinnvoll festlegst.

Die erlaubten Bezeichnungen ändern

Du kannst „XL“ keinen kategorialen Daten zuweisen, die nur S, M und L erlauben. Weise zuerst das erweiterte Ergebnis zu, sizes = sizes.cat.add_categories("XL"), und dann den neuen Wert.

Die Umwandlung von Text in eine feste Kategorienliste kann nicht aufgeführte Werte zu fehlenden Werten machen. pandas 3.1 warnt, dass diese verlustbehaftete Umwandlung künftig einen Fehler auslösen wird. Prüfe die Ausgangswerte vor der Umwandlung mit value_counts(), besonders nachdem du Schreibweisen bereinigt hast.

Die .cat-Methoden erfüllen unterschiedliche Zwecke:

  • rename_categories({"S": "small"}) ändert eine Bezeichnung und behält ihre zugeordneten Werte.
  • remove_categories("L") entfernt eine erlaubte Bezeichnung und macht vorhandene L-Werte zu fehlenden Werten.
  • set_categories([...]) ersetzt die ganze Kategorienliste.
  • reorder_categories([...], ordered=True) ändert die Reihenfolge, ohne die erlaubten Bezeichnungen zu ändern.
  • remove_unused_categories() entfernt Bezeichnungen, denen aktuell keine Werte zugeordnet sind.

value_counts() zeigt jede erlaubte Kategorie an, auch solche mit null Beobachtungen. Bei einem S/M/L-Typ, der nur S und M enthält, erscheint L dennoch mit der Anzahl 0. So wird eine leere Gruppe sichtbar, für die gewöhnliche Textdaten keine Bezeichnung gespeichert haben.

Kategorien für die weitere Verarbeitung nutzbar halten

cut erzeugt kategoriale Intervalle und get_dummies wandelt die Zugehörigkeit zu Kategorien in Indikatorspalten um. Würdest du ungeordnete Ländercodes als Zahlen an ein Modell übergeben, würde dies eine künstliche Reihenfolge und künstliche Abstände unterstellen. Indikatoren vermeiden diese Interpretation.

Das Aneinanderfügen kategorialer Spalten mit unterschiedlichen Kategorienlisten führt normalerweise zum Verlust des kategorialen Datentyps. Stimme zuerst ihre Kategorienlisten aufeinander ab oder nutze pd.concat(..., union_categories=True) in pandas 3.1, wenn die Listen zusammengeführt werden sollen. Prüfe sowohl den Datentyp des Ergebnisses als auch die Kategorienreihenfolge.

Wichtige Erkenntnisse

  • Kategoriale Daten speichern eine Liste von Bezeichnungen und ganzzahlige Kennungen.
  • Lege die Kategorienreihenfolge ausdrücklich fest, wenn eine Rangfolge sinnvoll ist.
  • Füge eine Kategorie hinzu, bevor du eine neue Bezeichnung zuweist.
  • Das Entfernen einer verwendeten Kategorie macht ihre Werte zu fehlenden Werten.
  • Nutze Indikatoren für ungeordnete Kategorien in numerischen Modellen.
  • Stimme Kategorienlisten vor dem Aneinanderfügen aufeinander ab oder vereinige sie gezielt.
4

DataFrames kombinieren

Durch das Kombinieren von Tabellen kannst du Informationen oder Beobachtungen hinzufügen oder Lücken aus einer Ersatzquelle füllen. Das sind unterschiedliche Aufgaben. Ordne mit merge ausdrückliche Schlüssel zu, arbeite mit join und combine_first anhand von Indexbezeichnungen und füge passende Teile mit concat aneinander. Bevor du einem Ergebnis vertraust, überlege, welche Zeilen erhalten bleiben und wie viele Übereinstimmungen jeder Schlüssel erzeugen sollte; die Beispiele zeigen, warum unerwartetes Wachstum oft mit einem wiederholten Zuordnungsschlüssel beginnt.

4.1 Vorhersagen, was bei einem Verbund erhalten bleibt

Ein Verbund ordnet Zeilen anhand von Schlüsselwerten einander zu und stellt ihre Informationen nebeneinander. Der Schlüssel muss in beiden Tabellen dasselbe bezeichnen, etwa die Kunden-ID einer Bestellung und die Kunden-ID in einer Zuordnungstabelle.

Den Schlüssel angeben und den Verbundtyp wählen

Nutze orders.merge(customers, on="customer_id"). Ohne on verwendet pandas alle Spaltennamen, die in beiden Tabellen vorkommen. Eine andere gemeinsame Spalte wie date könnte dann gültige Kundenzuordnungen verhindern.

Angenommen, Bestellungen haben die Kunden-IDs 10, 20, 20, 30, 50. Die Kundentabelle hat jeweils eine Zeile für 10, 20, 30, 40.

howWas erhalten bleibtErgebniszeilen
"inner"Übereinstimmende Schlüssel auf beiden Seiten4
"left"Jede linke Zeile und ihre Übereinstimmungen5
"right"Jede rechte Zeile und ihre Übereinstimmungen5
"outer"Schlüssel von beiden Seiten6
"cross"Jedes Paar aus linker und rechter Zeile20

Der innere Verbund ist die Standardeinstellung. Bei einem linken äußeren Verbund fehlen für Kunde 50 die Kundendaten. Ein rechter äußerer Verbund enthält Kunde 40 ohne Bestellung sowie beide Bestellungen für 20. Ein vollständiger äußerer Verbund enthält beide nicht zugeordneten Schlüssel. Ein Kreuzverbund braucht keinen Schlüssel, weil er gezielt jede Zeile mit jeder anderen kombiniert. pandas 3 bietet außerdem left_anti und right_anti für Zeilen ohne passenden Schlüssel auf der anderen Seite.

Prüfen, wie viele Übereinstimmungen eine Zeile haben kann

Zwei linke Zeilen für Schlüssel 20 und drei rechte Zeilen für Schlüssel 20 erzeugen sechs Paare. Der Verbund wählt nicht nur eine rechte Zeile aus. Wenn du im Beispiel eine zweite Kundenzuordnungszeile für 20 hinzufügst, wächst das Ergebnis des inneren Verbunds von vier auf sechs Zeilen.

Gib die beabsichtigte Beziehung mit validate an:

merged = orders.merge(
    customers, on="customer_id", how="left",
    validate="many_to_one"
)

Dies erlaubt viele Bestellungen pro Kunde, verlangt aber eindeutige Kunden-IDs auf der rechten Seite. Ein wiederholter rechter Schlüssel löst einen MergeError aus. one_to_one verlangt Eindeutigkeit auf beiden Seiten; one_to_many verlangt sie auf der linken Seite. many_to_many erlaubt Wiederholungen auf beiden Seiten und prüft die Eindeutigkeit nicht.

Nicht zugeordnete Zeilen untersuchen

Ein vollständiger äußerer Verbund mit indicator=True fügt _merge hinzu. Hier lauten die Anzahlen vier both, ein left_only und ein right_only. Das sind Zeilen, keine unterschiedlichen Schlüssel: Wiederholte Bestellungen können mehrere both-Zeilen für einen Kunden erzeugen.

Um unterschiedliche nicht zugeordnete Schlüssel auf der Bestellseite zu zählen, nutze m.loc[m["_merge"] == "left_only", "customer_id"].nunique(). Das Untersuchen der Zeilen kann fehlende Zuordnungseinträge oder uneinheitlichen Text aufdecken.

Namen und Schlüsselformate steuern

Haben Schlüssel unterschiedliche Namen, nutze left_on="customer_id", right_on="id". Beide Schlüsselspalten bleiben verfügbar. Mehrere Schlüssel lassen sich gemeinsam mit on=["city", "year"] abgleichen; beide müssen übereinstimmen.

Gleichnamige Spalten außerhalb der Schlüsselspalten erhalten _x und _y. Wähle aussagekräftige Suffixe wie suffixes=("_order", "_ship"), damit die Herkunft klar bleibt.

Schlüssel brauchen kompatible Datentypen und gleiche Werte. Die Zahl 1 kann zur Zahl 1,0 passen, aber ganzzahlige und textbasierte Schlüsselspalten können einen Fehler beim Verbinden auslösen. Wandle ihre Formate gezielt um. „ana“ und „Ana “ sind unterschiedliche Texte; vereinheitliche Groß- und Kleinschreibung sowie äußere Leerzeichen vor dem Verbinden, wenn sie dieselbe Person bezeichnen.

Auch fehlende Schlüssel müssen untersucht werden: pandas ordnet fehlende Schlüssel auf einer Seite fehlenden Schlüsseln auf der anderen Seite zu. Enthalten beide Seiten mehrere solche Zeilen, können sich auch diese Übereinstimmungen vervielfachen.

Wichtige Erkenntnisse

  • Gib Verbundschlüssel ausdrücklich an.
  • Wähle den Verbundtyp danach, welche Quellzeilen erhalten bleiben müssen.
  • Wiederholte Schlüssel erzeugen jedes passende Paar.
  • Nutze validate, um die beabsichtigte Schlüsselbeziehung zu prüfen.
  • Nutze einen vollständigen äußeren Verbund mit einem Indikator, um nicht zugeordnete Zeilen zu untersuchen.
  • Prüfe Schlüsselwerte, Formate und Suffixe, bevor du das Ergebnis verwendest.

4.2 Werte bei übereinstimmenden Indexbezeichnungen kombinieren

Ein Index kann den Schlüssel enthalten, den du abgleichen möchtest. pandas nutzt diese Bezeichnungen beim Verknüpfen von Tabellen, beim Ergänzen fehlender Werte oder beim Addieren zweier Series. Die Zeilenposition allein entscheidet nicht über die Zuordnung.

Anhand von Indexbezeichnungen verknüpfen

left.join(right) gleicht die beiden Indizes ab und erstellt standardmäßig einen linken äußeren Verbund. Dagegen erstellt merge standardmäßig einen inneren Verbund. Du kannst auch left.merge(right, left_index=True, right_index=True) schreiben, wenn beide Schlüssel im Index liegen.

Angenommen, stations hat die Indexbezeichnungen A, B, C und die Höhen 120, 850, 15 m. Eine Messwerttabelle hat die Stationsindexbezeichnungen A, B, B, D. readings.join(stations) behält vier Zeilen und ergänzt die Höhen 120, 850, 850 und NaN. Beide B-Messwerte erhalten die Höhe von B. Mit how="inner" bleiben nur die drei Messwerte für A und B erhalten.

Wenn die Messwerttabelle Stations-IDs in einer gewöhnlichen Spalte enthält, nutze readings.join(stations, on="station"). Die linke Spalte wird mit dem rechten Index abgeglichen. Die entsprechende Form mit merge lautet readings.merge(stations, left_on="station", right_index=True, how="left").

Die Position des Schlüssels deutlich machen

set_index("station") verschiebt die Stationsspalte in den Index. reset_index() stellt sie als gewöhnliche Spalte wieder her. So kannst du eine Anordnung wählen, bei der sich die Zuordnung leicht prüfen lässt. left.join([t1, t2]) kann mehrere Tabellen mit gemeinsamen Indexbezeichnungen gleichzeitig verknüpfen.

Enthalten beide verknüpften Tabellen eine Spalte außerhalb der Schlüsselspalten wie source, löst join einen ValueError aus, sofern du die Namen nicht unterscheidbar machst. Schreibe in pandas 3.1 suffixes=("_left", "_right"); dies ersetzt die älteren Argumente lsuffix und rsuffix. Die Suffixe erhalten beide Versionen, ohne zu entscheiden, welcher Wert maßgeblich ist.

Lücken aus einer Ersatzquelle ergänzen

a.combine_first(b) behält bekannte Werte in a, füllt dessen Lücken aus b bei übereinstimmenden Bezeichnungen und nimmt Bezeichnungen auf, die nur in b vorkommen.

Bezeichnungaba.combine_first(b)
a1101
bNaN2020
c3303
dnicht vorhanden4040

Das Ergebnis behält 1 und 3, weil die erste Quelle diese Werte bereits kennt. Es nutzt 20, um die Lücke zu füllen, und ergänzt die Bezeichnung d mit 40. Drehst du den Aufruf um, ändert sich, welche Quelle Vorrang hat. Das ist nützlich, wenn eine Hauptdatenquelle Vorrang vor einer Ersatzquelle haben soll, selbst wenn ihre Zeilenreihenfolgen unterschiedlich sind.

Ausrichtung bei Rechenoperationen erkennen

x enthalte a = 5 und b = 7; y enthalte b = 1 und c = 2. x + y ergibt b = 8 und fehlende Ergebnisse bei a und c, weil jeweils ein Operand fehlt. Der Aufruf addiert nicht den ersten Wert von x zum ersten Wert von y.

x.add(y, fill_value=0) setzt für die fehlende Seite null ein und ergibt a = 5, b = 8, c = 2. Nutze diese Regel, wenn ein fehlender Beitrag als null zählen soll. Die Ausrichtung anhand von Indexbezeichnungen ist das gemeinsame Prinzip hinter diesen Operationen, aber ihre Regeln für Werte unterscheiden sich: join fügt Spalten hinzu, combine_first füllt Lücken und Rechenoperationen rechnen mit zugeordneten Werten.

Wichtige Erkenntnisse

  • join gleicht standardmäßig Indizes mit einem linken äußeren Verbund ab; merge nutzt standardmäßig einen inneren Verbund.
  • Bei join(on="station") wird die linke Spalte mit dem rechten Index abgeglichen.
  • Nutze Suffixe, um gleichnamige Spalten außerhalb der Schlüsselspalten zu unterscheiden.
  • combine_first gibt bekannten Werten des aufrufenden Objekts Vorrang.
  • Rechenoperationen richten Werte anhand von Bezeichnungen aus; fill_value steuert fehlende Beiträge.

4.3 Passende Tabellen mit concat aneinanderfügen

Monatsdateien enthalten meist weitere Zeilen derselben Art von Beobachtung. Die Verkettung fügt diese Teile zu einer Tabelle zusammen. Sie richtet die Bezeichnungen auf der anderen Achse aus; sie sucht nicht nach übereinstimmenden Kunden- oder Bestellschlüsseln.

Zeilen untereinanderfügen und Spalten ausrichten

pd.concat([jan, feb]) fügt Zeilen untereinander, weil axis=0 die Standardeinstellung ist. Angenommen, Januar enthält drei Fahrten mit den Spalten trip und km, während Februar zwei Fahrten mit trip, km und note enthält. Das Ergebnis hat fünf Zeilen und drei Spalten. Die fehlenden note-Zellen für Januar werden zu NaN.

join="outer" ist die Standardeinstellung: Sie behält die Vereinigung der Spaltennamen. join="inner" behält nur gemeinsame Namen, sodass das Ergebnis fünf Zeilen und die zwei Spalten trip und km hat. Es enthält weiterhin alle fünf Beobachtungen; die Einstellung für join steuert die andere Achse.

Die Spaltenreihenfolge in den Teilen bestimmt die Zuordnung nicht. Entscheidend sind die exakten Namen. Verwendet ein Teil km und der andere Km, enthält das Ergebnis zwei teilweise leere Spalten. Benenne die Überschriften vor dem Aneinanderfügen um.

Entscheiden, was die Zeilenbezeichnungen bedeuten sollen

Die ursprünglichen Indizes bleiben standardmäßig erhalten. Bei den Ausgangsindizes 0, 1, 2 und 0, 1 wiederholt das Ergebnis die Bezeichnungen 0 und 1. result.loc[0] wählt zwei Zeilen aus. Nutze ignore_index=True, wenn diese Zahlen keine Bedeutung haben und du neue Bezeichnungen von 0 bis 4 möchtest.

Wenn die Herkunft wichtig ist, nutze eine äußere Indexebene:

result = pd.concat(
    [jan, feb], keys=["jan", "feb"], names=["month", "row"]
)

Nun wählt result.loc["feb"] die zwei Februarzeilen aus. keys hält die Herkunft innerhalb eines MultiIndex fest. In pandas 3 löst die Kombination von keys mit ignore_index=True einen ValueError aus; wähle für diese Operation Herkunftsbezeichnungen oder einen neuen einfachen Index.

Spalten nebeneinanderstellen

pd.concat([x, y], axis=1) richtet Zeilen anhand ihrer Indexbezeichnung aus. Für x mit a = 1, b = 2 und y mit b = 3, c = 4 hat das Ergebnis die Zeilen a, b, c. Die Spalte x fehlt bei c und y fehlt bei a. Mit join="inner" bleibt nur b erhalten.

OperationHinzugefügt entlang derBezeichnungen ausgerichtet anhand der
concat(..., axis=0)ZeilenSpaltennamen
concat(..., axis=1)SpaltenZeilenindizes
merge(..., on="id")passenden ZeilenpaareWerte der Schlüsselspalten
Speicherung prüfen und Teile effizient sammeln

Eine Spalte, die numerische Werte und Text mischt, kann den Datentyp object erhalten. Entsteht bei gewöhnlichen NumPy-Daten vom Typ int64 eine Lücke, werden sie zu float64; der pandas-Datentyp "Int64" mit Fehlwertunterstützung kann ganze Zahlen mit <NA> behalten. Stimme die Datentypen vor dem Kombinieren aufeinander ab, wenn die Spalte einen festgelegten Typ hat.

DataFrame.append wurde in pandas 2.0 entfernt. Sammle bei vielen Dateien DataFrames in einer Liste und rufe pd.concat nach der Schleife einmal auf. Wird in jedem Durchlauf ein wachsendes Ergebnis neu erstellt, werden die angesammelten Daten wiederholt kopiert und der Vorgang wird langsam.

Prüfe, ob die Länge des Ergebnisses beim Aneinanderfügen von Zeilen der Summe der Eingabelängen entspricht. Untersuche danach Spaltennamen, Anzahl fehlender Werte und Datentypen.

Wichtige Erkenntnisse

  • Das Aneinanderfügen von Zeilen richtet Spaltennamen aus und addiert die Zeilenanzahlen der Eingaben.
  • join wählt gemeinsame oder alle Bezeichnungen auf der anderen Achse.
  • Nutze ignore_index für entbehrliche Bezeichnungen oder keys, um die Herkunft festzuhalten.
  • Das Aneinanderfügen von Spalten richtet die Zeilenindizes aus.
  • Sammle viele Teile zuerst und füge sie einmal zusammen.
5

Daten mit hierarchischen Indizes, pivot und melt umformen

Dieselben Messwerte lassen sich als Zeilen, Spalten oder Ebenen eines Index anordnen. Nutze einen MultiIndex, um Beobachtungen mit mehreren Schlüsseln zu bezeichnen, und verschiebe diese Schlüssel dann mit stack und unstack oder mit pivot und melt. Achte darauf, welche Bezeichnungen eine Zelle identifizieren und ob sie eindeutig sind. Das macht das Umformen vorhersehbar und hilft dir, eine fehlende Kombination von einer gemessenen Null oder einem Paar von Datensätzen zu unterscheiden, das eine ausdrückliche Aggregation benötigt.

5.1 Zeilen mit mehr als einer Indexebene auswählen

Ein MultiIndex gibt jeder Zeile mehrere Bezeichnungen. Eine Umsatzzeile kann sowohl durch Stadt als auch durch Jahr identifiziert werden, geschrieben als Tupel wie ("Osaka", 2024). Jede Bezeichnung gehört zu einer Ebene und die Reihenfolge dieser Ebenen ist für die Auswahl wichtig.

Den Index erstellen und benennen

df.set_index(["city", "year"]) verschiebt diese Spalten in den Index. pd.MultiIndex.from_product([["Lima", "Osaka"], [2024, 2025]], names=["city", "year"]) bildet jede Kombination der angegebenen Bezeichnungen. Auch das Aneinanderfügen mit keys fügt eine Ebene hinzu.

Für die Beispiele hat sales diese Indexpaarungen und Werte:

cityyearsales
Osaka2024120
Osaka2025135
Lima202480
Lima202595

Nach dem Festlegen der beiden Indexebenen ist df.index.names gleich ["city", "year"]. rename_axis(["town", "yr"]) ändert die Ebenennamen, ohne ihre Werte zu ändern.

Eine äußere Bezeichnung oder ein vollständiges Tupel auswählen

df.loc["Osaka"] wählt beide Zeilen für Osaka aus. Die ausgewählte Stadtebene fällt weg, sodass 2024 und 2025 als Index bleiben. df.loc[("Lima", 2025), "sales"] wählt eine Zelle aus und gibt 95 zurück.

Eine einzelne an loc übergebene Bezeichnung sucht in der äußersten Ebene. df.loc[2024] sucht daher nach einer Stadt namens 2024 und löst in dieser Tabelle einen KeyError aus. Um ein Jahr über alle Städte hinweg auszuwählen, nutze df.xs(2024, level="year"). Der Aufruf gibt für Osaka 120 und für Lima 80 zurück, wobei die Stadt als verbleibender Index dient.

Für eine allgemeinere Auswahl behält df.loc[pd.IndexSlice[:, 2025], :] alle Städte im Jahr 2025. Der Doppelpunkt an der ersten Position bedeutet alle Bezeichnungen auf dieser Ebene; der letzte Doppelpunkt wählt alle Spalten aus.

Vor Slices über Bereiche sortieren

Die Auswahl anhand exakter Bezeichnungen benötigt keinen insgesamt sortierten Index, aber für einen Slice über einen Bezeichnungsbereich muss passend sortiert sein. Nutze df.sort_index() vor df.loc["Lima":"Osaka"]. Ein unsortierter MultiIndex kann für einen solchen Slice einen UnsortedIndexError auslösen.

sort_index() sortiert alle Ebenen in ihrer aktuellen Reihenfolge, also zuerst Städte und innerhalb jeder Stadt die Jahre. sort_index(level="year") sortiert nach der benannten Ebene. swaplevel("city", "year") setzt das Jahr an die äußere Position; rufe danach sort_index() auf, um die neue Anordnung zu gruppieren und zu sortieren. Das bloße Vertauschen der Ebenenpositionen sortiert die Zeilen nicht.

Bezeichnungen zurück in Spalten verschieben

reset_index() stellt beide Ebenen als Spalten wieder her. reset_index(level="year") stellt nur das Jahr wieder her und belässt die Stadt als Index. Mit diesen Operationen kannst du eine Tabelle für einen Verbund oder zum Speichern vorbereiten, ohne ihre identifizierenden Werte zu verlieren.

Auch Spalten können mehrere Ebenen haben. Eine Umformung mit Umsatz- und Personalwerten kann Spaltenbezeichnungen wie ("sales", 2024) und ("staff", 2025) erzeugen. df["sales"] wählt alle Spalten unter der Umsatzbezeichnung auf der obersten Ebene aus.

Für eine Summe nach Stadt ergibt df.groupby(level="city")["sales"].sum() Lima 175 und Osaka 255. Nutze für diese Zusammenfassung die Gruppierung; das alte Argument sum(level="city") wurde in pandas 2.0 entfernt.

Wichtige Erkenntnisse

  • Ein Tupel identifiziert eine vollständige MultiIndex-Bezeichnung über alle Ebenen hinweg.
  • Die Auswahl mit einer einzelnen Bezeichnung in loc beginnt auf der äußersten Ebene.
  • Nutze xs oder IndexSlice, um eine innere Ebene auszuwählen.
  • Sortiere den Index vor einem Slice über einen Bezeichnungsbereich.
  • Vertausche Ebenen, um ihre Rollen zu ändern, und setze sie zurück, um Spalten wiederherzustellen.
  • Nutze groupby(level=...) für Zusammenfassungen nach einer Indexebene.

5.2 Bezeichnungen zwischen Index und Spalten verschieben

stack und unstack ändern, wo Bezeichnungen stehen. Werte behalten ihre identifizierende Kombination, aber die Tabelle kann Kombinationen sichtbar machen, für die es keine Beobachtung gab.

Spaltenbezeichnungen in den Index stapeln

Angenommen, ein breiter DataFrame hat die Städte Osaka und Lima als Index und die Jahre 2024 und 2025 als Spalten. Osaka hat die Werte 120 und 135; Lima hat 80 und 95. Benenne die Achsen city und year, damit ihre Bedeutung sichtbar bleibt.

long = wide.stack() verschiebt die Jahresbezeichnungen in eine neue innerste Indexebene. Bei diesen einstufigen Spalten ist das Ergebnis eine Series mit vier Werten:

  • ("Osaka", 2024) ergibt 120.
  • ("Osaka", 2025) ergibt 135.
  • ("Lima", 2024) ergibt 80.
  • ("Lima", 2025) ergibt 95.

Die Stadtbezeichnungen wiederholen sich, weil jede Stadt nun eine Zeile pro Jahr hat. Beim Stapeln wurden die Werte weder summiert noch zusätzliche Messwerte erzeugt.

Eine Indexebene mit unstack in Spalten verschieben

long.unstack() verschiebt die innerste Indexebene, das Jahr, in Spalten und stellt die breite Anordnung wieder her. long.unstack("city") verschiebt stattdessen die Stadt und erzeugt Jahre als Zeilen und Städte als Spalten. Eine numerische Ebenenposition wie unstack(0) kann dieselbe Ebene auswählen, aber ein Name macht die Absicht leichter lesbar.

OperationVerschiebung der Bezeichnungen
stack()Eine Spaltenebene wird zu einer inneren Indexebene
unstack()Eine Indexebene wird zu einer Spaltenebene

Hat die Eingabe hierarchische Spalten, kann beim Stapeln einer Ebene eine andere Ebene als Spalten erhalten bleiben. Für Spalten wie ("sales", 2024) und ("staff", 2024) gibt stack("year") einen DataFrame mit Umsatz- und Personalspalten zurück. Das Stapeln aller Spaltenebenen ergibt eine Series.

Fehlende Kombinationen sichtbar halten

Angenommen, die lange Series enthält nun keinen Eintrag für Lima 2025. Das Umformen mit unstack erzeugt eine rechteckige Tabelle mit Städten und Jahren und führt daher an dieser Stelle NaN ein. Gewöhnliche ganzzahlige Werte werden zu Gleitkommazahlen, wenn diese fehlende Zelle ein Fehlwertkennzeichen für Gleitkommazahlen erfordert.

unstack(fill_value=0) kann eine neu fehlende Kombination mit null füllen. Nutze dies nur, wenn das Fehlen null bedeutet, etwa keine erfassten Verkäufe in einem vollständigen Datensatz von Verkaufsereignissen. Eine fehlende Sensorbeobachtung ist unbekannt und sollte fehlend bleiben.

stack() in pandas 3 behält fehlende Zellen. Das Stapeln der unvollständigen 2 × 2-Tabelle ergibt daher vier Einträge, darunter NaN. Füge .dropna() hinzu, wenn du nur die drei bekannten Werte möchtest. Das Entfernen von Lücken ändert, welche Kombinationen noch dargestellt werden. Prüfe daher die Länge des Ergebnisses.

Doppelte Kombinationen zuerst behandeln

Für unstack wird ein einzelner Wert pro vollständiger Indexkombination benötigt. Zwei Einträge mit der Bezeichnung ("Lima", 2025) beanspruchen dieselbe Ausgabezelle und lösen ValueError: Index contains duplicate entries, cannot reshape aus.

Nutze long.index.duplicated(), um wiederholte vollständige Bezeichnungen zu untersuchen, oder prüfe die entsprechenden Schlüsselspalten vor dem Festlegen des Index. Entscheide, ob die Zeilen versehentliche Kopien oder getrennte Beobachtungen sind, die zusammengefasst werden sollten. Sie zu entfernen oder zu aggregieren ist eine Entscheidung über die Daten; unstack wählt keine Regel für dich.

Wichtige Erkenntnisse

  • stack verschiebt Spaltenbezeichnungen nach innen; unstack verschiebt Indexbezeichnungen nach außen.
  • Wähle die Ebene ausdrücklich, wenn die Standardeinstellung nicht die benötigte Ebene ist.
  • Fehlende Kombinationen erscheinen beim Umformen ins Breitformat als fehlende Zellen.
  • Das Stapeln in pandas 3 behält fehlende Werte, sofern du sie nicht anschließend entfernst.
  • Für unstack muss jede vollständige Indexkombination eindeutig sein.

5.3 Zwischen langen und breiten Tabellen wechseln

Im Langformat stehen identifizierende Spalten neben einer Wertespalte. Im Breitformat sind Messwerte auf mehrere Spalten verteilt, etwa eine Spalte pro Jahr. Wähle die Anordnung, die den nächsten Schritt erleichtert: Lange Tabellen eignen sich zum Filtern und Gruppieren, während breite Tabellen direkte Vergleiche nebeneinander ermöglichen.

Eindeutige Paare in Zellen pivotieren

Eine lange Tabelle mit den Spalten city, year und sales wird mit df.pivot(index="city", columns="year", values="sales") breit. Stadtbezeichnungen bilden Zeilen, Jahre bilden Spalten und Umsätze füllen die Zellen. Dies entspricht df.set_index(["city", "year"])["sales"].unstack().

Die Umsätze von Osaka für 2024 und 2025 von 120 und 135 werden zu zwei Zellen in einer Zeile. Die Werte 80 und 95 von Lima bilden die zweite Zeile. Das Vertauschen der Argumente index und columns transponiert diese Anordnung. Lässt du values weg, werden alle verbleibenden Datenspalten pivotiert und es können hierarchische Spalten entstehen, etwa eine Umsatzebene und eine Personalebene über den Jahren.

Entscheiden, ob Wiederholungen Fehler oder Beobachtungen sind

pivot ordnet Werte um und kann sie nicht zusammenfassen. Zwei Zeilen für Lima 2025 würden zwei Werte in einer Ausgabezelle erfordern und lösen daher einen ValueError aus. Zähle wiederholte Paare mit df.duplicated(subset=["city", "year"]).sum().

Sollen getrennte Beobachtungen zusammengefasst werden, nutze pivot_table mit einer gewählten Aggregation. Für die Werte 95 und 105 bei Lima 2025 ergibt der standardmäßige Mittelwert 100,0. Mit aggfunc="sum" ist der Zellwert 200. Sollte jedes Paar einmal vorkommen, behalte pivot bei, damit ein Datenfehler sichtbar wird, statt ihn unbemerkt zusammenzufassen.

Messwertspalten mit melt in Zeilen umformen

Angenommen, eine CSV-Datei liefert die Spalten city, 2023, 2024 und 2025. Die Werte für Osaka sind 110, 120, 135; die für Lima sind 70, 80, 95. Forme die Jahresspalten um:

long = wide.melt(
    id_vars="city", var_name="year", value_name="sales"
)

id_vars bleibt erhalten und wird wiederholt. Jede Messwertspaltenbezeichnung wird zu einem Jahreswert; jede Zelle wird zu einem Umsatzwert. Zwei Zeilen und drei Messwertspalten erzeugen sechs lange Zeilen, darunter eine wie Osaka, „2023“, 110. Auch fehlende Messwertzellen werden zu Zeilen, sofern du sie nicht anschließend entfernst.

Da diese Spaltenbezeichnungen aus CSV-Text stammen, sind die entstehenden Jahreswerte Text. Nutze long["year"] = long["year"].astype(int), bevor du mit ihnen rechnest. Ganzzahlige Eingabespaltenbezeichnungen würden bereits ganzzahlige Jahreswerte ergeben.

Steuern, was umgeformt wird, und die Form wiederherstellen

value_vars=["2024", "2025"] beschränkt das Umformen auf diese Spalten. Wenn du id_vars vergisst, können Städtenamen zusammen mit Messwerten in dieselbe Wertespalte gelangen. Unterscheide Kennungen immer von den Spalten, die Werte enthalten.

Ohne ausdrückliche Namen heißt die Wertespalte value. Die Variablenspalte übernimmt wide.columns.name oder heißt variable, wenn dieser Name leer ist. Ausdrückliche Angaben für var_name und value_name erleichtern die Verwendung des Ergebnisses.

Pivotiere die sechs Zeilen mit index="city", columns="year", values="sales" zurück, um die drei Jahresspalten wiederherzustellen. Nach dem Pivotieren ist die Stadt der Index und die Spaltenachse heißt year. reset_index() stellt die Stadt als Spalte wieder her und rename_axis(columns=None) entfernt den Namen der Spaltenachse. Prüfe sowohl die Form als auch die Bezeichnungen, bevor du die Tabelle verknüpfst oder speicherst.

Wichtige Erkenntnisse

  • Im Langformat stehen Messwertbezeichnungen in Zeilen, im Breitformat in Spalten.
  • pivot benötigt eindeutige Zeilen-Spalten-Paare und führt keine Aggregation durch.
  • pivot_table fasst wiederholte Paare mit der gewählten Aggregation zusammen.
  • melt wiederholt Kennungen und erstellt eine Zeile pro Messwertzelle.
  • Prüfe die Typen von Spaltenbezeichnungen, wenn sie zu Werten werden.
  • Setze Indizes und Achsennamen zurück, wenn eine flache Ausgabetabelle benötigt wird.

Datenaufbereitung mit pandas: Beispiele

5 Interaktive Lektionen

1

Messwerte bereinigen, ohne ihre Bedeutung zu verlieren

16 Schritte
Quantifiziere fehlende Werte, wähle eine passende Methode zum Auffüllen oder Entfernen und behandle wiederholte Datensätze anhand einer kleinen Wettertabelle.
  1. 1
    EinführungEntscheiden, was jede Lücke bedeutet

    Eine Wettertabelle enthält vier Städte und zwei Messwertspalten: Temperatur in °C und Niederschlag in mm. Einige Messwerte fehlen. Du wirst diese Lücken finden, entscheiden, welche Zeilen nutzbar sind, und einen wiederholten Datensatz von einer tatsächlich anderen Beobachtung unterscheiden. Das gewünschte Ergebnis ist eine Tabelle, deren verbleibende Werte weiterhin das bedeuten, was du annimmst. Nutze für den Code import pandas as pd und import numpy as np.

  2. 2
    ErklärungDas Fehlwertkennzeichen erkennen

    Eine Lücke kann je nach Datentyp als NaN, NaT oder pd.NA erscheinen. Auch None wird als fehlend erkannt.

    Nutze df.isna(), um eine boolesche Tabelle mit True an jeder Lücke zu erstellen. Ein Vergleich mit np.nan übersieht diese Werte, weil NaN selbst sich selbst nicht gleich ist. Mit der Erkennungsmethode funktioniert dieselbe Prüfung für numerische Spalten, Textspalten und Datum-Zeit-Spalten.

  3. 3
    BeispielDie Lücken in den Wetterdaten zählen

    Lima hat die Temperatur 18 und den Niederschlag 0. Bei Oslo fehlt die Temperatur, aber der Niederschlag beträgt 4. Pune hat die Temperatur 31 und der Niederschlag fehlt. Bei Kyiv fehlen beide Messwerte. Jeder Stadtname ist bekannt.

    df.isna().sum() ergibt Stadt 0, Temperatur 2 und Niederschlag 2. df.isna().mean() ergibt Fehlwertanteile von 0, 0,5 und 0,5, weil jede Spalte vier Einträge hat.

  4. 4
    KernaussageZellen von Zeilen unterscheiden

    Bei Kyiv fehlen zwei Zellen, bei Oslo und Pune jeweils eine. Es gibt vier fehlende Zellen, aber nur drei betroffene Zeilen.

    df.isna().sum().sum() zählt die Zellen. df.isna().any(axis=1).sum() markiert zuerst, ob jede Zeile eine Lücke hat, und zählt dann diese Zeilen. Das zeilenweise any verhindert, dass Kyiv zweimal gezählt wird.

  5. 5
    HerausforderungEinen versteckten Fehlwertcode finden

    Eine Sensorspalte enthält 0, 7, -999 und NaN. Laut Dokumentation bedeutet -999, dass der Sensor ausgeschaltet war. Wie viele Werte sollten nach der Bereinigung bekannt bleiben?

    ---reveal---

    Zwei: 0 und 7. Ersetze den dokumentierten Code -999 durch ein Fehlwertkennzeichen und nutze dann erneut isna(). Null ist hier ein echter Messwert. Würdest du jede Null als fehlend behandeln, würdest du zusammen mit den nicht verfügbaren Messwerten einen bekannten Wert entfernen.

  6. 6
    BeispielZeilen mit einer Temperatur behalten

    Angenommen, die Analyse benötigt die Temperatur, kann aber unbekannten Niederschlag tolerieren. Nutze clean = df.dropna(subset=["temp_c"]). Dies behält Lima und Pune.

    Das standardmäßige dropna() würde nur Lima behalten, weil es jede Spalte prüft. thresh=2 würde auch Oslo behalten, wo Stadt und Niederschlag bekannt sind. Wähle die Regel, die ausdrückt, welche Spalten die Analyse tatsächlich benötigt.

  7. 7
    BeispielSchätzwerte vor dem Auffüllen markieren

    Beginne für eine Niederschlagsanalyse, die alle Städte behält, mit den ursprünglichen vier Zeilen. Speichere vor dem Auffüllen der Temperaturen df["temp_missing"] = df["temp_c"].isna().

    Die bekannten Temperaturen 18 und 31 ergeben im Mittel 24,5. Weise df["temp_c"] = df["temp_c"].fillna(df["temp_c"].mean()) zu, um die zwei Lücken zu füllen. Der gespeicherte Indikator kennzeichnet die Werte für Oslo und Kyiv weiterhin als geschätzte Messwerte.

  8. 8
    TippDie Schätzung nach ihrer Bedeutung wählen

    Das Auffüllen mit dem Mittelwert nutzt die bekannten Messwerte als einfache Schätzung, verringert aber die scheinbare Streuung. Der Median reagiert weniger empfindlich auf extreme Messwerte. Das Auffüllen mit null besagt etwas anderes: Die fehlende Größe war null.

    Ein ausgeschalteter Regensensor belegt keinen Niederschlag von null. Nutze pro Spalte Füllwerte, die zu deren Datentyp passen, etwa ein Dictionary mit numerischen Werten für numerische Felder und Text für Textfelder.

  9. 9
    VerbindungDie Reihenfolge nur nutzen, wenn sie Informationen trägt

    Das Vorwärtsauffüllen übernimmt den vorherigen bekannten Wert in eine Lücke; das Rückwärtsauffüllen nutzt den nächsten. Bei 12, NaN, NaN, 15 ergibt ffill(limit=1) die Werte 12, 12, NaN, 15.

    Interpolation schätzt dagegen zwischen bekannten Positionen: Aus 10, NaN, NaN, 16 wird 10, 12, 14, 16. Diese Methoden eignen sich für sinnvoll geordnete Messwerte, nicht für eine Liste von Städten ohne Bezug zueinander.

  10. 10
    HerausforderungNutzbare Zeilen behalten, ohne null Niederschlag zu unterstellen

    Drei Datensätze enthalten A/19/2, B/21/NaN und C/NaN/5 für Stadt/Temperatur/Niederschlag. Du benötigst Temperaturvergleiche und kannst fehlenden Niederschlag nicht schätzen. Welche Zeilen und Werte solltest du behalten?

    ---reveal---

    Behalte A und B, indem du die Temperaturspalte mit dropna(subset=["temp_c"]) prüfst. Lass den Niederschlag für B fehlend. Würdest du alle Spalten beim Entfernen berücksichtigen, ginge die nutzbare Temperatur von B verloren; würdest du den Niederschlag für B mit null auffüllen, fügtest du einen unbelegten Messwert hinzu.

  11. 11
    BeispielVollständige Datensätze vergleichen

    Eine Bestelltabelle hat die IDs 101, 102, 102, 103, 104, 104. Die beiden Zeilen mit 102 sind identisch. Die beiden Zeilen mit 104 unterscheiden sich im erfassten Gewicht: 0,5 kg und 0,8 kg.

    df.duplicated().sum() meldet eine zusätzliche Kopie einer vollständigen Zeile. drop_duplicates() lässt fünf Zeilen übrig, weil die unterschiedlichen Datensätze mit 104 keine exakten Kopien sind. Indexbezeichnungen beeinflussen diesen Vergleich nicht.

  12. 12
    ErklärungEinen Schlüssel und eine zu behaltende Version wählen

    Der Vergleich allein anhand von order_id markiert die zweite 102 und die zweite 104 als Wiederholungen und ergibt zwei zusätzliche Schlüsselkopien. Nun stellt sich die Frage, welche Version die jeweilige Bestellung darstellt.

    keep="last" wählt die letzte in der aktuellen Zeilenreihenfolge. Damit dies die neueste bedeutet, sortiere zuerst nach einem Aktualisierungsfeld. keep=False entfernt alle Mitglieder wiederholter Gruppen und würde daher beide Datensätze mit 104 verwerfen.

  13. 13
    HerausforderungDen neuesten Datensatz behalten

    Artikel H hat in dieser Eingabereihenfolge die Aktualisierungen 1, 4, 2 und die Gewichte 3, 6, 5 kg. Wie behältst du seinen neuesten Datensatz und welches Gewicht bleibt erhalten?

    ---reveal---

    Sortiere updated aufsteigend und nutze dann drop_duplicates(subset="item", keep="last"). Die letzte Aktualisierung ist 4, daher bleiben 6 kg erhalten. Würdest du ohne Sortierung die letzte Eingabezeile behalten, würdest du Aktualisierung 2 auswählen und fälschlich 5 kg behalten.

  14. 14
    TippVor der Identitätsprüfung vereinheitlichen

    Die Textschlüssel „ Lisbon“, „lisbon“ und „LISBON “ stimmen nicht exakt überein. Entferne äußere Leerzeichen und schreibe sie klein, wenn diese Schreibweisen dieselbe Stadt bezeichnen. Untersuche dann wiederholte Schlüssel.

    Der Zweck der Tabelle entscheidet, ob eine Wiederholung zulässig ist: Viele Bestellungen können denselben Kunden haben, aber eine Zuordnungstabelle, die eine Detailzeile pro Kunde liefern soll, benötigt eindeutige Schlüssel. Das Entfernen gültiger Bestellungen kann einen wiederholten Zuordnungsschlüssel nicht korrigieren.

  15. 15
    HerausforderungTextbereinigung mit der Auswahl von Datensätzen verbinden

    Kundendatensätze haben die Schlüssel „ emi “ und „EMI“, die Aktualisierungen 2 und 5 und die Salden 10 und 14. In einem dritten, nicht zugehörigen Datensatz fehlt der ältere Saldo. Du benötigst den neuesten Datensatz pro Kunde. Was sollte geschehen, bevor Salden aufgefüllt werden?

    ---reveal---

    Vereinheitliche die Schlüssel, sortiere nach Aktualisierung und behalte die letzte Zeile pro bereinigtem Schlüssel. Die beiden Schreibweisen von Emi werden zu einem Kunden mit Saldo 14. Kläre zuerst die Identität der Datensätze, damit veraltete Versionen einen späteren Kennwert zum Auffüllen nicht beeinflussen.

  16. 16
    ZusammenfassungDas Ergebnis anhand der Entscheidung prüfen

    Vergleiche nach der Bereinigung die Zeilenanzahl, die Anzahl fehlender Werte und die Eindeutigkeit der Schlüssel mit dem beabsichtigten Ergebnis. Ein Fehlwertindikator hält Schätzwerte sichtbar; eine sortierte, schlüsselbasierte Dublettenprüfung macht die gewählte Datensatzversion sichtbar.

    Speichere zurückgegebene Objekte durch direkte Zuweisung. Unter Copy-on-Write in pandas 3 aktualisiert ein verketteter inplace-Aufruf auf einer ausgewählten Spalte nicht den übergeordneten DataFrame.

2

Codes und Messwerte transformieren

15 Schritte
Wähle exakte Ersetzungen, Zuordnungen, Umwandlung, Klassen, skalierte Werte und Indikatoren anhand der benötigten Ausgabe.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungDie Bedeutung der Ausgabe festlegen
  2. 2
    BeispielEinen Wert zuordnen oder ändern
  3. 3
    BeispielText nach der Bereinigung seines Formats umwandeln
  4. 4
    KernaussageÜberschriften von Zellen unterscheiden
  5. 5
    HerausforderungDie Ursache einer neuen Lücke finden
  6. 6
    BeispielDie Enden eines Intervalls lesen
  7. 7
    ErklärungDie niedrigste Grenze gezielt einschließen
  8. 8
    VerbindungBreiten oder Besetzungszahlen wählen
  9. 9
    HerausforderungDie Regel für die Intervallgrenzen testen
  10. 10
    BeispielVor dem Dividieren das Minimum abziehen
  11. 11
    BeispielDen Abstand vom Mittelwert messen
  12. 12
    TippBegrenzen, ohne eine Beobachtung zu löschen
  13. 13
    ErklärungKategoriezugehörigkeit darstellen
  14. 14
    HerausforderungEine Indikatorzeile mit ausschließlich falschen Werten erklären
  15. 15
    ZusammenfassungDie erzeugte Darstellung prüfen
3

Uneinheitlichen Text in nutzbare Bezeichnungen umwandeln

17 Schritte
Bereinige Namen, extrahiere Mengenangaben aus Beschreibungen und erhalte die Bedeutung und Reihenfolge von Kategoriebezeichnungen.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungText eine einheitliche Struktur geben
  2. 2
    ErklärungEine Methode auf jede Zeichenkette anwenden
  3. 3
    BeispielNur dort aufteilen, wo das Format es verlangt
  4. 4
    TippEine einfache Textsuche wörtlich durchführen
  5. 5
    HerausforderungEinen Textschlüssel für einen Verbund vorbereiten
  6. 6
    ErklärungEin Muster für Mengenangaben erstellen
  7. 7
    BeispielDie erste Mengenangabe extrahieren
  8. 8
    VerbindungAlle Übereinstimmungen wählen, wenn eine nicht genügt
  9. 9
    HerausforderungEine teilweise Codeübereinstimmung zurückweisen
  10. 10
    TippBegrenzen, was ein Muster erfasst
  11. 11
    BeispielDie Bezeichnungsliste von ihren Codes unterscheiden
  12. 12
    ErklärungGrößen ihre vorgesehene Reihenfolge geben
  13. 13
    TippVor dem Zuweisen einer neuen Bezeichnung Platz schaffen
  14. 14
    HerausforderungLeere Kategorien sichtbar halten
  15. 15
    VerbindungKategorien über Datenblöcke hinweg kombinieren
  16. 16
    HerausforderungVor dem Festlegen der erlaubten Liste bereinigen
  17. 17
    ZusammenfassungTextwerte und Speicherung untersuchen
4

Tabellen kombinieren und jede Zeile berücksichtigen

18 Schritte
Sage Schlüsselübereinstimmungen voraus, untersuche nicht zugeordnete Datensätze, ergänze bezeichnete Werte und entscheide, wann Beobachtungen aneinandergefügt werden.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungDie Beziehung zwischen den Tabellen bestimmen
  2. 2
    BeispielDen gemeinsamen Schlüssel ausdrücklich angeben
  3. 3
    ErklärungDie benötigte Seite erhalten
  4. 4
    KernaussageJedes passende Paar erwarten
  5. 5
    TippDie Beziehung zu einer geprüften Regel machen
  6. 6
    BeispielNicht zugeordnete Schlüssel getrennt zählen
  7. 7
    HerausforderungDie Ursache zusätzlicher Zeilen finden
  8. 8
    BeispielEine linke Spalte mit einem rechten Index abgleichen
  9. 9
    TippGleichnamige Spalten unterscheiden
  10. 10
    BeispielDer Hauptquelle Vorrang geben
  11. 11
    VerbindungBeim Addieren von Werten den Bezeichnungen folgen
  12. 12
    HerausforderungDie richtige Beobachtung ergänzen
  13. 13
    BeispielBeobachtungen anhand übereinstimmender Spaltennamen hinzufügen
  14. 14
    ErklärungEine Herkunftsbezeichnung behalten oder einen neuen Index erstellen
  15. 15
    KernaussageBeim Hinzufügen von Spalten Zeilen ausrichten
  16. 16
    HerausforderungNeue Lücken bei Entfernungen untersuchen
  17. 17
    HerausforderungDatenblöcke vor dem Hinzufügen von Zuordnungsdaten kombinieren
  18. 18
    ZusammenfassungHinzugefügte Zeilen und Zuordnungen nachvollziehen
5

Werte umformen und ihre Bezeichnungen erhalten

18 Schritte
Erstelle einen MultiIndex, verschiebe Ebenen mit stack und unstack und wähle pivot oder melt für das Lang- und Breitformat.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungDie Identität jedes Messwerts verfolgen
  2. 2
    BeispielEiner Zeile zwei Bezeichnungen geben
  3. 3
    ErklärungDie tatsächlich gemeinte Ebene auswählen
  4. 4
    TippNach dem Ändern der Ebenenrollen sortieren
  5. 5
    HerausforderungEine innere Ebene auswählen, ohne die Daten zu ändern
  6. 6
    BeispielJahresspalten in den Index verschieben
  7. 7
    ErklärungDie Ebene wählen, die zu Spalten wird
  8. 8
    KernaussageEine neu sichtbare Lücke erkennen
  9. 9
    HerausforderungDen Grund für das Scheitern der Umformung ins Breitformat finden
  10. 10
    VerbindungFür die nächste Aufgabe Lang- oder Breitformat wählen
  11. 11
    BeispielEin eindeutiges Paar in eine Zelle pivotieren
  12. 12
    ErklärungNur aggregieren, wenn es beabsichtigt ist
  13. 13
    BeispielMesswerte mit melt umformen und Kennungen behalten
  14. 14
    TippPrüfen, welchen Typ eine Spaltenbezeichnung annimmt
  15. 15
    HerausforderungEine fehlende Zelle im Breitformat wiederherstellen
  16. 16
    VerbindungEine Tabelle für Spaltenoperationen wiederherstellen
  17. 17
    HerausforderungDie Korrektur für wiederholte Messwerte wählen
  18. 18
    ZusammenfassungForm, Eindeutigkeit und Bedeutung prüfen

Datenaufbereitung mit pandas: Übungsaufgaben

50 Übungsfragen in 5 Sets

Set 1: Daten lesen und einfache Änderungen vorhersagen10 Übungsfragen

Frage 1 von 10

Eine Gleitkomma-Series enthält 6, NaN und 12. Wie lautet ihr standardmäßig berechneter Mittelwert?
  1. 6,0
  2. 18,0
  3. 12,0
  4. 9,0
Antwort zeigenAntwort ausblenden
Antwort: D
Der Mittelwert nutzt die zwei bekannten Werte, addiert also 6 und 12 und dividiert durch 2. Das ergibt 9,0. Die Division durch alle drei Positionen ergibt 6,0 und behandelt den fehlenden Eintrag als null, obwohl keine Null beobachtet wurde. len zählt Positionen; der standardmäßige Mittelwert überspringt Lücken.

Frage 2 von 10

Ein DataFrame hat fehlende Zellen in Zeile A/Spalte x, Zeile A/Spalte y und Zeile C/Spalte x. Jede andere Zelle ist bekannt. Wie viele Zeilen zählt df.isna().any(axis=1).sum()?
  1. 3
  2. 4
  3. 1
  4. 2
Antwort zeigenAntwort ausblenden
Antwort: D
Die Zeilen A und C enthalten jeweils mindestens eine Lücke, daher werden zwei Zeilen gezählt. Zeile A trägt zu dieser zeilenweisen Prüfung nur einmal bei, obwohl sie zwei fehlende Zellen hat. Insgesamt drei würde die fehlenden Zellen statt der davon betroffenen Zeilen zählen.

Frage 3 von 10

Eine Tabelle hat die Spalten item, mass_kg und note. Zeile U hat eine bekannte Masse und eine fehlende Notiz; Zeile V hat eine fehlende Masse und eine bekannte Notiz. Beide Artikelnamen sind bekannt. Was behält df.dropna(subset=["mass_kg"])?
  1. Keine der Zeilen
  2. Nur Zeile V
  3. Nur Zeile U
  4. Beide Zeilen
Antwort zeigenAntwort ausblenden
Antwort: C
Nur Zeile V hat eine Lücke in der geprüften Spalte, daher wird sie entfernt und U bleibt. Eine fehlende Notiz spielt bei dieser subset-Regel keine Rolle. Das Entfernen beider Zeilen würde die umfassendere Standardprüfung über alle Spalten statt der angegebenen Prüfung nur der Masse anwenden.

Frage 4 von 10

Eine Series enthält „A“, „B“ und „C“. Was ergibt s.map({"A": "active", "B": "blocked"})?
  1. „active“, „blocked“, „blocked“
  2. „active“, „blocked“, NaN
  3. „active“, „blocked“, „C“
  4. „A“, „B“, NaN
Antwort zeigenAntwort ausblenden
Antwort: B
Die beiden Dictionary-Schlüssel werden den angegebenen Ausgaben zugeordnet und C wird zu einem fehlenden Wert, weil die Zuordnung keinen C-Eintrag hat. Das ursprüngliche C zu behalten ist das Verhalten von replace mit diesem Dictionary. Ein an map übergebenes Dictionary legt Ausgaben für die gesamte Zuordnung fest, nicht nur Änderungen ausgewählter Werte.

Frage 5 von 10

Die Werte 0, 10 und 20 werden mit Standardeinstellungen an pd.cut(x, [0, 10, 20]) übergeben. Wohin gelangt 10?
  1. Der Wert gelangt in (0, 10].
  2. Der Wert gehört zu beiden Intervallen.
  3. Der Wert gelangt in (10, 20].
  4. Der Wert wird zu einem fehlenden Wert.
Antwort zeigenAntwort ausblenden
Antwort: A
Die Standardintervalle schließen ihren rechten Endpunkt ein und ihren linken Endpunkt aus. Zehn gehört daher zum ersten Intervall, dessen rechte Grenze 10 ist. Die Zuordnung zum zweiten Intervall würde links abgeschlossene Intervalle nutzen, was right=False erfordert.

Frage 6 von 10

Eine Städte-Series enthält „ Accra“, „ACCRA “ und „accra“. Wie viele unterschiedliche Werte und Zeilen bleiben nach s.str.strip().str.lower()?
  1. 1 unterschiedlicher Wert, 3 Zeilen.
  2. 3 unterschiedliche Werte, 3 Zeilen.
  3. 1 unterschiedlicher Wert, 1 Zeile.
  4. 2 unterschiedliche Werte, 3 Zeilen.
Antwort zeigenAntwort ausblenden
Antwort: A
Das Entfernen äußerer Leerzeichen und das Kleinschreiben machen jeden Eintrag zu „accra“, sodass die drei ursprünglichen Zeilen nur einen einzigen Wert enthalten. Die Textbereinigung ändert Werte, ohne Datensätze zu entfernen. Für ein Ergebnis mit einer Zeile wäre eine zusätzliche Entfernung von Dubletten nötig, die nicht durchgeführt wurde.

Frage 7 von 10

Ein Produktcode lautet „72x“. Wie beurteilen str.contains(r"\d+") und str.fullmatch(r"\d+") ihn?
  1. Contains ist wahr; fullmatch ist falsch.
  2. Beide geben wahr zurück.
  3. Contains ist falsch; fullmatch ist wahr.
  4. Beide geben falsch zurück.
Antwort zeigenAntwort ausblenden
Antwort: A
Der Code enthält eine Ziffernfolge, daher ist die Suche an beliebiger Stelle erfolgreich. Das abschließende x verhindert, dass der gesamte Code zu einem Muster passt, das nur Ziffern erlaubt, daher schlägt fullmatch fehl. Würde der numerische Anfang als vollständige Übereinstimmung gelten, würde Text außerhalb des verlangten Formats akzeptiert.

Frage 8 von 10

Lieferungen haben die Depotschlüssel P, P, Q, R. Eine Depottabelle hat die Schlüssel P, P, Q, S. Wie viele Zeilen entstehen bei einem vollständigen äußeren Verbund anhand des Schlüssels?
  1. 8
  2. 7
  3. 6
  4. 9
Antwort zeigenAntwort ausblenden
Antwort: B
Die zwei P-Zeilen auf jeder Seite ergeben vier Paare und Q trägt eine zugeordnete Zeile bei. R und S fügen jeweils eine nicht zugeordnete Zeile hinzu, insgesamt also sieben. Bei sechs würde eine der nicht zugeordneten Seiten fehlen oder die Paare mit wiederholtem Schlüssel würden zu niedrig gezählt; ein vollständiger äußerer Verbund behält die nicht zugeordneten Schlüssel beider Seiten.

Frage 9 von 10

Datenblock A mit zwei Zeilen hat die Spalten id, km. Datenblock B mit drei Zeilen hat die Spalten id, km, flag. Welche Form ergibt pd.concat([a, b], ignore_index=True)?
  1. 6 Zeilen, 3 Spalten
  2. 3 Zeilen, 3 Spalten
  3. 5 Zeilen, 3 Spalten
  4. 5 Zeilen, 2 Spalten
Antwort zeigenAntwort ausblenden
Antwort: C
Das Aneinanderfügen der Zeilen addiert die Eingabelängen und ergibt fünf Zeilen; es behält die Vereinigung der Spaltennamen und ergibt drei Spalten. Die zwei A-Zeilen erhalten fehlende flag-Werte. Zwei Spalten würden join="inner" erfordern; das Zurücksetzen des Index verwirft keine zusätzliche Spalte.

Frage 10 von 10

Eine breite Tabelle hat 3 Stationszeilen und die Spalten station, dry und wet. Welche Länge ergibt das Umformen der zwei Messwertspalten mit id_vars="station"?
  1. 9 Zeilen
  2. 6 Zeilen
  3. 3 Zeilen
  4. 2 Zeilen
Antwort zeigenAntwort ausblenden
Antwort: B
Jede der drei Stationszeilen trägt einen Trocken- und einen Nassmesswert bei und erzeugt so sechs lange Zeilen. Die Stationskennung wird wiederholt, nicht umgeformt. Neun würde die Kennung fälschlich als dritte Messwertspalte behandeln; nur die zwei ausgewählten Wertespalten tragen zur Vervielfachung der Zeilen bei.
Set 2: Methoden für häufige Aufgaben der Datenaufbereitung wählen10 Übungsfragen

Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.

Frage 1 von 10

Die IDs in Zeilenreihenfolge sind K, L, L, M, M, N. Welche IDs bleiben nach drop_duplicates(subset="id", keep=False)?
  1. K, N
  2. L, M
  3. K, L, N
  4. K, L, M, N
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Eine geordnete Series lautet 5,0, NaN, NaN, 11,0. Was ergibt ffill(limit=1)?
  1. 5, NaN, 11, 11
  2. 5, 8, NaN, 11
  3. 5, 5, NaN, 11
  4. 5, 5, 5, 11
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Eine Series enthält „900“, „1,600“ und „bad“. Welche Werte bleiben nach dem wörtlichen Entfernen von Kommas und pd.to_numeric(..., errors="coerce")?
  1. 900, 1600, 0
  2. „900“, „1600“, „bad“
  3. 900, NaN, NaN
  4. 900, 1600, NaN
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Eine nicht konstante Series enthält 5, 15 und 25. Wie lautet der mit Min-Max-Skalierung berechnete Wert von 15?
  1. 0,0
  2. 0,6
  3. 0,5
  4. 0,4
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Eine kategoriale Spalte erlaubt „low“ und „high“. Was muss geschehen, bevor „medium“ einer Zeile zugewiesen werden kann?
  1. Die vorhandenen Kategoriecodes sortieren.
  2. Unbenutzte vorhandene Kategorien entfernen.
  3. „medium“ zu ihren Kategorien hinzufügen.
  4. Ihre aktuelle Ordnung auf wahr setzen.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Eine Series enthält „Park Rd“, „Rd“ und „Road“. Was ergibt s.replace("Rd", "Road")?
  1. „Park Rd“, „Road“, „Road“
  2. „Park Rd“, „Rd“, „Road“
  3. „Park Road“, „Road“, „Road“
  4. „Park Road“, „Rd“, „Road“
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

Eine Sensortabelle hat die Schlüssel S, S, T und muss alle Beobachtungen behalten. Ihre Zuordnungstabelle hat je eine Zeile für S und T. Welche Verbundeinstellungen drücken diese Anforderung aus?
  1. how="left", validate="one_to_many"
  2. how="outer", validate="one_to_one"
  3. how="inner", validate="one_to_one"
  4. how="left", validate="many_to_one"
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Series a hat p = 4, q = NaN; Series b hat q = 9, r = 2. Was ergibt a.combine_first(b)?
  1. p = 4, q = 9
  2. p = 4, q = 9, r = 2
  3. p = 4, q = NaN
  4. p = NaN, q = 9, r = 2
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Eine nach Standort/Monat indizierte Tabelle hat für C/6 die Messwerte 2 und 5, für D/6 den Messwert 4 und für C/7 den Messwert 9. Ein Analyst vertauscht die Ebenen und versucht dann .loc["C"], um Summen nach Standort für Monat 6 zu erhalten. Welche Korrektur erhält die Messwerte und ergibt die benötigten Summen?
  1. Alle Zeilen vor der Auswahl für den Bericht nach Standort gruppieren: C = 16, D = 4.
  2. xs("C", level="site") nutzen, dann nach Monat gruppieren: 6 = 7, 7 = 9.
  3. Wiederholte Standort-Monat-Paare entfernen, dann Monat 6 auswählen: C = 2, D = 4.
  4. xs(6, level="month") nutzen, dann nach Standort gruppieren: C = 7, D = 4.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Eine lange Series enthält die Standort-Perioden-Messwerte A/1 = 2, A/1 = 4, A/2 = 5, B/1 = 3. Die beiden Messwerte für A/1 sollen gemittelt werden; eine fehlende Kombination ist unbekannt. Du benötigst alle Standort-Perioden-Kombinationen in einem breiten Bericht und anschließend einen Export im Langformat. Welcher Plan passt?
  1. A/1 mitteln, mit unstack und dann stack umformen und Lücken entfernen: 3 bekannte Einträge.
  2. A/1 mitteln, mit unstack und dann stack umformen: 4 Einträge, davon einer fehlend.
  3. Ersten Wert für A/1 behalten, mit unstack und dann stack umformen: 4 Einträge, davon einer fehlend.
  4. A/1 mitteln, mit unstack und Nullauffüllung und dann mit stack umformen: 4 bekannte Einträge.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Set 3: Bezeichnungen, Schlüssel und sich ändernde Formen verfolgen10 Übungsfragen

Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.

Frage 1 von 10

Eine Series hat die Werte "", " " und None, die direkt im Speicher erstellt wurden. Wie viele Werte zählt s.isna().sum()?
  1. 3
  2. 1
  3. 2
  4. 0
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Zeilen für Artikel Z haben die Aktualisierungswerte 2, 5 und 3 mit den jeweiligen Massen 8, 11 und 9 kg. Welche Masse bleibt erhalten, nachdem aufsteigend nach Aktualisierung sortiert und beim doppelten Artikelschlüssel die letzte Zeile behalten wird?
  1. 8 kg
  2. 28 kg
  3. 11 kg
  4. 9 kg
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Eine Series enthält acht unterschiedliche Messwerte von 1 bis 8. Wie viele Messwerte gelangen in jede der vier qcut-Gruppen?
  1. 1
  2. 8
  3. 2
  4. 4
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Die Beschreibungen lauten „Oats 18kg, 4kg“ und „Tea“. Was gibt s.str.extract(r"(\d+)\s*kg", expand=False) mit anschließender numerischer Umwandlung zurück?
  1. 18 und NaN
  2. 18 und 0
  3. 22 und NaN
  4. 4 und NaN
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Eine Textspalte hat die Werte „small“, „large“, „medium“. Sie wird in pandas 3.1 in feste kategoriale Daten mit den Kategorien ["small", "large"] umgewandelt und dann mit dropna=False ausgezählt. Welche Anzahlen erscheinen?
  1. small 1, large 2, fehlend 0
  2. small 1, large 1, fehlend 1
  3. small 1, large 1, fehlend 0
  4. small 1, large 1, medium 1
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Ein vollständiger äußerer Verbund verknüpft die linken Schlüssel A, A, B, D mit den rechten Schlüsseln A, A, A, C. Wie lauten die _merge-Zeilenanzahlen für both, left_only und right_only?
  1. 6, 2, 1
  2. 6, 1, 1
  3. 3, 2, 1
  4. 2, 2, 1
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

Series x hat a = 2, b = 6 und y hat b = 4, c = 8. Wie groß ist nach x.add(y, fill_value=0) die Summe der resultierenden Werte?
  1. 24
  2. 12
  3. 20
  4. 10
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Ein Index hat die äußere Ebene Stadt und die innere Ebene Jahr. Was wählt .loc[2027] nach swaplevel("city", "year").sort_index() aus?
  1. Zeilen ab dem Jahr 2027.
  2. Die Zeile an Position 2027.
  3. Die Stadt mit der Bezeichnung 2027.
  4. Alle Zeilen im Jahr 2027.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Ereignisanzahlen sind N/1 = 7, N/2 = 9, S/1 = 3, ohne Datensatz für S/2. Das Ereignisprotokoll ist vollständig, daher bedeutet das Fehlen, dass es keine Ereignisse gab. Ein Bericht muss jedes Standort-Perioden-Paar zeigen und diese Abdeckung in einem Export im Langformat erhalten. Welcher Plan und welches Ergebnis passen?
  1. Mit unstack, stack und Vorwärtsauffüllen umformen: 4 Einträge mit Summe 22.
  2. Mit unstack und stack umformen und Lücken entfernen: 3 Einträge mit Summe 19.
  3. Mit unstack und Nullauffüllung, dann mit stack umformen: 3 Einträge mit Summe 19.
  4. Mit unstack und Nullauffüllung, dann mit stack umformen: 4 Einträge mit Summe 19.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Eine lange Tabelle hat für P/2026 die Werte 8 und 12 und für Q/2026 den Wert 6. Was ergibt eine pivot_table mit Standort als Zeilen, Jahr als Spalten und der Standardaggregation, wenn anschließend die eine Jahresspalte mit melt umgeformt wird?
  1. 2 Zeilen mit den Werten 10, 6
  2. 3 Zeilen mit den Werten 10, 10, 6
  3. 3 Zeilen mit den Werten 8, 12, 6
  4. 2 Zeilen mit den Werten 20, 6
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Set 4: Änderungen in einem Bereinigungsablauf untersuchen10 Übungsfragen

Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.

Frage 1 von 10

Die Messwerte in einer numerischen Spalte sind 2, 4, 30, NaN. Du speicherst einen Fehlwertindikator und füllst dann die Lücke mit dem Median der Spalte. Welcher Wert wird eingesetzt und wie viele Indikatorwerte sind wahr?
  1. 3 und 1
  2. 4 und 0
  3. 12 und 1
  4. 4 und 1
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Eine Tabelle enthält die Schlüssel „ seoul“, „SEOUL“ und „busan“. Ihre übrigen Daten stimmen jeweils innerhalb einer Stadt überein. Wie viele Zeilen bleiben nach dem Entfernen äußerer Leerzeichen und Kleinschreiben des Schlüssels, wenn jedes Mitglied von Gruppen mit wiederholtem Schlüssel entfernt wird?
  1. 3
  2. 1
  3. 2
  4. 0
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Der ursprüngliche numerische Text lautet „5“, „none“, None, „ 9 “. Wie viele ursprünglich vorhandene Werte sind nach to_numeric(errors="coerce") zu fehlenden Werten geworden?
  1. 3
  2. 0
  3. 2
  4. 1
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Eine Massenspalte enthält 0, 10, 20 und einen unbekannten Messwert. Nach cut mit den Grenzen [0, 10, 20] und standardmäßigen Indikatoren enthalten zwei Zeilen ausschließlich falsche Werte. Gültige Massen sollen Kategorien zugeordnet und unbekannte Messwerte getrennt erkennbar sein. Welche Korrektur passt?
  1. Zeilen mit ausschließlich falschen Werten entfernen und die ursprünglichen Intervallgrenzen behalten.
  2. Zu right=False wechseln und Fehlwertindikatoren deaktiviert lassen.
  3. Die niedrigste Grenze einschließen und beim Kodieren dummy_na=True verwenden.
  4. Unbekannte Masse mit 0 auffüllen und dann mit include_lowest=True einteilen.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Was macht s.str.split("/", n=1, expand=True) mit „zone/aisle/bin“?
  1. Erzeugt 3 Spalten: „zone“, „aisle“, „bin“.
  2. Erzeugt 1 Spalte mit dem ursprünglichen Text.
  3. Erzeugt 2 Spalten: „zone“, „aisle/bin“.
  4. Erzeugt 2 Spalten: „zone/aisle“, „bin“.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Die Codes lauten „T.8“, „T18“ und „T.12“. Du musst Codes mit einem tatsächlichen Punkt auswählen, dann ihre abschließenden Ziffern mit r"(\d+)" extrahieren und umwandeln. Welche numerischen Werte bleiben?
  1. 8 und 12
  2. 8, 18, 12
  3. Nur 18
  4. 8 und 1
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

Lieferungen haben die Lieferantenschlüssel „ ax “, „AX“, „by“. Eine Zuordnungstabelle enthält „ax“, „ax“, „by“, wobei sich die Angaben in ihren beiden ax-Zeilen unterscheiden. Was muss geklärt werden, bevor ein linker äußerer Verbund zuverlässig eine Detailzeile pro Lieferung liefern kann?
  1. Nur die erste Lieferung für jeden Schlüssel behalten.
  2. Nur den Text der Lieferungsschlüssel vereinheitlichen.
  3. Nur die gleichnamigen Detailspalten umbenennen.
  4. Schlüssel vereinheitlichen und doppelte Zuordnungsschlüssel klären.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Tabelle a hat zwei Zeilen mit den Spalten id, km. Tabelle b hat eine Zeile mit den Spalten id, Km. Wie viele Zellen fehlen nach dem Aneinanderfügen der Zeilen mit standardmäßiger Spaltenbehandlung insgesamt in den beiden Entfernungsspalten?
  1. 3
  2. 2
  3. 1
  4. 0
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Ein Region-Jahr-MultiIndex enthält E/2025 = 3, E/2026 = 5, W/2025 = 7, W/2026 = 11. Ein Bericht benötigt nur 2026, mit Regionen als Spalten. Ein Analyst wählt .loc[2026] und pivotiert dann. Welche Korrektur wählt die Daten aus und erzeugt eine einzelne Berichtszeile?
  1. xs(2025, level="year") wählen, Jahr als 2026 wiederherstellen, dann Jahr/Region pivotieren: 3 und 7.
  2. xs(2026, level="year") wählen, Jahr als 2026 wiederherstellen, dann Jahr/Region pivotieren: 5 und 11.
  3. xs(2026, level="year") wählen, Jahr als 2026 wiederherstellen, dann Jahr/Region pivotieren: 8 und 18.
  4. Nach Region summieren, Jahr als 2026 wiederherstellen, dann Jahr/Region pivotieren: 8 und 18.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Eine Tabelle hat drei eindeutige Standorte mit den Spalten site, day und night. Eine Nachtzelle fehlt. Wie lauten nach dem Umformen beider Messwertspalten mit melt, dem Entfernen fehlender Werte und dem Zurückpivotieren die Anzahl langer Zeilen und die Anzahl fehlender Zellen im Breitformat?
  1. 5 Zeilen und 0 Lücken
  2. 5 Zeilen und 1 Lücke
  3. 6 Zeilen und 0 Lücken
  4. 6 Zeilen und 1 Lücke
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Set 5: Verknüpfte Transformationen durchdenken10 Übungsfragen

Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.

Frage 1 von 10

Eine numerische Spalte im Speicher enthält 0, -99, NaN und 6. Ihre Dokumentation definiert -99 als fehlend und 0 als echten Messwert. Wie lauten nach der Bereinigung die Anzahl bekannter Werte und der Mittelwert?
  1. 2 bekannt, Mittelwert 3
  2. 3 bekannt, Mittelwert 2
  3. 3 bekannt, Mittelwert -31
  4. 2 bekannt, Mittelwert 6
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Die Zeilen lauten A/2/unbekannt, B/unbekannt/8, C/unbekannt/unbekannt, D/6/10 für Standort/x/y. Behalte jede Zeile mit mindestens einem bekannten Messwert und fülle dann nur x anhand des Mittelwerts der verbleibenden x-Werte auf. Welche Zeilenregel und welche abschließende x-Summe passen?
  1. Mindestens 2 bekannte Zellen pro Zeile behalten; x-Summe 8.
  2. Jede Zeile mit fehlendem Messwert entfernen; x-Summe 6.
  3. Mindestens 2 bekannte Zellen pro Zeile behalten; x-Summe 12.
  4. Mindestens 1 bekannte Zelle pro Zeile behalten; x-Summe 16.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Eine Series enthält die Codes „a“, „b“ und „z“. Der Ablauf ordnet mit {"a": "4", "b": "bad"} zu und wendet dann eine numerische Typumwandlung mit Fehlerersetzung an. Welche ursprünglichen Einträge fehlen am Ende und warum?
  1. Nur b, weil bad nicht numerisch ist.
  2. b und z, durch Umwandlungs- und Zuordnungsfehler.
  3. Nur z, weil sein Schlüssel fehlt.
  4. a und b, durch die Zuordnung numerisch aussehenden Textes.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Die ursprünglichen Messwerte sind 3, 9, 21, 45. Eine transformierte Spalte lautet 0, etwa 0,333, 1, 1 in derselben Reihenfolge. Welche Operationsfolge erklärt die Ausgabe und behält dabei jede Zeile?
  1. Bei 21 begrenzen, dann die begrenzte Spalte mit Min-Max skalieren.
  2. Durch 45 dividieren, dann skalierte Werte bei 1 begrenzen.
  3. Bei 21 begrenzen, dann die begrenzte Spalte durch 21 dividieren.
  4. Die ursprüngliche Spalte mit Min-Max skalieren, dann bei 1 begrenzen.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Ungeordnete kategoriale Daten enthalten Länderbezeichnungen und haben Ganzzahlcodes. Ein Modell interpretiert numerische Eingaben als Größen. Warum sollten diese Codes durch Kategorieindikatoren ersetzt werden?
  1. Codes können nicht in numerischen Spalten gespeichert werden.
  2. Indikatoren erzeugen eine korrekte Rangfolge der Länder.
  3. Codes würden eine erfundene Reihenfolge und Abstände unterstellen.
  4. Codes benötigen mehr Speicher als alle Textwerte.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Lieferungen haben die Schlüssel U, U, V, W. Eine Lieferantenzuordnungstabelle hat U/Aktualisierung 1, U/Aktualisierung 4, V/Aktualisierung 2, X/Aktualisierung 2. Du benötigst die neuesten Angaben pro Lieferant, jede Lieferung soll erhalten bleiben und die unterschiedlichen nicht zugeordneten Schlüssel aus beiden Quellen sollen gezählt werden. Welcher Plan passt?
  1. Neueste Zuordnungsschlüssel behalten; mit äußerem Verbund prüfen; innerer Verbund hat 3 Zeilen und 2 nicht zugeordnete Schlüssel.
  2. Neueste Zuordnungsschlüssel behalten; mit innerem Verbund prüfen; linker Verbund hat 4 Zeilen und 0 nicht zugeordnete Schlüssel.
  3. Eine Lieferung pro Schlüssel behalten; mit äußerem Verbund prüfen; linker Verbund hat 3 Zeilen und 2 nicht zugeordnete Schlüssel.
  4. Neueste Zuordnungsschlüssel behalten; mit äußerem Verbund prüfen; linker Verbund hat 4 Zeilen und 2 nicht zugeordnete Schlüssel.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

Die Hauptwerte sind a = 5, b = NaN; die Ersatzwerte sind a = 50, b = 7, c = 9. Was würde sich nach primary.combine_first(backup) ändern, wenn die Priorität der Quellen umgekehrt würde?
  1. Nur c verschwindet aus dem Ergebnis.
  2. Nur a ändert sich von 5 auf 50.
  3. Jeder Ergebniswert ändert sich.
  4. Nur b ändert sich von 7 zu fehlend.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Zwei DataFrames haben jeweils die Spalten kg und count, beide mit dem Datentyp "Int64" mit Fehlwertunterstützung. Ein dritter hat nur kg mit diesem Datentyp. Was erklärt nach dem Aneinanderfügen der Zeilen die entstehende count-Spalte am besten?
  1. Sie verliert jede Zeile aus der dritten Eingabe.
  2. Sie bleibt ganzzahlig mit Fehlwertunterstützung und Lücken für die dritte Eingabe.
  3. Sie ist Text, weil eine Eingabe count ausgelassen hat.
  4. Sie wird ganzzahlig ohne Fehlwertunterstützung und enthält Nullen für die dritte Eingabe.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Ereignisdatensätze lauten A/1 = 4, A/1 = 6, A/2 = 8, B/1 = 3. Das Protokoll ist vollständig und ein Bericht muss jede Standort-Perioden-Summe einschließlich der Paare ohne Ereignisse zeigen und anschließend dieselbe Abdeckung als lange Zeilen exportieren. Welcher Plan liefert den erforderlichen Export?
  1. Wiederholte Paare summieren, mit unstack und Nullauffüllung, dann mit stack umformen: 4 Zeilen, Summe 21.
  2. Das erste wiederholte Paar behalten, mit unstack und Nullauffüllung, dann mit stack umformen: 4 Zeilen, Summe 15.
  3. Wiederholte Paare mitteln, mit unstack und Nullauffüllung, dann mit stack umformen: 4 Zeilen, Summe 16.
  4. Wiederholte Paare summieren, mit unstack und stack umformen und Lücken entfernen: 3 Zeilen, Summe 21.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Bekannte Ereignisanzahlen sind A/1 = 4, A/1 = 8, A/2 = 6, B/1 = 5; für B/2 gibt es keinen Datensatz und der Wert ist unbekannt. Ein Analyst verwendet eine Pivot-Tabelle mit Standardeinstellungen und formt sie dann mit melt um. Er behauptet, Summen für bekannte Paare zu exportieren. Welche überarbeitete Ausgabe und Begründung passen?
  1. Vier Zeilen mit Summe 23, weil melt beide A/1-Datensätze wiederherstellt.
  2. Vier Zeilen mit Summe 23, weil null das unbekannte Paar ersetzen kann.
  3. Drei Zeilen mit Summe 17, weil der Standardmittelwert eine Paarsumme ist.
  4. Drei Zeilen mit Summe 23 nach Summenaggregation und Entfernen unbekannter Zellen.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Hängst du bei deiner eigenen Aufgabe fest? Hausaufgabenhilfe

Schlüsselbegriffe

72 Schlüsselbegriffe, jeweils mit Definition

A

Achse
Eine Achse ist eine Richtung eines pandas-Objekts; das Aneinanderfügen entlang Achse 0 fügt Zeilen hinzu und entlang Achse 1 Spalten.
Wähle Achse 1, wenn du zwei Messwert-Series bei übereinstimmenden Indexbezeichnungen nebeneinanderstellst.
Aufteilen von Zeichenketten
Das Aufteilen von Zeichenketten trennt Text an einem gewählten Trennzeichen und erzeugt Listen von Teilen oder bei entsprechender Erweiterung separate Spalten.
Das Aufteilen der Zeichenkette „Silva, Ana“ an „, “ ergibt einen Teil für den Nachnamen und einen für den Vornamen.
Ausrichtung anhand von Indexbezeichnungen
Die Ausrichtung anhand von Indexbezeichnungen paart pandas-Werte anhand ihrer Zeilen- oder Spaltenbezeichnungen, sodass auch unterschiedlich geordnete Objekte dieselben Beobachtungen zuordnen können.
Beim Addieren zweier Series addiert die Ausrichtung anhand von Indexbezeichnungen ihre Werte mit der Bezeichnung b, selbst wenn b in jeder Series eine andere Position einnimmt.

B

Breitformat
Das Breitformat verteilt Messwerte auf mehrere Spalten und gibt häufig jeder Einheit eine Zeile und jeder Messwertbezeichnung eine eigene Spalte.
Das Breitformat stellt drei Jahresumsätze neben jede Stadt, um sie direkt über Jahre hinweg zu vergleichen.

C

combine_first
Die Methode combine_first behält die bekannten Werte eines ersten Objekts, füllt dessen Lücken anhand passender Bezeichnungen aus einem anderen Objekt und fügt neue Bezeichnungen hinzu.
Nutze combine_first, um fehlende Messwerte aus einer Ersatzquelle zu ergänzen und dabei bekannte Werte der Hauptquelle zu behalten.
Copy-on-Write
Copy-on-Write verhindert, dass Änderungen an einem ausgewählten pandas-Objekt unbemerkt ein anderes Objekt ändern, das dieselben zugrunde liegenden Daten nutzt.
Weise unter Copy-on-Write eine aufgefüllte Series ihrer DataFrame-Spalte wieder zu, um die übergeordnete Tabelle zu aktualisieren.

D

Datensatzschlüssel
Ein Datensatzschlüssel ist eine Spalte oder Kombination von Spalten, die einen realen Datensatz identifiziert und festlegt, welche Wiederholungen untersucht werden müssen.
Eine Bestell-ID ist ein Datensatzschlüssel, während eine Kunden-ID zulässigerweise in mehreren getrennten Bestellungen vorkommen kann.
Datentyp mit Fehlwertunterstützung
Ein Datentyp mit Fehlwertunterstützung speichert Werte eines bestimmten Typs zusammen mit einem Fehlwertkennzeichen, etwa "Int64" für ganze Zahlen mit pd.NA.
Ein Datentyp mit Fehlwertunterstützung behält Paketanzahlen als ganze Zahlen, selbst wenn ein Datensatz eine unbekannte Anzahl hat.
Doppelte Zeile
Eine doppelte Zeile wiederholt eine andere Zeile in allen verglichenen Spalten; pandas markiert standardmäßig spätere Kopien und ignoriert Indexbezeichnungen.
Eine doppelte Zeile mit einem anderen numerischen Index zählt weiterhin als Kopie, wenn alle ihre Datenwerte übereinstimmen.
dropna
Die Methode dropna entfernt Zeilen oder Spalten entsprechend ihren fehlenden Werten und bietet Optionen für ausgewählte Spalten und die erforderliche Anzahl vorhandener Werte.
Nutze dropna(subset=["mass_kg"]), wenn nutzbare Zeilen eine Masse haben müssen, selbst wenn ein anderes Feld unvollständig ist.

E

Eindeutigkeit
Eindeutigkeit bedeutet, dass sich kein geprüfter Schlüsselwert und keine geprüfte Schlüsselkombination wiederholt; sie ist eine Anforderung für Zuordnungstabellen mit einer Zeile pro Schlüssel.
Prüfe die Eindeutigkeit der Kundenzuordnungstabelle, bevor du ihre Angaben einer Tabelle mit vielen Bestellungen hinzufügst.
Erfassungsgruppe
Eine Erfassungsgruppe markiert einen Teil eines regulären Ausdrucks mit Klammern, sodass der passende Text als extrahiertes Ausgabefeld zurückgegeben werden kann.
Eine Erfassungsgruppe um die Ziffern eines Massenmusters gibt „14“ aus dem Text „Lentils 14 kg“ zurück.

F

Fehlende Kombination
Eine fehlende Kombination ist eine Zusammenstellung von Bezeichnungen ohne entsprechende Beobachtung, die beim Umformen ins Breitformat als fehlende Zelle in einer rechteckigen Tabelle sichtbar werden kann.
Eine fehlende Kombination für eine Station und einen Monat erscheint als NaN, wenn die langen Messwerte mit unstack umgeformt werden.
Fehlender Wert
Ein fehlender Wert kennzeichnet eine unbekannte oder nicht verfügbare Beobachtung durch ein von pandas erkanntes Kennzeichen anstelle gewöhnlicher Daten.
Ein fehlender Wert in rain_mm bedeutet, dass der Messwert nicht verfügbar ist, und muss daher von ausbleibendem Regen unterschieden werden.
Fehlwertmaske
Eine Fehlwertmaske ist ein boolesches Objekt, das markiert, wo Werte fehlen, und dieselben Bezeichnungen und dieselbe Form wie das geprüfte Objekt hat.
Das Summieren einer Fehlwertmaske nach Spalten zeigt, wie viele Temperatur- und Niederschlagszellen Aufmerksamkeit benötigen.

G

Geordnete kategoriale Daten
Geordnete kategoriale Daten haben eine festgelegte Bezeichnungsreihenfolge, die statt der alphabetischen Schreibweise die Sortierung und geordnete Vergleiche bestimmt.
Geordnete kategoriale Daten mit S, M, L bringen Größen beim Sortieren der Spalte in ihre vorgesehene Reihenfolge.
Gierige Wiederholung
Eine gierige Wiederholung erfasst so viel Text wie möglich, während das verbleibende Muster noch passen kann, und erstreckt sich dabei manchmal über mehrere Trennzeichen.
Die gierige Wiederholung in r"<.*>" kann in einer kurzen Zeichenkette mit Auszeichnungen beide Tags und den Text dazwischen umfassen.

H

Herkunftsschlüssel
Ein an concat übergebener Herkunftsschlüssel wird zu einer äußeren Indexbezeichnung, die den Teil identifiziert, aus dem jede Zeile oder Spalte stammt.
Ein Herkunftsschlüssel namens „batch_a“ ermöglicht es dir, diese Zeilen abzurufen, selbst wenn sich innere Zeilennummern über Datenblöcke hinweg wiederholen.

I

id_vars
Das Argument id_vars bestimmt Spalten, die beim Umformen mit melt erhalten bleiben, und trennt Beobachtungskennungen von Spalten mit Messwerten.
Die Einstellung id_vars="station" hält Stationsnamen aus den numerischen Messwerten heraus, die durch melt entstehen.
ignore_index
Die Option ignore_index ersetzt Bezeichnungen entlang der Verkettungsachse durch fortlaufende ganze Zahlen und erhält die Ausrichtung auf der anderen Achse.
Setze ignore_index=True, wenn Monatsdateien entbehrliche Zeilennummern haben, die sich sonst wiederholen würden.
Imputation
Imputation ersetzt fehlende Daten durch geschätzte oder gewählte Werte und erhält dabei Zeilen, verändert aber die beobachtete Verteilung einer Spalte.
Die Mittelwertimputation füllt eine fehlende Temperatur mit dem Mittelwert der bekannten Messwerte und verringert die scheinbare Streuung.
Indexbasierter Verbund
Ein indexbasierter Verbund gleicht Tabellen anhand von Indexbezeichnungen ab; pandas-join nutzt den rechten Index auch dann, wenn eine linke Schlüsselspalte angegeben wird.
Ein indexbasierter Verbund kann wiederholten Messwerten Stationshöhen hinzufügen, ohne sie nach Zeilenposition zu paaren.
Indexebene
Eine Indexebene ist eine bezeichnete Komponente eines hierarchischen Index, etwa Stadt oder Jahr, mit einer Position und einem optionalen Namen.
Wird das Jahr auf die äußere Indexebene verschoben, ist es die erste Bezeichnung, die bei einer loc-Auswahl mit einer einzelnen Bezeichnung verwendet wird.
Indexsortierung
Die Indexsortierung ordnet Zeilen nach ihren Indexbezeichnungen, macht Bezeichnungsbereiche nutzbar und gruppiert einen MultiIndex entsprechend seiner Ebenenreihenfolge.
Wende nach dem Vertauschen der Stadt- und Jahresebene eine Indexsortierung an, damit die Zeilen der neuen Reihenfolge mit dem Jahr zuerst folgen.
Indikatorspalte
Eine Indikatorspalte markiert, ob eine Zeile zu einer Kategorie gehört, üblicherweise mit booleschen Werten oder für numerische Eingaben mit Nullen und Einsen.
Eine mit get_dummies erstellte Indikatorspalte für „blue“ ist nur für Zeilen mit der Bezeichnung blue wahr.
Innerer Verbund
Ein innerer Verbund behält Zeilenpaare, deren Schlüssel auf beiden Seiten übereinstimmen, und schließt Beobachtungen ohne passenden Schlüssel in der anderen Tabelle aus.
Ein innerer Verbund entfernt eine Lieferung, deren Stations-ID keine passende Zeile in der Stationszuordnungstabelle hat.
Interpolation
Interpolation schätzt Werte zwischen bekannten Messwerten; die lineare Interpolation in pandas nutzt deren Positionen, um entlang einer Geraden aufzufüllen.
Interpolation macht aus den geordneten Messwerten 8, NaN, 12 die Werte 8, 10, 12, wenn eine geradlinige Schätzung passt.

K

Kategorialer Datentyp
Ein kategorialer Datentyp speichert eine festgelegte Liste von Bezeichnungen und pro Zeile einen Ganzzahlcode; optional können die Bezeichnungen sinnvoll geordnet werden.
Ein kategorialer Datentyp kann wenige wiederholte Produktgrößenbezeichnungen effizienter speichern als wiederholten Text.
Kategoriecode
Ein Kategoriecode ist eine ganzzahlige Kennung, die auf eine Bezeichnung in einer Kategorienliste verweist, ohne einen gemessenen Abstand zwischen den Bezeichnungen zu implizieren.
Ein Kategoriecode für ein Land ist eine Speicherkennung, behandle ihn also nicht als numerischen Rang des Landes.
Klasse
Eine Klasse ist ein numerisches Intervall zum Gruppieren von Messwerten. Ihre festgelegten Endpunkte bestimmen, wohin Werte auf den Grenzen gehören.
Bei einer Klasse, die als (0, 10] geschrieben wird, ist der Messwert 10 eingeschlossen und der Messwert 0 ausgeschlossen.

L

Langformat
Das Langformat speichert Messwertbezeichnungen als Werte in identifizierenden Spalten, mit Beobachtungen in Zeilen und einer gemeinsamen Messwertspalte.
Das Langformat setzt Stadt, Jahr und Umsatz in Spalten, sodass jede Stadt-Jahr-Beobachtung eine Zeile einnimmt.
Leerraumzeichen
Leerraumzeichen sind Abstandszeichen wie Leerzeichen und Tabulatoren, die innerhalb von Text bedeutsam oder um eine Bezeichnung herum unerwünscht sein können.
Ein äußeres Leerraumzeichen macht „Lima “ und „Lima“ unterschiedlich, bis die Stadtwerte mit str.strip() bereinigt werden.
Linker äußerer Verbund
Ein linker äußerer Verbund erhält jede linke Zeile und ihre Übereinstimmungen und setzt fehlende rechte Felder ein, wenn ein linker Schlüssel keine Übereinstimmung hat.
Ein linker äußerer Verbund behält eine Bestellung mit unbekanntem Kundenschlüssel, sodass ihre fehlenden Zuordnungsdaten sichtbar bleiben.
Literaler Musterabgleich
Ein literaler Musterabgleich sucht nach genau den angegebenen Zeichen und gibt speziellen Symbolen regulärer Ausdrücke wie einem Punkt keine Musterbedeutung.
Nutze einen literalen Musterabgleich, um den Punkt aus einem Code zu entfernen, ohne ihn als Muster für ein beliebiges Zeichen zu behandeln.

M

map
Die Methode map ordnet Series-Werte über eine Funktion oder eine Zuordnung zu; bei einer Zuordnung mit einem Dictionary werden unbekannte Schlüssel zu fehlenden Werten.
Ein map für Ländercodes macht Codes, die im Dictionary fehlen, als Lücken sichtbar, die der Analyst untersuchen kann.
melt
Die Methode melt wandelt Messwertspalten in Bezeichnungs-Wert-Zeilen um und erhält und wiederholt dabei die als Zeilenkennungen bestimmten Spalten.
Ein melt von vier Jahresspalten erzeugt vier Zeilen pro Stadt, einschließlich Zeilen für leere Messwertzellen.
Min-Max-Skalierung
Die Min-Max-Skalierung zieht das Minimum einer Spalte ab und dividiert durch ihre von null verschiedene Spannweite. Sie bildet das beobachtete Minimum auf 0 und das Maximum auf 1 ab.
Für die Messwerte 2, 5, 8 ergibt die Min-Max-Skalierung 0, 0,5, 1 anhand der ursprünglichen Spannweite 6.
MultiIndex
Ein MultiIndex identifiziert eine pandas-Zeile oder -Spalte mit mehreren Bezeichnungsebenen, sodass eine vollständige Bezeichnung ein Tupel aus Werten dieser Ebenen ist.
Ein MultiIndex mit Stadt und Jahr identifiziert die Messwerte derselben Stadt für jedes Jahr getrennt.

N

NaN
NaN ist ein Fehlwertkennzeichen in Gleitkommaspalten und standardmäßigen Textspalten von pandas 3; bei gewöhnlichen Gleichheitsprüfungen ist es selbst sich selbst nicht gleich.
Nutze isna(), um NaN in der Temperaturspalte zu finden, bevor du die für einen Mittelwert verfügbaren Messwerte zählst.
NaT
NaT ist das pandas-Fehlwertkennzeichen für Datums- und Zeitwerte und ermöglicht es einer Datum-Zeit-Spalte, ein nicht verfügbares Datum oder einen nicht verfügbaren Zeitstempel darzustellen.
Ein fehlendes Inspektionsdatum erscheint als NaT und isna() erkennt es ebenso wie fehlende numerische Messwerte.

P

pivot
Die Methode pivot formt lange Daten ins Breitformat um, indem sie gewählte Index-Spalten-Paare in Zellen setzt, und löst einen Fehler aus, wenn ein Paar mehrere Werte identifiziert.
Ein pivot von Station und Monat verlangt einen Messwert für jede Stations-Monats-Zelle in der Ausgabe.
pivot_table
Die Methode pivot_table fasst Werte für wiederholte Index-Spalten-Paare durch eine Aggregation zusammen und nutzt den Mittelwert, wenn keine angegeben ist.
Nutze pivot_table mit aggfunc="sum", wenn getrennte Lieferungen zu einer Tagessumme addiert werden sollen.

Q

Quantilbasierte Klasseneinteilung
Die quantilbasierte Klasseneinteilung teilt Messwerte nach ihrer Rangfolge in Gruppen mit ungefähr gleicher Beobachtungsanzahl ein, wobei sich deren numerische Breiten unterscheiden können.
Nutze die quantilbasierte Klasseneinteilung mit qcut, um Gruppen mit niedrigen, Werten im mittleren Bereich und hohen Messwerten bei ähnlicher Besetzungszahl zu vergleichen.
Querschnitt
Ein Querschnitt wählt einen Wert aus einer benannten Indexebene über andere Ebenen hinweg aus und ermöglicht so die direkte Auswahl einer inneren Ebene.
Ein Querschnitt für das Jahr 2026 ruft dieses Jahr über alle Städte in einem Stadt-Jahr-MultiIndex hinweg ab.

R

Raw-String
Ein Raw-String ist eine Python-Zeichenkettenform mit vorangestelltem r, die umgekehrte Schrägstriche etwa für Muster regulärer Ausdrücke erhält.
Schreibe ein Ziffernmuster als Raw-String, r"\d+", damit sein umgekehrter Schrägstrich bei der Verarbeitung des regulären Ausdrucks ankommt.
Regulärer Ausdruck
Ein regulärer Ausdruck ist ein Textmuster aus Zeichenregeln und Wiederholungen, mit dem strukturierter Text geprüft, extrahiert oder ersetzt wird.
Ein regulärer Ausdruck kann eine ganzzahlige Masse mit anschließendem „kg“ finden, selbst wenn die Leerzeichen variieren.
rename
Die Methode rename ändert Zeilen- oder Spaltenbezeichnungen anhand einer Zuordnung oder Funktion und lässt die gespeicherten Datenwerte unverändert.
Nutze rename(columns={"Weight": "mass_kg"}), um einer Überschrift eine klare Bedeutung zu geben, ohne ihre Zellen zu ändern.
replace
Die Methode replace ersetzt exakt übereinstimmende Werte mithilfe eines Skalars, einer Liste oder eines Dictionarys und lässt Einträge ohne Übereinstimmung unverändert.
Ein replace-Dictionary kann „pending“ in „open“ ändern, ohne die anderen Statuswerte zu verändern.
reset_index
Die Methode reset_index verschiebt eine oder mehrere Indexebenen in gewöhnliche Spalten und stellt für die verbleibende Anordnung einen Index bereit.
Nutze reset_index(level="year"), um das Jahr als Spalte wiederherzustellen und die Stadt im Index zu belassen.
Rückwärtsauffüllen
Beim Rückwärtsauffüllen wird der nächste bekannte Wert in frühere Lücken kopiert, sodass seine Bedeutung von der Reihenfolge der Beobachtungen abhängt.
Das Rückwärtsauffüllen nimmt den folgenden bekannten Messwert als Füllwert für einen früheren nicht verfügbaren Messwert.

S

stack
Die Methode stack verschiebt eine Spaltenbezeichnungsebene in eine innere Zeilenindexebene und gibt je nach verbleibenden Ebenen eine Series oder einen DataFrame zurück.
Der Aufruf von stack auf einer Stadttabelle mit Jahresspalten ergibt Stadt-Jahr-Indexpaare für dieselben Umsatzwerte.
str-Accessor
Der str-Accessor stellt vektorisierte Textmethoden für eine Series bereit, mit denen jede nicht fehlende Zeichenkette bereinigt oder durchsucht werden kann.
Nutze den str-Accessor in s.str.lower(), um eine ganze Städtespalte mit einem Ausdruck kleinzuschreiben.
subset
Das Argument subset beschränkt eine Dubletten- oder Fehlwertprüfung auf benannte Spalten und lässt andere Spalten bei dieser Entscheidung außer Acht.
Nutze subset="order_id", um wiederholte Bestellschlüssel zu erkennen, selbst wenn sich ihre erfassten Gewichte unterscheiden.
Suffix
Ein Suffix ist Text, der beim Kombinieren an gleichnamige Spalten außerhalb der Schlüsselspalten angehängt wird, damit die Herkunft jeder Spalte unterscheidbar bleibt.
Ein Suffix wie _sensor unterscheidet eine Messwertspalte von der gleichnamigen Spalte in einer Ersatztabelle.

T

Typumwandlung
Typumwandlung ändert, wie Werte gespeichert und interpretiert werden, etwa indem Zifferntext für Rechenoperationen in Zahlen umgewandelt wird.
Eine Typumwandlung ist nötig, bevor der Text „7.5“ als gemessene Masse in einer numerischen Berechnung verwendet werden kann.
Typumwandlung mit Fehlerersetzung
Die Typumwandlung mit Fehlerersetzung in to_numeric wandelt lesbare Werte in Zahlen um und macht unlesbare Einträge zu fehlenden Werten, statt einen Fehler auszulösen.
Untersuche nach der Typumwandlung mit Fehlerersetzung den ursprünglichen Text jeder neu fehlenden Masse, um nicht erkannte Formatierungen zu finden.

U

Umformen
Das Umformen ändert die Anordnung von Werten und ihren identifizierenden Bezeichnungen über Zeilen und Spalten hinweg, ohne selbst eine Aggregation zu wählen.
Das Umformen einer vollständigen Stadt-Jahr-Series in eine breite Tabelle erhält jeden Wert bei seiner Stadt-Jahr-Kombination.
Unbenutzte Kategorie
Eine unbenutzte Kategorie ist eine erlaubte kategoriale Bezeichnung ohne aktuelle Beobachtungen, die in Zählungen erscheint, bis sie aus der Liste entfernt wird.
Eine unbenutzte Kategorie L erscheint mit der Anzahl 0, wenn eine Größenspalte aktuell nur S und M enthält.
unstack
Die Methode unstack verschiebt eine Zeilenindexebene in Spalten und benötigt eindeutige vollständige Indexbezeichnungen, um einen Wert in jede Ausgabezelle zu setzen.
Nutze unstack("year"), um jedes Jahr für jede Stadt in eine separate Umsatzspalte zu setzen.

V

Vektorisierte Operation
Eine vektorisierte Operation wirkt auf eine ganze Series oder ein ganzes Array und drückt dieselbe Berechnung für alle Werte aus, ohne für jedes Element eine Python-Schleife zu verwenden.
Die Multiplikation der Kilometerspalte mit 1000 ist eine vektorisierte Operation, die Entfernungen in Metern erzeugt.
Verbund (Merge)
Ein Verbund ordnet Zeilen anhand von Schlüsselwerten zu und kombiniert ihre Felder, wobei alle vom gewählten Verbundtyp erlaubten passenden Paare entstehen.
Ein Verbund fügt jeder Bestellung, deren Kundenschlüssel einen passenden Wert hat, eine Kundenzuordnungszeile hinzu.
Verbundindikator
Ein Verbundindikator kennzeichnet jede Ergebniszeile nach der Herkunft ihrer Zuordnung: beide Eingaben, nur die linke Eingabe oder nur die rechte Eingabe.
Zähle den Verbundindikator nach einem vollständigen äußeren Verbund aus, um Zeilen ohne Zuordnung auf der jeweils anderen Seite zu finden.
Vereinheitlichung der Groß- und Kleinschreibung
Die Vereinheitlichung der Groß- und Kleinschreibung bringt Text in eine einheitliche Schreibweise, sodass groß- und kleingeschriebene Versionen als dieselbe Bezeichnung verglichen werden können.
Die Vereinheitlichung der Groß- und Kleinschreibung sorgt dafür, dass „PUNE“ und „pune“ übereinstimmen, bevor ihre Datensätze gezählt oder verknüpft werden.
Vereinigung von Kategorien
Eine Vereinigung von Kategorien kombiniert die erlaubten Bezeichnungen kategorialer Eingaben, sodass das Aneinanderfügen bei unterschiedlichen Listen eine kategoriale Ausgabe erhalten kann.
Nutze eine Vereinigung von Kategorien, wenn zwei Datenblöcke unterschiedliche erlaubte Farben haben und die kombinierte Spalte beide Listen behalten soll.
Verkettung
Die Verkettung fügt pandas-Objekte entlang von Zeilen oder Spalten zusammen und richtet dabei die Bezeichnungen auf der anderen Achse aus, ohne gewöhnliche Schlüsselwerte abzugleichen.
Das Aneinanderfügen von Zeilen sammelt aufeinanderfolgende Datenblöcke mit Paketbeobachtungen in einer längeren Tabelle.
Viele-zu-eins-Beziehung
Eine Viele-zu-eins-Beziehung erlaubt wiederholte linke Schlüssel, verlangt aber eindeutige rechte Schlüssel, etwa wenn viele Bestellungen zu einem Kundendatensatz passen.
Validiere eine Viele-zu-eins-Beziehung, wenn du Lieferungen mit einer Zuordnungstabelle mit einer Zeile pro Station ergänzt.
Vollständige Übereinstimmung
Eine vollständige Übereinstimmung verlangt, dass die gesamte Eingabezeichenkette zu einem Muster passt; ein gültiger Teil innerhalb eines längeren Werts reicht nicht aus.
Eine vollständige Übereinstimmung mit r"\d+" akzeptiert „204“ und weist „204x“ zurück, obwohl beide Zeichenketten Ziffern enthalten.
Vollständiger äußerer Verbund
Ein vollständiger äußerer Verbund erhält Schlüssel, die auf einer der beiden Seiten vorkommen, und zeigt fehlende Felder, wo ein Schlüssel keine passende Zeile in der anderen Eingabe hat.
Ein vollständiger äußerer Verbund macht sowohl Bestellungen ohne Kundendaten als auch Kunden ohne erfasste Bestellung sichtbar.
Vorwärtsauffüllen
Beim Vorwärtsauffüllen wird der letzte bekannte Wert in sinnvoller Zeilenreihenfolge in spätere Lücken kopiert, gegebenenfalls bis zu einer festgelegten Begrenzung aufeinanderfolgender Lücken.
Das Vorwärtsauffüllen kann eine stabile Geräteeinstellung in die nächste Zeile übernehmen, aber keine Lücke am Anfang füllen.

W

Wertbegrenzung
Die Wertbegrenzung ersetzt Messwerte jenseits einer gewählten Schranke durch diese Schranke und erhält die Beobachtungen, während ihre Werte geändert werden.
Eine Wertbegrenzung bei 80 kg ändert einen Eintrag von 95 kg zu 80 kg. Prüfe daher zuerst, ob dieser extreme Messwert echt ist.

Z

z-Wert
Ein z-Wert gibt den Abstand eines Werts oberhalb oder unterhalb des Mittelwerts geteilt durch die für diese Spalte verwendete Standardabweichung an.
Ein z-Wert von -1 setzt einen Messwert eine Standardabweichung unter den Mittelwert und nicht in ein benanntes Intervall.
Zeichenklasse
Eine Zeichenklasse beschreibt ein erlaubtes Zeichen und nutzt dafür in einem Muster eine Kurzform wie \d oder einen Bereich wie [A-Z].
Die Zeichenklasse [A-Z] passt auf einen Großbuchstaben vor den Ziffern eines Inventarcodes.

Über diese Einheit

Von StudeliFehler melden

Erstelle deine eigenen Lernmaterialien

Mach aus deinen Notizen, Folien und Dokumenten Lernleitfäden, Übungsfragen, Karteikarten und 6 weitere Tools.

Jetzt starten