Auf einen Blick: Pandas ist eine leistungsstarke Python-Bibliothek für Datenanalyse und -manipulation, die es Nutzern ermöglicht, verschiedene Datenformate effizient zu konvertieren und zu handhaben. Sie integriert sich mit NumPy und Matplotlib für erweiterte Funktionalität.
- Pandas ermöglicht eine einfache Umwandlung von Daten in strukturierte Formate wie Dataframes.
- Es vereinfacht Aufgaben wie das Lesen von CSV/JSON-Dateien und das Durchführen von Datentransformationen.
Dieser Artikel stellt Ihnen Pandas vor, eine Datenanalyse-Bibliothek mit Tools, die auf Python basiert. Wir werden:
- Schau kurz auf das Werkzeug
- Ich zeige dir, wie man grundlegende Operationen ausführt
Was sind Pandas?
Ein Python-Pandas-Dataframe ist mehr als nur eine Array-Datenstruktur. Pandas ist ein leistungsstarkes Werkzeug, das es ermöglicht:
- Konvertiere JSON, CSV, Arrays, Wörterbücher und andere Daten in Zeilen- und Spaltenformat
- Arbeite mit ihnen mit Namen statt mit Indizes (du kannst immer noch zwischen Indizes wählen).
Kurz gesagt, Pandas ist ein bisschen wie eine Tabelle, aber eine, mit der man mit Code arbeitet, nicht mit Microsoft Excel. Die größten Vorteile:
- Pandas macht extrem komplizierte Datentransformationen einfach und natürlich.
- Es umfasst eine Fülle von Mathematik-, Analytik- und anderen Funktionen.
Pandas ist auf NumPy und Matplotlib gebaut. Pandas können also:
Wie Pandas funktionieren
- Effiziente Arbeit mit großen n-dimensionalen Arrays (NumPy)
- Nimm Scheiben und transponiere sie in verschiedene Formen (NumPy).
- Zeichne Diagramme (Matplotlib)
NumPy ist das Arbeitszentrum für die meisten Python-Softwareentwicklungskits (SDKs) für maschinelles Lernen . Da Pandas NumPy erweitert, unterstützt es auch maschinelle Lernoperationen.
Grundlegende Pandas-Operationen
Kommen wir nun zu einem einfachen Tutorial, das dir die Grundlagen der Pandas zeigt.
Erstelle einen Dataframe aus einem Array
Erstellen Sie zunächst einen Dataframe aus einem Array.
Das ist ein 2x2-Array (das heißt, seine Form ist 2x2). Das sind zwei Zeilen und zwei Spalten. Das Array der Spaltennamen muss zwei Elemente haben. Hier geben wir Schüler und Note ein.
import pandas as pd
df = pd.DataFrame([["Fred",80],["Jill",90]],columns=["student", "grade"])
Dann gib df ein, um es zu sehen. In einem Jupyter Notebook ist die Anzeige formatiert. (Unten erstellen wir eine Tabelle, daher musst du Jupyter verwenden, da Jupyter Grafik unterstützt.)
df
Der Dataframe-Index ist einfach die Zeilenanzahl, 0 und 1. Es wäre natürlicher, den Studentennamen als Index zu verwenden. Nutze set_index dafür.
Normalerweise erzeugen Pandas Dataframe-Operationen einen neuen Dataframe. Aber wir können in einigen Operationen inplace=True verwenden, um den bestehenden Dataframe zu aktualisieren, ohne einen neuen erstellen zu müssen.
df.set_index("student",inplace=True)
Jetzt sieht es so aus:
Fügen Sie eine Spalte zu einem Pandas-Dataframe hinzu
Fügen wir dem Pandas-Dataframe eine Spalte hinzu. Dieser Prozess kann man vor Ort durchführen. Es erwartet zwei Werte, da wir zwei Zeilen haben. Wir verwenden einfach Dataframe['neuer Spaltenname'], um die neue Spalte hinzuzufügen. Sie fügt die neue Spalte in den bestehenden Dataframe ein.
df['birthdate']=['1970-01-12', '1972-05-12']
Filtern Sie den Datenrahmen nach Spaltenwert
Hier wählen wir alle Schüler aus, die am 12.01.1970 geboren wurden:
df[df['birthdate']=='1970-01-12']
Produziert:
Pandas-Serie: Wählen Sie 1 Spalte aus dem Dataframe aus
Hier wählen wir eine Spalte aus. Das nennt man kein Dataframe, sondern eine Serie. Im Grunde ist es ein Dataframe aus einer Spalte. Aber es handelt sich um einen anderen Objekttyp, daher gibt es leicht andere Methoden.
grade=df['grade']
Beachten Sie, dass Index weiterhin der Name des Schülers ist. Pandas zeigt an, dass die Note vom Typ int64 ist – eine 64-Bit-Ganzzahl. Das liegt daran, dass NumPy verwendet wird, das viele numerische Typen unterstützt. Reguläres Python unterstützt nur ganze Zahlen und Floatzahlen. NumPy emuliert sie also, genau wie das Python-Dezimalobjekt Dezimalzahlen emuliert.
student
Fred 80
Jill 90
Name: grade, dtype: int64
Füge Zeilen zu einem Pandas-Dataframe hinzu
Lasst uns noch ein paar Schüler hinzufügen.
Hier erstellen wir einen neuen Dataframe und fügen ihn dem bestehenden an, wodurch ein neues, df3, entsteht. In diesem Beispiel geben wir in df2 speziell Pandas die Schülernamen als Indexwerte, anstatt dies mit set_index zu tun, wie oben beschrieben.
df2 = pd.DataFrame([[70,'1980-11-12'],[97, '1984-11-01']],index=["Costas", "Ilya"], columns=["grade", "birthdate"])
df3=df.append(df2)
Jetzt haben wir noch mehr Schüler:
Wählen Sie Pandas-Dataframe-Zeilen nach Indexposition aus
Hier wählen wir die ersten beiden Zeilen mit iloc aus, die per Indexoffset auswählt.
df3.iloc[0:2]
Produziert:
Pandas-Kartenfunktion & Streudiagramm
Um zu veranschaulichen, was Pandas sonst noch können, machen wir ein Streudiagramm. Wir werden das Alter nach Klassenstufe darstellen.
Zuerst müssen wir das Geburtsdatum in eine Zahl umwandeln. Wir machen es aus dem Numpy-Feld des Typs datetime64 mit:
bday=pd.to_datetime(df3['birthdate'])
Geburtstag ist eine Reihe. Dann berechnen wir das heutige Datum:
from datetime import datetime
import numpy as np
today = datetime.now()
Dann zeigen wir, wie man die Map-Funktion verwendet. Diese läuft über jede Zeile im Dataframe oder der Serie.
Das Alter einer Person ist das heutige Datum minus das Geburtsdatum. Diese Subtraktion ergibt uns ein Zeitdelta-Objekt , also teilen wir es durch 365 Tage pro Jahr np.timedelta64(365, 'D'), um eine sehr genaue Schätzung des Alters zu erhalten. (Nicht alle Jahre haben 365 Tage.) Wenn wir das nicht täten, wäre das Alter ein Zeit-Delta-Objekt und kein einzelner ganzzahliger Wert.
bday.map(lambda l: int((today-l)/np.timedelta64(365, 'D')))
df3['age']=bday.map(lambda l: int((today-l)/np.timedelta64(365, 'D')))
Jetzt sieht es so aus:
Jetzt zeigen wir, wie Pandas Matplotlib einbezieht, indem wir Grade versus Alter aufzeichnen. Wir sagen ihm, welche Spalte für die x- und y-Achse verwendet werden soll, sowie die Farbe für die Punkte.
df3[['grade','age']].plot.scatter(x='grade',
y='age',
c='DarkBlue')
Hier ist die Grafik:
Korrelation zwischen Spalten zeigen
Um noch ein Feature zu veranschaulichen: Schauen wir uns an, ob Alter mit der Klasse korreliert. Natürlich nicht, aber zeigen wir einfach, dass Pandas diese und viele andere fortschrittliche Fähigkeiten besitzt.
df3[['grade','age']].corr()
Man sieht also, dass die Note offensichtlich perfekt mit sich selbst korreliert (1,0), aber überhaupt nicht mit dem Alter (< 0):
Zusätzliche Ressourcen
Für verwandte Lektüre und Tutorials entdecken Sie diese Ressourcen:
- BMC Machine Learning & Big Data Blog
- Python-Entwicklungstools: Ihr Python-Starterkit
- Top-Frameworks für maschinelles Lernen im Jahr 2021
- Data Visualization Guide, eine Reihe von Tutorials mit verschiedenen Tools
- MongoDB Guide, eine Reihe von MongoDB-Tutorials
Pandas Guide
- Pandas-Einführung & Tutorials für Anfänger
- Pandas: Wie man CSV- und JSON-Dateien liest
- Wie man ein Pandas-Dataframe aus einem Wörterbuch erstellt
- Wie man Daten in Pandas gruppiert, verkettet und zusammenführt
- Pandas-Datentypen
- Umgang mit fehlenden Daten in Pandas: NaN-Werte erklärt
- NumPy-Einführung mit Beispielen
- Verwendung von StringIO, um getrennte Textdateien in NumPy zu lesen
- Verwendung der NumPy-Bincount-Statistikfunktion
- Top NumPy Statistische Funktionen & Verteilungen
Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.