Python Pandas-Tutorial: DataFrame, Datumsbereich & Verwendung

⚡ Intelligente Zusammenfassung

Pandas ist die Open-Source-Software Python Bibliothek zur Bearbeitung tabellarischer Daten. Sie stellt die Strukturen Series und DataFrame, Datumsbereiche, Hilfsfunktionen zur Datenprüfung sowie die in dieser Anleitung gezeigten Operationen slice, drop, concatenate, sort und rename bereit.

  • 🔘 Basierend auf NumPy: Pandas benötigt NumPy, das die Arrays hinter jeder Series und jedem DataFrame liefert.
  • ☑️ Zwei Strukturen: Series speichert eine beschriftete Dimension; DataFrame speichert Zeilen und Spalten von gemischten Datentypen.
  • Datumsbereiche: pd.date_range() erstellt einen Index aus einem Startdatum, einer Periodenanzahl und einer Häufigkeit.
  • 🧪 Zuerst prüfen: head(), tail() und describe() zeigen Form, Streuung und Perzentile vor jeglicher Analyse an.
  • Präzise schneiden: Mit Klammernamen werden Spalten ausgewählt, mit loc werden Spalten anhand der Bezeichnung ausgewählt und mit iloc Spalten anhand der Position.
  • ⚠️ Versionshinweis: Der Frequenzalias M ist ab Pandas 2.2 veraltet; in aktuellen Versionen wird ME erwartet.

Python Pandas-Tutorial: DataFrame, Datumsbereich und Verwendung von Pandas

Was sind Pandas in Python?

Pandas ist eine Open-Source-Bibliothek, mit der Sie Datenmanipulation und -analyse durchführen können in PythonEs deckt sowohl numerische Tabellen als auch Zeitreihen ab. Es bietet eine einfache Möglichkeit, Daten zu erstellen, zu bearbeiten und zu verwalten, und basiert auf … NumPyDaher muss NumPy vorhanden sein, damit Pandas funktioniert.

Warum Pandas verwenden?

Datenwissenschaftler nutzen Pandas in Python aus folgenden Vorteilen:

  • Behandelt fehlende Daten problemlos
  • Es verwendet Series für eindimensionale Daten und DataFrame für mehrdimensionale Daten.
  • Es bietet eine effiziente Möglichkeit, die Daten aufzuteilen
  • Es bietet eine flexible Möglichkeit, die Daten zusammenzuführen, zu verketten oder umzuformen
  • Es beinhaltet ein leistungsstarkes Toolkit für Zeitreihenanalysen.

Kurz gesagt, Pandas bietet leistungsstarke, einfach zu bedienende Datenstrukturen sowie die Möglichkeit, diese schnell zu verarbeiten. Deshalb bildet es den Ankerpunkt der meisten Python Datenanalyse Arbeit.

So installieren Sie Pandas

Pandas wird mit Anaconda und den meisten Managed Notebook Services ausgeliefert und ist daher in der Regel bereits installiert. Falls der Import fehlschlägt, kann Pandas mit einem der folgenden Befehle hinzugefügt werden. Die Umgebung ist integriert. So installieren Sie TensorFlow Enthält auch Pandas.

  • Pip: pip install pandas
  • Anakonda: conda install -c anaconda pandas
  • In einem Jupyter Notizbuch Zelle:
import sys
!conda install --yes --prefix {sys.prefix} pandas

Was ist ein Pandas-DataFrame?

Ein Pandas DataFrame ist eine zweidimensionale, beschriftete Datenstruktur, deren Spalten unterschiedliche Datentypen enthalten können. Es ist die Standardmethode zur tabellarischen Datenspeicherung: Die Zeilen enthalten die Beobachtungen und die Spalten benennen die Informationen. Zum Beispiel: Preis kann der Name einer Spalte sein und 2, 3, 4 können die Preiswerte sein.

Dataframes sind Statistikern und anderen Datenexperten wohlbekannt. Die Abbildung unten zeigt deren Struktur – eine Zeilenindexierung an der Seite und benannte Spalten oben.

Pandas DataFrame-Layout mit beschriftetem Zeilenindex und benannten Spalten

Was ist eine Serie?

Eine Series ist eine eindimensionale Datenstruktur. Sie kann beliebige Datentypen wie Integer, Float oder String aufnehmen und ist nützlich, wenn Sie eine Berechnung durchführen oder ein eindimensionales Array zurückgeben möchten. Per Definition kann eine Series keine mehreren Spalten haben; verwenden Sie in diesem Fall die DataFrame-Struktur.

Der Pandas Series-Konstruktor akzeptiert die folgenden Parameter:

  • Datum: kann eine Liste, ein Wörterbuch oder ein Skalarwert sein
pd.Series([1., 2., 3.])
0    1.0
1    2.0
2    3.0
dtype: float64

Sie können einen Index hinzufügen mit indexEs benennt die Zeilen, und seine Länge muss der Spaltenbreite entsprechen.

pd.Series([1., 2., 3.], index=['a', 'b', 'c'])

Im Folgenden erstellen Sie eine Pandas Series mit einem fehlenden Wert in der dritten Zeile. Fehlende Werte in Python werden angezeigt als NaN und np.nan von NumPy wird künstlich erzeugt.

pd.Series([1,2,np.nan])

Ausgang

0    1.0
1    2.0
2    NaN
dtype: float64

Erstellen Sie einen Pandas-DataFrame

Sie können ein NumPy-Array in einen DataFrame konvertieren mit pd.DataFrame()Auch das Gegenteil ist möglich: Um einen DataFrame wieder in ein Array umzuwandeln, verwenden Sie np.array()den df.to_numpy(), was auch die aktuelle Pandas-Dokumentation empfiehlt.

## Numpy to pandas
import numpy as np
h = [[1,2],[3,4]] 
df_h = pd.DataFrame(h)
print('Data Frame:', df_h)

## Pandas to numpy
df_h_n = np.array(df_h)
print('Numpy array:', df_h_n)
Data Frame:    0  1
0  1  2
1  3  4
Numpy array: [[1 2]
 [3 4]]

Ein Wörterbuch eignet sich genauso gut als Eingabe für pd.DataFrame().

dic = {'Name': ["John", "Smith"], 'Age': [30, 40]}
pd.DataFrame(data=dic)
Alter Name
0 30 Peter
1 40 Smith

Daten zur Pandas-Reichweite

Pandas bietet eine komfortable API zum Erstellen eines Datumsbereichs, der als Index einer Zeitreihe dient. Der Aufruf hat folgende Form:

pd.date_range(start, periods, freq):

  • Der erste Parameter ist das Startdatum
  • Der zweite Parameter ist die Anzahl der Perioden (optional, wenn das Enddatum angegeben ist)
  • Der letzte Parameter ist die Häufigkeit: Tag D, Monat M und Jahr Y
## Create date
# Days
dates_d = pd.date_range('20300101', periods=6, freq='D')
print('Day:', dates_d)

Ausgang

Day: DatetimeIndex(['2030-01-01', '2030-01-02', '2030-01-03', '2030-01-04', '2030-01-05', '2030-01-06'], dtype='datetime64[ns]', freq='D')
# Months
dates_m = pd.date_range('20300101', periods=6, freq='M')
print('Month:', dates_m)

Ausgang

Month: DatetimeIndex(['2030-01-31', '2030-02-28', '2030-03-31', '2030-04-30','2030-05-31', '2030-06-30'], dtype='datetime64[ns]', freq='M')

Versionshinweis: der Monat Alias M Die oben verwendete Methode ist ab Pandas 2.2 veraltet und wurde in Pandas 3.0 entfernt. In aktuellen Versionen ist dies erforderlich. freq='ME' zum Monatsende; der resultierende Index ist identisch.

Daten prüfen

Sie können den Anfang oder das Ende eines Datensatzes überprüfen mit head() or tail() wird auf dem DataFrame aufgerufen, wie das folgende Pandas-Beispiel zeigt.

Schritt 1) Erstelle mit NumPy eine Zufallsfolge. Die Folge hat 4 Spalten und 6 Zeilen.

random = np.random.randn(6,4)

Schritt 2) Anschließend erstellen Sie mit Pandas einen DataFrame.

Arbeiten jederzeit weiterbearbeiten können. Jede Präsentation und jeder KI-Avatar, den Sie von Grund auf neu erstellen oder hochladen, dates_m als Index, sodass jede Zeile einen Namen erhält, der einem Datum entspricht, und die 4 Spalten werden mit dem columns Argument.

# Create data with date
df = pd.DataFrame(random,
                  index=dates_m,
                  columns=list('ABCD'))

Parce que np.random.randn() Läuft ohne Saatgut, Ihre Ergebnisse werden von den hier angegebenen abweichen. Anrufen np.random.seed(0) Zuerst, wenn Sie einen festen Satz reproduzieren möchten.

Schritt 3) Verwendung der Kopffunktion

df.head(3)
A B C D
2030-01-31 1.139433 1.318510 -0.181334 1.615822
2030-02-28 -0.081995 -0.063582 0.857751 -0.527374
2030-03-31 -0.519179 0.080984 -1.454334 1.314947

Schritt 4) Verwendung der tail-Funktion

df.tail(3)
A B C D
2030-04-30 -0.685448 -0.011736 0.622172 0.104993
2030-05-31 -0.935888 -0.731787 -0.558729 0.768774
2030-06-30 1.096981 0.949180 -0.196901 -0.471556

Schritt 5) Eine hervorragende Möglichkeit, einen Hinweis auf die Daten zu erhalten, ist describe()Es werden die Anzahl, der Mittelwert, die Standardabweichung, das Minimum, das Maximum und die Perzentile des Datensatzes ausgegeben.

df.describe()
A B C D
zählen 6.000000 6.000000 6.000000 6.000000
bedeuten 0.002317 0.256928 -0.151896 0.467601
std 0.908145 0.746939 0.834664 0.908910
min -0.935888 -0.731787 -1.454334 -0.527374
25% -0.643880 -0.050621 -0.468272 -0.327419
50% -0.300587 0.034624 -0.189118 0.436883
75% 0.802237 0.732131 0.421296 1.178404
max 1.139433 1.318510 0.857751 1.615822

Slice-Daten

Durch das Slicing wird eine Teilmenge von Zeilen oder Spalten aus einem DataFrame extrahiert. Sie können den Spaltennamen verwenden, um beispielsweisetracin einer Spalte, wie das folgende Pandas-Beispiel zeigt.

## Slice
### Using name
df['A']

2030-01-31   -0.168655
2030-02-28    0.689585
2030-03-31    0.767534
2030-04-30    0.557299
2030-05-31   -1.547836
2030-06-30    0.511551
Freq: M, Name: A, dtype: float64

Um mehrere Spalten auszuwählen, benötigen Sie doppelte eckige Klammern. [[..,..]]Das erste Paar bedeutet, dass Sie Spalten auswählen möchten; das zweite Paar gibt an, welche Spalten zurückgegeben werden sollen.

df[['A', 'B']]
A B
2030-01-31 -0.168655 0.587590
2030-02-28 0.689585 0.998266
2030-03-31 0.767534 -0.940617
2030-04-30 0.557299 0.507350
2030-05-31 -1.547836 1.276558
2030-06-30 0.511551 1.572085

Sie können die Zeilen mithilfe eines Doppelpunkts trennen. Der folgende Code gibt die ersten drei Zeilen zurück.

### using a slice for row
df[0:3]
A B C D
2030-01-31 -0.168655 0.587590 0.572301 -0.031827
2030-02-28 0.689585 0.998266 1.164690 0.475975
2030-03-31 0.767534 -0.940617 0.227255 -0.341532

Das loc Der Accessor wählt Spalten anhand ihres Namens aus. Wie üblich steht der Wert vor dem Komma für die Zeilen und der Wert danach für die Spalten; eckige Klammern sind erforderlich, um mehr als eine Spalte auszuwählen.

## Multi col
df.loc[:,['A','B']]
A B
2030-01-31 -0.168655 0.587590
2030-02-28 0.689585 0.998266
2030-03-31 0.767534 -0.940617
2030-04-30 0.557299 0.507350
2030-05-31 -1.547836 1.276558
2030-06-30 0.511551 1.572085

Es gibt noch eine andere Methode, um mehrere Zeilen und Spalten auszuwählen. iloc[] Verwendet ganzzahlige Positionen anstelle von Spaltennamen, daher gibt der folgende Code das gleiche DataFrame zurück wie oben.

df.iloc[:, :2]
A B
2030-01-31 -0.168655 0.587590
2030-02-28 0.689585 0.998266
2030-03-31 0.767534 -0.940617
2030-04-30 0.557299 0.507350
2030-05-31 -1.547836 1.276558
2030-06-30 0.511551 1.572085

Löschen Sie eine Spalte

Sie können Spalten löschen mit df.drop()und die Namen in der columns Argument.

df.drop(columns=['A', 'C'])
B D
2030-01-31 0.587590 -0.031827
2030-02-28 0.998266 0.475975
2030-03-31 -0.940617 -0.341532
2030-04-30 0.507350 -0.296035
2030-05-31 1.276558 0.523017
2030-06-30 1.572085 -0.594772

Verkettung

Sie können zwei DataFrames mit folgender Methode verketten: pd.concat()Zuerst werden die beiden Rahmen erstellt.

import numpy as np
df1 = pd.DataFrame({'name': ['John', 'Smith','Paul'],
                     'Age': ['25', '30', '50']},
                    index=[0, 1, 2])
df2 = pd.DataFrame({'name': ['Adam', 'Smith' ],
                     'Age': ['26', '11']},
                    index=[3, 4])  

Anschließend werden sie miteinander verkettet.

df_concat = pd.concat([df1,df2]) 
df_concat
Alter Name
0 25 Peter
1 30 Smith
2 50 Paul
3 26 Marcus
4 11 Smith

Duplikate löschen

Wenn ein Datensatz doppelte Informationen enthält, drop_duplicates() ist eine einfache Möglichkeit, die wiederholten Zeilen auszuschließen. df_concat enthält eine doppelte Beobachtung: Smith erscheint zweimal in der name Spalte.

df_concat.drop_duplicates('name')
Alter Name
0 25 Peter
1 30 Smith
2 50 Paul
3 26 Marcus

Werte sortieren

Sie können einen Rahmen sortieren mit sort_values(). Beachten Sie, dass Age wurde hier als Text erstellt, daher werden die Zeilen in Zeichenkettenreihenfolge sortiert.

df_concat.sort_values('Age')
Alter Name
4 11 Smith
0 25 Peter
3 26 Marcus
1 30 Smith
2 50 Paul

Spalten umbenennen

Arbeiten jederzeit weiterbearbeiten können. Jede Präsentation und jeder KI-Avatar, den Sie von Grund auf neu erstellen oder hochladen, rename() Um eine Spalte in Pandas umzubenennen. In jedem Paar ist der erste Wert der aktuelle Spaltenname und der zweite der neue.

df_concat.rename(columns={"name": "Surname", "Age": "Age_ppl"})
Alter_Person Nachname
0 25 Peter
1 30 Smith
2 50 Paul
3 26 Marcus
4 11 Smith

Pandas-Methoden – Kurzübersicht

Diese Tabelle ordnet jede gängige Aufgabe der entsprechenden Pandas-Methode zu.

Aufgabe Methodik
Daten importieren read_csv
Serien erstellen Modellreihe
Datenrahmen erstellen Datenrahmen
Datumsbereich erstellen Datumsbereich
Kopf zurück ganzer
Schwanz zurück Schwanz
Beschreiben beschreiben
Slice mit Namen Datenname['Spaltenname']
Mit Reihen schneiden Datenname[0:5]

Häufig gestellte Fragen

Telefon pd.read_csv() mit einem Pfad oder URLFügen Sie Namen zu den Spaltenüberschriften hinzu, verwenden Sie sep für ein anderes Trennzeichen und usecols, um nur die benötigten Spalten beizubehalten.

Die Funktion `isnull()` kennzeichnet fehlende Werte, `dropna()` entfernt die betroffenen Zeilen oder Spalten, und `fillna()` ersetzt fehlende Werte durch eine Konstante oder eine Statistik, beispielsweise den Spaltenmittelwert. Fehlende Einträge werden als `NaN` ausgegeben.

Die Funktion groupby() teilt Zeilen anhand einer Schlüsselspalte in Gruppen auf, wendet auf jede Gruppe eine Aggregation wie Anzahl, Summe oder Mittelwert an und kombiniert die Ergebnisse anschließend zu einem neuen Frame.

Erstelle eine boolesche Maske und übergib sie in eckigen Klammern, zum Beispiel df[df.Age == 30]. Kombiniere Masken mit dem kaufmännischen Und-Zeichen (&) und dem Pipe-Operator (Pipe).ping Jeder Vergleich steht in Klammern.

pd.merge() gleicht Zeilen anhand einer Schlüsselspalte ab, so wie a SQL `join` führt dies aus, wobei `how` auf `inner`, `left`, `right` oder `outer` gesetzt ist. `concat()` stapelt Frames anstatt Schlüssel abzugleichen.

`df.to_csv('out.csv', index=False)` erstellt eine CSV-Datei, und `df.to_excel('out.xlsx')` erstellt ein Tabellenblatt.ping Der Index vermeidet beim nächsten Lesevorgang eine unbenannte erste Spalte.

KI-Assistenten erstellen ein neues Datenprofil, schlagen die auszuführenden describe-, groupby- und plot-Funktionen vor und kennzeichnen Spalten mit ungewöhnlichen Datentypen oder vielen Nullwerten. Jede Empfehlung sollte anhand der Rohdaten überprüft werden.

Ja. GitHub-Copilot vervollständigt einen einfachen Kommentar in funktionierenden Pandas-Code in einem Jupyter Zelle. RevPrüfen Sie die Datentypen und Zeilenanzahlen, bevor Sie dem Ergebnis vertrauen.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: