Die 10 wichtigsten Funktionen von Pandas, die jeder Anfänger kennen sollte

Python, 19.12.20245 Min. gelesen

Pandas ist die bevorzugte Bibliothek für Datenanalysten und Python-Programmierer, die sich in die Welt der Datenmanipulation und -analyse wagen. Die intuitive Syntax und die leistungsstarken Datenstrukturen machen den Umgang mit großen Datensätzen nicht nur überschaubar, sondern auch effizient. Ganz gleich, ob Sie CSV-Dateien importieren, unübersichtliche Datensätze bereinigen oder Datentrends analysieren möchten, Pandas hat die Werkzeuge, die Sie brauchen.

Wenn Sie gerade erst mit dem Erlernen von Pandas beginnen, wird Ihnen dieser Beitrag 10 wichtige Funktionen und Methoden vorstellen, die jeder Anfänger beherrschen sollte. Diese Funktionen helfen Ihnen, Daten mit Leichtigkeit zu laden, zu überprüfen, zu bereinigen und zu analysieren.
Hier finden Sie einen kurzen Überblick über jede Methode und ihre Funktionen:

  • read_csv(): Lädt Daten aus einer CSV-Datei in einen Pandas DataFrame.
  • head(): Zeigt die ersten Zeilen des DataFrame an.
  • info(): Bietet eine kurze Zusammenfassung des DataFrame, einschließlich Spaltentypen und fehlender Werte.
  • beschreiben(): Erzeugt deskriptive Statistiken für numerische Spalten.
  • isnull(): Identifiziert fehlende Daten im DataFrame.
  • dropna(): Entfernt Zeilen oder Spalten mit fehlenden Daten.
  • fillna(): Ersetzt die fehlenden Daten durch die angegebenen Werte.
  • groupby(): Gruppiert Daten auf der Grundlage einer oder mehrerer Spalten und wendet Aggregatfunktionen an.
  • sort_values(): Sortiert den DataFrame nach einer oder mehreren Spalten.
  • apply(): Wendet benutzerdefinierte Funktionen auf Zeilen oder Spalten des DataFrame an.

Voraussetzungen

Stellen Sie zunächst sicher, dass Python auf Ihrem Rechner installiert ist. Wenn dies nicht der Fall ist, können Sie es über diesen Link herunterladen.
Sobald Python eingerichtet ist, überprüfen Sie, ob die Pandas-Bibliothek installiert ist. Wenn dies nicht der Fall ist, können Sie sie mit dem folgenden Befehl hinzufügen:

pip install pandas

Für unsere Beispiele werden wir den folgenden Immobilien-Dummy-Datensatz verwenden:

EigenschaftIDStandortSchlafräumeBäderPreisSquareFootageListingDate
101New York3275000018002023-05-15
102San Francisco2185000014002023-06-01
103Los Angeles4325002023-04-10
104Chicago326500001700
105Miami54120000035002023-03-22
106Houston4345000020002023-07-01

Die 10 wichtigsten Pandas-Funktionen und -Methoden

1. read_csv(): Lädt Daten aus einer CSV-Datei in einen Pandas DataFrame.

Der erste Schritt bei der Verwendung von Pandas ist das Laden Ihrer Daten, um sie für die Verarbeitung oder Analyse vorzubereiten. Eine der gängigsten Methoden zum Importieren von Daten in einen Pandas DataFrame ist die Funktion read_csv().

Code-Beispiel:

import pandas as pd
# Laden des Datensatzes in einen Pandas DataFrame
file_path = "real_estate_listings.csv" # Ersetzen Sie durch Ihren tatsächlichen Dateipfad

# Erstellen Sie den DataFrame
df = pd.read_csv(file_path)

Zunächst importieren wir die Pandas-Bibliothek. Verwendung von wie pd ist eine gängige Konvention unter Entwicklern, um den Code zu vereinfachen. Zum Beispiel, anstatt zu schreiben pandas.read_csv()können wir einfach verwenden pd.read_csv()Dadurch wird der Code übersichtlicher und leichter zu lesen.

Als nächstes geben Sie den Pfad zu der CSV-Datei an, die Sie in einen Pandas DataFrame laden möchten. Erstellen Sie dann eine Variable und verwenden Sie die lesen_csv Methode, um die Datei in den DataFrame zu laden.

Wichtige Parameter:

Lassen Sie uns nun einige wichtige Parameter untersuchen, die dieser Methode folgen:

  • Begrenzungszeichen: Geben Sie das in der CSV-Datei verwendete Begrenzungszeichen an (z. B. ,, ;, \t).
df = pd.read_csv(file_path, delimiter=',')
  • index_col: In unserer Tabelle wird jedes Immobilienangebot durch eine ID identifiziert, die im Feld "EigenschaftIDSpalte". Um sicherzustellen, dass Pandas diese Spalte als eindeutigen Bezeichner für jede Eigenschaft verwendet, können wir sie explizit als ID-Spalte festlegen. Andernfalls wird Pandas automatisch seine eigenen ID-Werte für jede Auflistung generieren und zuweisen.
df = pd.read_csv(file_path, index_col='PropertyID')
  • usecols: Wenn Ihre CSV-Datei zahlreiche Spalten enthält, Sie aber nur einige wenige benötigen, können Sie dies mit Pandas leicht über einen bestimmten Parameter erreichen.
df = pd.read_csv(file_path, usecols=['Ort', 'Preis', 'Zimmer'])

2. head() und tail(): Daten inspizieren

Nun, da die Daten in den DataFrame geladen sind, können wir damit beginnen, sie zu untersuchen. Dazu bietet Pandas zwei sehr praktische Methoden: head() und tail(). Diese Methoden sind unerlässlich, um die ersten oder letzten Zeilen Ihres Datensatzes schnell zu überprüfen.

  • head(): Diese Methode zeigt standardmäßig die ersten 5 Zeilen des Datensatzes an. Sie ist besonders nützlich, um zu überprüfen, ob die Daten korrekt geladen wurden und um ihre Struktur zu kontrollieren.
  • tail(): Diese Methode funktioniert ähnlich wie head(), zeigt aber stattdessen die letzten Zeilen an. Sie ist hilfreich, um das Ende des Datensatzes zu untersuchen, insbesondere wenn geprüft werden soll, ob die Daten vollständig sind oder die letzten Datensätze fehlende Werte aufweisen.

Code-Beispiel:

# Die ersten 5 Zeilen anzeigen
print(df.head())
# Die letzten 3 Zeilen anzeigen
print(df.tail(3))

Ausgabe von head():

EigenschaftIDStandortSchlafräumeBäderPreisSquareFootageListingDate
101New York3275000018002023-05-15
102San Francisco2185000014002023-06-01
103Los Angeles4325002023-04-10
104Chicago326500001700
105Miami54120000035002023-03-22

Ausgabe von tail():

EigenschaftIDStandortSchlafräumeBäderPreisSquareFootageListingDate
104Chicago326500001700
105Miami54120000035002023-03-22
106Houston4345000020002023-07-01

3. info() - Verstehen der DataFrame-Struktur

Die Funktion info() liefert eine knappe Zusammenfassung des DataFrame. Sie enthält Details wie zum Beispiel:

  • Die Anzahl der Zeilen und Spalten.
  • Spaltennamen und ihre Datentypen.
  • Die Anzahl der Nicht-Null-Werte in jeder Spalte.

Diese Methode ist nützlich, um die Struktur Ihres Datensatzes schnell zu verstehen und Probleme wie fehlende Werte oder falsche Datentypen aufzuspüren.

Code-Beispiel:

# Eine knappe Zusammenfassung des DataFrame erhalten
print(df.info())

Der obige Code erzeugt die folgende Ausgabe:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 6 entries, 0 to 5
Data columns (total 7 columns):
#   Column          Non-Null Count  Dtype 
---  ------          --------------  ----- 
0   PropertyID      6 non-null      int64 
1   Location        6 non-null      object
2   Bedrooms        6 non-null      int64 
3   Bathrooms       6 non-null      int64 
4   Price           5 non-null      float64
5   SquareFootage   6 non-null      int64 
6   ListingDate     5 non-null      object
dtypes: float64(1), int64(4), object(2)
memory usage: 464.0+ bytes

4. describe(): Zusammenfassende Statistiken generieren

Die beschreiben() Methode bietet eine schnelle Zusammenfassung der wichtigsten statistischen Kennzahlen wie mittlere, Standardabweichung, Perzentileund mehr. Standardmäßig, beschreiben() arbeitet mit numerischen Daten, kann aber auch kategorische Daten verarbeiten und bietet maßgeschneiderte Erkenntnisse auf der Grundlage des Datentyps.

Wichtige Parameter:

  • Perzentile: Eine Liste von Zahlen zwischen 0 und 1, die angibt, welche Perzentile zurückgegeben werden sollen. Der Standardwert ist None, der das 25., 50. und 75. Perzentil zurückgibt. Mehr lesen hier.
  • einschließen.: Eine Liste von Datentypen, die in die Zusammenfassung aufgenommen werden sollen. Sie können Datentypen wie int, float, object (für Strings) usw. angeben. Der Standardwert ist None, d. h. alle numerischen Typen werden einbezogen.
  • ausschließen: Eine Liste von Datentypen, die von der Zusammenfassung ausgeschlossen werden sollen. Dieser Parameter ist auch Keine standardmäßig, d.h. es werden keine Typen ausgeschlossen.

Code-Beispiel:

print(df.describe())

Die Ausgabe des Codes lautet wie folgt:

       PropertyID Standort Schlafzimmer ...         Preis Quadratmeterzahl ListingDate
Anzahl 6.000000 6 6.000000... 5.000000e+00 6.000000 5
einzigartig NaN 6 NaN ...           NaN NaN 5
top NaN New York NaN ...           NaN NaN 2023-05-15
freq NaN 1 NaN ...           NaN NaN 1
Mittelwert 103.500000 NaN 3.500000... 7.800000e+05 2150.000000 NaN
std 1.870829 NaN 1.048809... 2.774887e+05 755.645419 NaN
min 101.000000 NaN 2.000000... 4.500000e+05 1400.000000 NaN
25% 102,250000 NaN 3,000000... 6.500000e+05 1725.000000 NaN
50% 103.500000 NaN 3.500000... 7.500000e+05 1900.000000 NaN
75% 104,750000 NaN 4,000000... 8.500000e+05 2375.000000 NaN
max 106,000000 NaN 5,000000... 1.200000e+06 3500.000000 NaN

Erläuterung der einzelnen Statistiken

  • Zählen Sie: Die Anzahl der nicht fehlenden Einträge für jede Spalte.
    • Beispiel: Anzahl = 6 für Schlafräumeund zeigt damit an, dass alle Zeilen gültige Daten enthalten.
  • Mittlere: Der Durchschnittswert der Spalte.
    • Beispiel: Mittelwert = 3,5 für Schlafräumewas auf einen Durchschnitt von 3,5 Schlafzimmer pro Grundstück.
  • Std: Die Standardabweichung, die die Streuung der Werte vom Mittelwert angibt.
    • Beispiel: std = 1,048809 für SchlafräumeDas bedeutet, dass die Anzahl der Schlafzimmer mäßig variiert.
  • Min/Max: Der kleinste und der größte Wert.
    • Beispiel: min = 2 und max = 5 für Schlafräume.
  • 25%, 50%, 75% (Quartile): Sie stellen die Verteilung der Daten dar:
    • 25%: Der Wert, unter den 25 % der Daten fallen (erstes Quartil).
    • 50%: Der Medianwert.
    • 75%: Der Wert, unter den 75% der Daten fallen (drittes Quartil).

5. isnull(): Fehlende Daten identifizieren

Die isnull() hilft, fehlende Daten in einem DataFrame zu identifizieren. Sie gibt einen DataFrame zurück, der die gleiche Form wie das Original hat, mit Wahr wenn Daten fehlen NaN und Falsch sonst. Sie wird häufig in Verbindung mit anderen Funktionen wie Summe() um fehlende Werte über Spalten oder Zeilen hinweg zu zählen.

Code-Beispiel:

# Fehlende Werteidentifizieren
print(df.isnull())
# Fehlende Werte für jede Spaltezählen
print(df.isnull().sum())

df.isnull() Ausgabe:

  EigenschaftID  Standort  Schlafzimmer  Bäder  Preis  QuadratFläche  AuflistungDatum
0       Falsch     Falsch     Falsch      Falsch  Falsch          Falsch        Falsch
1       Falsch     Falsch     Falsch      Falsch  Falsch          Falsch        Falsch
2       Falsch     Falsch     Falsch      Falsch   Richtig          Falsch        Falsch
3       Falsch     Falsch     Falsch      Falsch  Falsch          Falsch         Richtig
4       Falsch     Falsch     Falsch      Falsch  Falsch          Falsch        Falsch
5       Falsch     Falsch     Falsch      Falsch  Falsch          Falsch        Falsch

df.isnull().sum() Ausgabe:

PropertyID 0
Standort 0
Schlafräume 0
Bäder 0
Preis 1
QuadratFootage 0
AuflistungDatum 1
dtTyp: int64

6. dropna(): Fehlende Daten entfernen

Die dropna() Funktion entfernt Zeilen oder Spalten mit fehlenden Daten NaN aus dem DataFrame. Standardmäßig werden Zeilen mit fehlenden Werten entfernt. Sie können das Verhalten anpassen, um nur Spalten zu entfernen oder um Zeilen/Spalten zu löschen, in denen alle oder eine bestimmte Untergruppe von Werten fehlen

Code-Beispiel:

# Zeilen mit fehlenden Werten löschen 
df_dropped_rows = df.dropna()
print(df_dropped_rows)

# Spalten mit fehlenden Werten löschen 
df_dropped_columns = df.dropna(axis=1)
print(df_dropped_columns)

So sieht der DataFrame nach dem Entfernen aller Zeilen mit NaN Werte:

EigenschaftIDStandortSchlafräumeBäderPreisSquareFootageListingDate
101New York3275000018002023-05-15
102San Francisco2185000014002023-06-01
105Miami54120000035002023-03-22
106Houston4345000020002023-07-01

Hier ist der Datenrahmen mit Spalten mit NaN Werte entfernt.

EigenschaftIDStandortSchlafräumeBäderSquareFootage
101New York321800
102San Francisco211400
103Los Angeles432500
104Chicago321700
105Miami543500
106Houston432000

7. fillna(): Fehlende Daten ersetzen

Die fillna() Funktion ersetzt fehlende Daten NaN mit bestimmten Werten. Die Pandas dropna() Methode behandelt und entfernt effizient Nullwerte aus einem DataFrame, während die fillna() Methode bietet eine flexible Lösung für den Ersatz von NaN Werte mit einem bestimmten Wert Ihrer Wahl. Diese Methode bietet einen flexiblen Ansatz für den Umgang mit fehlenden Daten, indem sie es Ihnen ermöglicht, Lücken mit einem festen Wert zu füllen, dem mittlere, Median, Modusoder andere berechnete Statistiken.

Code-Beispiel:

# df['Preis'] = df['Preis'].fillna(df['Preis'].mean()) Fehlende Werte in der Spalte 'Preis' mit dem Mittelwert füllen. 
df['Preis'].fillna(df['Preis'].mean()) 
print(df)

Die Ausgabe des Codes zeigt, dass die NaN Wert wurde erfolgreich durch den Durchschnittspreis ersetzt.

EigenschaftIDStandortSchlafräumeBäderPreisSquareFootageListingDate
101New York3275000018002023-05-15
102San Francisco2185000014002023-06-01
103Los Angeles4378000025002023-04-10
104Chicago326500001700NaN
105Miami54120000035002023-03-22
106Houston4345000020002023-07-01

Die ListingDate Spalte enthält auch eine NaN Wert. Anstatt eine Berechnung durchzuführen, können wir einfach einen Platzhalter wie "unbekannt. So geht's;

# Füllen Sie fehlende Werte in der Spalte 'ListingDate' mit einem Platzhalter.
df['ListingDate'] = df['ListingDate'].fillna('Unknown')
print(df)

Der Datenrahmen sieht nun wie folgt aus:

EigenschaftIDStandortSchlafräumeBäderPreisSquareFootageListingDate
101New York3275000018002023-05-15
102San Francisco21NaN14002023-06-01
103Los Angeles4378000025002023-04-10
104Chicago326500001700Unbekannt
105Miami54120000035002023-03-22
106Houston4345000020002023-07-01

8. groupby(): Gruppieren und Aggregieren von Daten

Die Funktion groupby() in Pandas ist ein vielseitiges und leistungsfähiges Werkzeug, um einen DataFrame auf der Grundlage einer oder mehrerer Spalten in Gruppen zu unterteilen und so eine effiziente Datenanalyse und -aggregation zu ermöglichen.
Sie arbeitet nach dem Prinzip Aufteilen - Anwenden - Kombinieren:
teilt die Daten zunächst in Gruppen auf;
wendet anschließend eine bestimmte Funktion auf jede Gruppe an;
kombiniert die Ergebnisse schließlich zu einem neuen DataFrame.
Dieser rationalisierte Ansatz vereinfacht komplexe Datenmanipulationsaufgaben und erhöht die analytische Effizienz.

Code-Beispiel:

Sie können z. B. den Durchschnittspreis von Immobilien nach Standort berechnen oder die Anzahl der Inserate pro Schlafzimmerkategorie zählen.

# Gruppieren nach 'Ort' und Berechnen des Durchschnittspreises
avg_price_by_location = df.groupby('Location')['Price'].mean()
print(avg_price_by_location)
# Nach 'Schlafzimmern' gruppieren und die Gesamtquadratmeterzahl berechnen
total_sqft_by_bedrooms = df.groupby('Bedrooms')['SquareFootage'].sum()
print(gesamt_quadratmeter_nach_schlafzimmern)
# Nach mehreren Spalten gruppieren und die Anzahl berechnen
count_by_location_bedrooms = df.groupby(['Location', 'Bedrooms']).size()
print(zaehlen_nach_Ort_Schlafzimmern)

Durchschnittspreis nach Standort:

Standort
Chicago 650000.0
Houston 450000.0
Los Angeles NaN
Miami 1200000.0
New York 750000.0
San Francisco 850000,0
Name: Preis, dtype: float64

Gesamtquadratmeterzahl nach Schlafzimmern:

Schlafräume
2    1400
3    3500
4    4500
5    3500

Zählung nach Standort und Zimmern:

Standort Schlafzimmer
Chicago 3 1
Houston 4 1
Los Angeles 4 1
Miami 5 1
New York 3 1
San Francisco 2 1
dtype: int64

9. sort_values(): Daten sortieren

Die Funktion sort_values() wird verwendet, um Ihren DataFrame nach einer oder mehreren Spalten zu sortieren, entweder in aufsteigender oder absteigender Reihenfolge. Die Sortierung ist wichtig, um Daten in eine Rangfolge zu bringen, Extremwerte zu identifizieren (z. B. die teuersten Immobilien) oder einfach den Datensatz zur besseren Lesbarkeit zu organisieren.

Code-Beispiel:

# Sortieren nach 'Preis' in absteigender Reihenfolge
df_sorted_by_price = df.sort_values(by='Preis', ascending=False)
print(df_sorted_by_price)
# Sortieren nach 'Ort' in aufsteigender Reihenfolge
df_sortiert_nach_Ort = df.sort_values(by='Ort')
print(df_sortiert_nach_Ort)
# Nach mehreren Spalten sortieren: zuerst nach 'Schlafzimmern' (aufsteigend) und dann nach 'Preis' (absteigend)
df_sorted_by_bedrooms_price = df.sort_values(by=['Bedrooms', 'Price'], ascending=[True, False])
print(df_sortiert_nach_Schlafzimmern_Preis)

Sortieren nach Preis (absteigend):

  PropertyID Standort Schlafzimmer ...      Preis Quadratmeterzahl ListingDate
4 105 Miami 5... 1200000.0 3500 2023-03-22
1 102 San Francisco 2...  850000.0 1400 2023-06-01
0 101 New York 3...  750000.0 1800 2023-05-15
3 104 Chicago 3...  650000.0 1700 NaN
5 106 Houston 4...  450000.0 2000 2023-07-01
2 103 Los Angeles 4...        NaN 2500 2023-04-10

Nach Ort sortieren (aufsteigend):

[6 Zeilen x 7 Spalten]
  PropertyID Lage Schlafzimmer ...      Preis Quadratmeterzahl ListingDate
3  104  Chicago  3 . ..   650000.0  1700  NaN
5  106  Houston  4 . ..   450000.0  2000  2023-07-01
2  103  Los Angeles  4 . ..        NaN  2500  2023-04-10
4  105  Miami  5 . ..  1200000.0  3500  2023-03-22
0  101  New York  3 . ..   750000.0  1800  2023-05-15
1  102  San Francisco  2 . ..   850000.0  1400  2023-06-01

Sortierung nach Schlafzimmern (aufsteigend) und Preis (absteigend):

  PropertyID Standort Schlafzimmer ...      Preis Quadratmeterzahl ListingDatum
1 102 San Francisco 2...  850000.0 1400 2023-06-01
0 101 New York 3...  750000.0 1800 2023-05-15
3 104 Chicago 3...  650000.0 1700 NaN
5 106 Houston 4...  450000.0 2000 2023-07-01
2 103 Los Angeles 4...        NaN 2500 2023-04-10
4 105 Miami 5... 1200000.0 3500 2023-03-22

10. apply(): Benutzerdefinierte Funktionen auf Daten anwenden

Mit der Funktion apply() können Sie benutzerdefinierte Funktionen auf Zeilen oder Spalten in einem DataFrame anwenden. Sie ist eine leistungsfähige Methode zur Durchführung von elementweisen Transformationen, Berechnungen oder bedingten Operationen, die über die eingebauten Pandas-Funktionen hinausgehen.

Code-Beispiel:

Im folgenden Beispiel wollen wir eine neue Spalte zur Berechnung des Preises pro Quadratfuß erstellen.

# Definieren Sie eine benutzerdefinierte Funktion zur Berechnung des Preises pro Quadratfuß
def preis_pro_quadratfuss(preis, quadratfuss):
  return Preis / Quadratmeter if Quadratmeter != 0 else 0

# Wenden Sie die benutzerdefinierte Funktion an , um eine neue Spalte zu erstellen.
df['PricePerSqFt'] = df.apply(lambda row: price_per_sqft(row['Price'], row['SquareFootage']), axis=1)
print(df)

Hier ist die Ausgabe des obigen Codes:

  PropertyID Standort Schlafzimmer ...  QuadratFläche ListingDate PricePerSqFt
0 101 New York 3...          1800 2023-05-15 416.666667
1 102 San Francisco 2...          1400 2023-06-01 607.142857
2 103 Los Angeles 4... 2500 2023-04-10 NaN
3 104 Chicago 3...          1700 NaN 382.352941
4 105 Miami 5...          3500 2023-03-22 342.857143
5 106 Houston 4... 2000 2023-07-01 225.000000

Ein weiteres Beispiel könnte die Umwandlung von Ortsnamen in Großbuchstaben sein;

# Eine Transformation anwenden, um alle Ortsnamen in Großbuchstaben zu schreiben
df['Ort'] = df['Ort'].apply(lambda x: x.upper())
print(df)

Das sieht folgendermaßen aus:

   PropertyID Standort Schlafzimmer ...      Preis Quadratmeterzahl ListingDate
0 101 NEW YORK 3...  750000.0 1800 2023-05-15
1 102 SAN FRANCISCO 2...  850000.0 1400 2023-06-01
2 103 LOS ANGELES 4...        NaN 2500 2023-04-10
3 104 CHICAGO 3...  650000.0 1700 NaN
4 105 MIAMI 5... 1200000.0 3500 2023-03-22
5 106 HOUSTON 4...  450000.0 2000 2023-07-01

Schlussfolgerung

In diesem Handbuch haben wir 10 wesentliche Pandas-Funktionen für die Datenanalyse untersucht, vom Laden und Prüfen von Daten mit read_csv() und info() zur Reinigung und Umwandlung mit Methoden wie isnull(), fillna()und apply(). Diese Funktionen bilden die Grundlage eines jeden Datenanalyse-Workflows und ermöglichen es Ihnen, Datensätze effektiv zu bereinigen, zu bearbeiten und zusammenzufassen. Die Beherrschung dieser Funktionen bereitet Sie darauf vor, reale Datenherausforderungen sicher zu bewältigen. Fangen Sie noch heute an zu üben, und entdecken Sie, wie diese Werkzeuge Ihre Analyseaufgaben vereinfachen können!