Pandas DataFrame Python: Zeilen erstellen und filtern

Erstellen Sie einen pandas DataFrame in Python mit pd.DataFrame(data), indem Sie ein Dictionary aus gleich langen Listen für Spalten und Werte übergeben. Verwenden Sie einen DataFrame, wenn Datensätze beschriftete Zeilen und Spalten, Spaltenauswahl oder vektorisiertes Filtern benötigen. Eine Boolean-Maske filtert tabellarische Daten ohne Python-Schleife. Das Ergebnis behält die ursprünglichen Indexbezeichnungen, es sei denn, Sie setzen sie explizit zurück.

Python Pandas DataFrame Beispiel Zum Filtern von Zeilen

Ausgabe:

Die Ausgabe erscheint hier...

Ausgabe:

product  units
Keyboard     12
 Monitor     15

So Funktioniert Dieses Beispiel

  1. import pandas as pd gibt dem Paket seinen konventionellen pd-Alias.
  2. Der pandas DataFrame-Konstruktor wandelt jeden Dictionary-Schlüssel in eine Spaltenbezeichnung um. Da beide Listen drei Werte enthalten, erstellt pandas drei Zeilen und vergibt einen Standard-RangeIndex mit 0, 1 und 2.
  3. sales["units"] >= 10 erzeugt eine Boolean-Series, die an diesem Index ausgerichtet ist. Die Maske zurück an sales[...] zu übergeben, behält nur Zeilen, deren Wert True ist.
  4. to_string(index=False) blendet den Index in der ausgegebenen Tabelle aus; es entfernt oder nummeriert die gespeicherten Bezeichnungen nicht neu.

Beweisen, Was der DataFrame-Run Wirklich Tat

Führen Sie das Programm zweimal auf derselben Seite aus und öffnen Sie Run Details nach jedem Abschluss. Das macht das Panel zu einem Abhängigkeitsexperiment, statt die Kaltstart-Dauer für ein DataFrame-Benchmark zu halten.

BeobachtungKalt-RuntimeWarm-Runtime auf derselben Seite
Requests00
Neu verfügbare Paketepandas 1.5.3, numpy 1.26.1, python-dateutil 2.8.2, six 1.16.0, pytz 2023.30
Was sich ändertepandas und seine Abhängigkeiten wurden verfügbardie Runtime hatte sie bereits

web.run erkennt import pandas und lädt unterstützte Pakete, bevor das Python des Nutzers startet. Run Details meldet den Unterschied zwischen Paketen, die vor und nach diesem Lauf verfügbar sind; eine leere Packages-Liste beim Warmlauf bedeutet „nichts neu geladen”, nicht „pandas wurde nicht verwendet.”

Die Gesamtdauer des ersten Laufs umfasst Paket-Bootstrap sowie Python-Ausführung. Vergleichen Sie sie mit dem Warmlauf, bevor Sie pd.DataFrame(...) verantwortlich machen; Zeiten variieren je nach Rechner und Cache-Zustand, daher nutzen Sie die Packages-Liste, um Bootstrap-Arbeit zu identifizieren.

Beide Läufe melden null Nutzeranfragen, weil Dictionary und Filterung lokal bleiben. Der Kaltlauf lädt trotzdem Paketdateien als Runtime-Aktivität. Daher beweist „keine Nutzeranfragen”, dass das Snippet keine externe Anfrage gestellt hat, nicht dass der Browser null Bytes übertragen hat.

Die Filtered-Index-Falle: loc Ist Nicht iloc

Filtern bewahrt Bezeichnungen. Hier ist ready.index.tolist() [0, 2], obwohl index=False die Ausgabe wie eine frische Zwei-Zeilen-Tabelle aussehen lässt. Code, der die zweite angezeigte Zeile als Bezeichnung 1 behandelt, schlägt fehl:

Falsch:

second_product = ready.loc[1, "product"]  # KeyError: 1

Richtig für die zweite Zeile nach Position:

second_product = ready.iloc[1]["product"]

Richtig, wenn nachfolgender Code sequenzielle Bezeichnungen benötigt:

ready = ready.reset_index(drop=True)
second_product = ready.loc[1, "product"]

Verwenden Sie .loc für Indexbezeichnungen und .iloc für nullbasierte Positionen. Setzen Sie den Index nur zurück, wenn neue Bezeichnungen Teil des beabsichtigten Ergebnisses sind; andernfalls hilft das Beibehalten der Quellbezeichnungen, gefilterte Zeilen zu den Originaldaten zurückzuverfolgen.

Längenfehler beim DataFrame-Konstruktor

Ein Dictionary aus Listen muss eine rechteckige Tabelle beschreiben. pandas löst ValueError: All arrays must be of the same length aus, anstatt zu raten, wie eine kurze Spalte aufzufüllen ist.

Falsch:

pd.DataFrame({"product": ["Keyboard", "Mouse"], "units": [12]})

Richtig:

pd.DataFrame({"product": ["Keyboard", "Mouse"], "units": [12, None]})

Fügen Sie nur dann einen expliziten fehlenden Wert hinzu, wenn er die Daten ehrlich darstellt; andernfalls korrigieren Sie die Quelldatensätze, bevor Sie die Tabelle erstellen.

Wann ein DataFrame der Richtige Container Ist

WählenWenn es passt
DataFrameMehrere beschriftete Spalten benötigen Boolean-Indexierung, Spaltenoperationen oder tabellarische Analyse
SeriesEine beschriftete Dimension reicht aus
Liste von DictionariesEine kleine Datensatzsammlung braucht Iteration, aber keine Spaltenoperationen
NumPy-ArrayHomogene numerische Daten brauchen Matrixoperationen ohne Zeilen- oder Spaltenbezeichnungen

Ein DataFrame rechtfertigt seinen Paket- und Speicher-Overhead, wenn Bezeichnungen und vektorisierte Operationen reale Transformationen vereinfachen. Verwenden Sie eine Liste von Dictionaries, wenn die Datensätze klein sind und nur normale Python-Iteration benötigen.