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
import pandas as pdgibt dem Paket seinen konventionellenpd-Alias.- 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-
RangeIndexmit0,1und2. sales["units"] >= 10erzeugt eine Boolean-Series, die an diesem Index ausgerichtet ist. Die Maske zurück ansales[...]zu übergeben, behält nur Zeilen, deren WertTrueist.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.
| Beobachtung | Kalt-Runtime | Warm-Runtime auf derselben Seite |
|---|---|---|
| Requests | 0 | 0 |
| Neu verfügbare Pakete | pandas 1.5.3, numpy 1.26.1, python-dateutil 2.8.2, six 1.16.0, pytz 2023.3 | 0 |
| Was sich änderte | pandas und seine Abhängigkeiten wurden verfügbar | die 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ählen | Wenn es passt |
|---|---|
| DataFrame | Mehrere beschriftete Spalten benötigen Boolean-Indexierung, Spaltenoperationen oder tabellarische Analyse |
| Series | Eine beschriftete Dimension reicht aus |
| Liste von Dictionaries | Eine kleine Datensatzsammlung braucht Iteration, aber keine Spaltenoperationen |
| NumPy-Array | Homogene 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.