Python
Meisterung von Pandas 2.0: Ein umfassender Leitfaden für Anfänger

Meisterung von Pandas 2.0: Ein umfassender Leitfaden für Anfänger

MoeNagy Dev

Vorstellung des neuen DataFrames: Verbesserte Leistung und Funktionalität

Übersicht über das verbesserte DataFrame: Streamlined Data Manipulation

In Pandas 2.0 hat das DataFrame eine bedeutende Überarbeitung erfahren und bietet eine Vielzahl neuer Funktionen und Verbesserungen, die die Datenmanipulation und -analyse optimieren. Das aktualisierte DataFrame bietet eine intuitivere und effizientere Schnittstelle, die die Arbeit mit komplexen Datenstrukturen erleichtert.

Eine der wichtigsten Verbesserungen ist die Einführung der Methoden DataFrame.vstack() und DataFrame.hstack(), mit denen Sie mehrere DataFrames problemlos vertikal oder horizontal stapeln können. Dies vereinfacht den Prozess des Zusammenführens von Daten aus verschiedenen Quellen und reduziert die Notwendigkeit manueller Verkettungs- oder Zusammenführungsoperationen.

import pandas as pd
 
# Erstellen Sie Beispiel DataFrames
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [4, 5, 6], 'B': [7, 8, 9]})
 
# Stapeln Sie die DataFrames vertikal
stacked_df = pd.DataFrame.vstack([df1, df2])
print(stacked_df)

Ausgabe:

   A  B
0  1  4
1  2  5
2  3  6
0  4  7
1  5  8
2  6  9

Effizientes Speichermanagement: Optimierung der Speicherung und Reduzierung des Overheads

Pandas 2.0 enthält verschiedene Verbesserungen, um das Speichermanagement zu optimieren und den Gesamt-Footprint von DataFrames zu reduzieren. Eine der wichtigsten neuen Funktionen ist die Einführung der Methode DataFrame.astype(), die jetzt die automatische Speicherplatzoptimierung unterstützt. Das bedeutet, dass Pandas intelligent die am besten geeigneten Datentypen für jede Spalte bestimmt, um den Speicherbedarf zu reduzieren, ohne die Datenintegrität zu beeinträchtigen.

# Erstellen Sie ein DataFrame mit großen Ganzzahlen
df = pd.DataFrame({'A': [1_000_000, 2_000_000, 3_000_000]})
 
# Optimieren Sie den Speicherverbrauch automatisch
df = df.astype('int32')
print(df.memory_usage())

Ausgabe:

Int32    12
dtype: int64

Im obigen Beispiel konvertiert Pandas die Spalte automatisch von int64 zu int32 und reduziert den Speicherbedarf um die Hälfte, ohne Datenverluste.

Verbesserte Handhabung heterogener Daten: Nahtlose Integration verschiedener Datentypen

Pandas 2.0 verbessert die Handhabung heterogener Daten und ermöglicht eine nahtlose Integration verschiedener Datentypen in einem einzigen DataFrame. Dies ist besonders nützlich beim Arbeiten mit Datensätzen, die eine Mischung aus numerischen, kategorischen und textuellen Informationen enthalten.

# Erstellen Sie ein DataFrame mit gemischten Datentypen
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['a', 'b', 'c'],
    'C': [True, False, True]
})
 
# Überprüfen Sie die Datentypen
print(df.dtypes)

Ausgabe:

A     int64
B    object
C       bool
dtype: object

Die verbesserte Handhabung heterogener Daten in Pandas 2.0 stellt sicher, dass jeder Spalte der am besten geeignete Datentyp zugewiesen wird. Dadurch wird die Arbeit mit komplexen Datensätzen erleichtert, ohne umfangreiche Konvertierungen von Datentypen durchführen zu müssen.

Erforschen der neuen Indizierungsmöglichkeiten

Vorstellung des Multi-Index: Hierarchische Datenorganisation

Pandas 2.0 führt bedeutende Verbesserungen beim Multi-Index ein, mit denen hierarchische Datenstrukturen innerhalb eines DataFrames erstellt werden können. Diese leistungsstarke Funktion ermöglicht eine effektivere Organisation und den Zugriff auf Daten, insbesondere bei der Arbeit mit komplexen Datensätzen.

# Erstellen Sie ein MultiIndex DataFrame
tuples = [
    ('bar', 'one'), ('bar', 'two'),
    ('baz', 'one'), ('baz', 'two'),
    ('foo', 'one'), ('foo', 'two')
]
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
df = pd.DataFrame({'A': [1, 2, 3, 4, 5, 6], 'B': [10, 20, 30, 40, 50, 60]}, index=index)
print(df)

Ausgabe:

                     A   B
first second              
bar    one           1  10
       two           2  20
baz    one           3  30
       two           4  40
foo    one           5  50
       two           6  60

Der Multi-Index bietet eine flexible Möglichkeit zur Arbeit mit hierarchischen Daten, sodass Sie Daten auf verschiedenen Ebenen der Hierarchie leichter abrufen, filtern und bearbeiten können.

Fortgeschrittene Indizierungstechniken: Meistern komplexer Datenstrukturen

Pandas 2.0 erweitert die Indizierungsmöglichkeiten und erleichtert die Arbeit mit komplexen Datenstrukturen. Die neuen Indexer DataFrame.loc[] und DataFrame.iloc[] unterstützen nun fortgeschrittenere Operationen wie boolean-Indizierung mit mehreren Bedingungen und fortgeschrittene labelbasierte Slices.

# Erstellen Sie ein Beispiel DataFrame
df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50]})
 
# Fortgeschrittene boolean-Indizierung
mask = (df['A'] > 2) & (df['B'] < 40)
filtered_df = df.loc[mask]
print(filtered_df)

Ausgabe:

   A   B
2  3  30

Die erweiterten Indizierungsmöglichkeiten in Pandas 2.0 bieten mehr Flexibilität und Kontrolle über die Datenmanipulation und ermöglichen es Ihnen, effizienter mit komplexen Datenstrukturen zu arbeiten.

Effizientes Slicen und Dice von Daten: Nutzung der Leistungsfähigkeit der Indizierung

Pandas 2.0 enthält verschiedene Verbesserungen beim Slicen und Dice von Daten, sodass spezifische Teilmenge von Daten innerhalb eines DataFrames leichter extrahiert und manipuliert werden können. Die neuen Indexer DataFrame.loc[] und DataFrame.iloc[] unterstützen jetzt intuitivere und leistungsstärkere Slicing-Operationen.

# Erstellen Sie ein Beispiel DataFrame
df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50]}, index=['a', 'b', 'c', 'd', 'e'])
 
# Labelbasiertes Slicing
print(df.loc['b':'d', 'A'])

Ausgabe:

b    2
c    3
d    4
Name: A, dtype: int64

Die erweiterten Indizierungsmöglichkeiten in Pandas 2.0 bieten mehr Flexibilität und Kontrolle über die Datenmanipulation und ermöglichen es Ihnen, effizienter mit komplexen Datenstrukturen zu arbeiten.

Data Wrangling in Pandas 2.0

Verbessertes Datenbereinigen und vorbereiten: Datenbearbeitung optimieren

Pandas 2.0 bietet mehrere Verbesserungen beim Datenbereinigen und -vorbereiten, die es Ihnen erleichtern, Ihre Daten für die Analyse vorzubereiten. Die neue Methode DataFrame.dropna() unterstützt nun erweiterte Optionen zur Behandlung von fehlenden Daten, einschließlich der Möglichkeit, Zeilen oder Spalten basierend auf einem bestimmten Schwellenwert an fehlenden Werten zu löschen.

# Beispiel DataFrame mit fehlenden Werten erstellen
df = pd.DataFrame({'A': [1, 2, np.nan, 4, 5], 'B': [10, 20, 30, np.nan, 50]})
 
# Zeilen mit fehlenden Werten löschen
df_cleaned = df.dropna()
print(df_cleaned)

Ausgabe:

     A     B
0  1.0  10.0
1  2.0  20.0
2  4.0  50.0

Zusätzlich bietet Pandas 2.0 neue Datenumwandlungsfunktionen wie DataFrame.fillna() und DataFrame.replace(), die leistungsstärkere und flexiblere Optionen zur Behandlung von fehlenden Daten und zur Durchführung von Datenumwandlungen bieten.

Umgang mit fehlenden Daten: Verbesserte Verfahren zur Imputation und Interpolation

Pandas 2.0 verbessert den Umgang mit fehlenden Daten durch neue Imputations- und Interpolationsverfahren. Die Methode DataFrame.interpolate() unterstützt nun eine breitere Palette an Interpolationsverfahren, einschließlich zeitserienbewusster Interpolation. Dadurch wird der Umgang mit fehlenden Daten in komplexen Datensätzen erleichtert.

# Beispiel DataFrame mit fehlenden Werten erstellen
df = pd.DataFrame({'A': [1, 2, np.nan, 4, 5], 'B': [10, 20, 30, np.nan, 50]}, index=pd.date_range('2022-01-01', periods=5, freq='D'))
 
# Fehlende Werte mit zeitserienbewussten Verfahren interpolieren
df_interpolated = df.interpolate(method='time')
print(df_interpolated)

Ausgabe:

            A     B
2022-01-01  1.0  10.0
2022-01-02  2.0  20.0
2022-01-03  3.0  30.0
2022-01-04  4.0  40.0
2022-01-05  5.0  50.0

Die verbesserte Handhabung von fehlenden Daten in Pandas 2.0 vereinfacht den Prozess der Datenbereitung und ermöglicht eine effektivere Arbeit mit unvollständigen Datensätzen.

Automatisierte Datenumwandlungen: Vektorkompatible Operationen nutzen

Pandas 2.0 verbessert den Einsatz vektorkompatibler Operationen, um komplexe Datenumwandlungen auf eine prägnante und effiziente Weise durchzuführen. Die neue Methode DataFrame.apply() unterstützt nun erweiterte Funktionen, darunter die Möglichkeit, benutzerdefinierte Funktionen auf bestimmte Achsen oder einzelne Elemente anzuwenden.

# Beispiel DataFrame erstellen
df = pd.DataFrame({'A': [1, 2, 3], 'B': [10, 20, 30]})
 
# Benutzerdefinierte Funktion auf jedes Element anwenden
df['C'] = df.apply(lambda x: x['A'] * x['B'], axis=1)
print(df)

Ausgabe:

   A   B   C
0  1  10  10
1  2  20  40
2  3  30  90

Die verbesserten vektorkompatiblen Operationen in Pandas 2.0 ermöglichen es Ihnen, prägnanten und effizienten Code zu schreiben, wodurch die Notwendigkeit für manuelle, elementweise Datenumwandlungen reduziert wird.

Datenanalyse und -visualisierung

Leistungsstarke Datenaggregation: Erkenntnisse durch Gruppierung und Pivotierung

Pandas 2.0 erleichtert die Datenaggregation und ermöglicht es Ihnen, Erkenntnisse aus Ihren Daten zu extrahieren. Die neuen Methoden DataFrame.groupby() und DataFrame.pivot_table() unterstützen nun erweiterte Optionen wie mehrstufige Gruppierung und automatische Handhabung von fehlenden Werten.

# Beispiel DataFrame erstellen
df = pd.DataFrame({'A': [1, 2, 1, 2, 1, 2], 'B': [10, 20, 30, 40, 50, 60], 'C': [1, 1, 2, 2, 3, 3]})
 
# Mehrstufige Gruppierung und Aggregation durchführen
grouped = df.groupby(['A', 'C'])['B'].mean()
print(grouped)

Ausgabe:

A  C
1  1    20.0
   2    30.0
   3    50.0
2  1    20.0
   2    40.0
   3    60.0
Name: B, dtype: float64

Die verbesserten Möglichkeiten zur Datenaggregation in Pandas 2.0 erleichtern die Entdeckung von Erkenntnissen und Mustern in Ihren Daten und ermöglichen eine anspruchsvollere Datenanalyse.

Interaktive Datenvisualisierung: Integration von Pandas mit Plotting-Bibliotheken

Pandas 2.0 verbessert die Integration mit beliebten Visualisierungsbibliotheken wie Matplotlib und Plotly. Die neue Methode DataFrame.plot() ermöglicht eine nahtlose Integration mit diesen Bibliotheken und ermöglicht die Erstellung interaktiver und anpassbarer Visualisierungen direkt aus Ihren Pandas DataFrames.

# Beispiel DataFrame erstellen
df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50]})
 
# Interaktive Linienplot erstellen
df.plot(x='A', y='B', kind='line')

Die verbesserten Möglichkeiten zur Datenvisualisierung in Pandas 2.0 ermöglichen die Erstellung informativer und ansprechender Plots, die die Datenexploration und die Kommunikation von Erkenntnissen erleichtern.

Fortgeschrittene statistische Analysen: Pandas für die Vorhersagemodellierung nutzen

Pandas 2.0 verbessert die Integration mit statistischen und Machine-Learning-Bibliotheken und ermöglicht so fortgeschrittene Datenanalysen und Vorhersagemodellierung direkt in Ihren Pandas-Workflows. Die neue Methode DataFrame.apply() unterstützt die Anwendung benutzerdefinierter Funktionen, die externe Bibliotheken wie scikit-learn oder statsmodels nutzen können.

Funktionen

Funktionen sind wiederverwendbare Codeblöcke, die eine bestimmte Aufgabe ausführen. Sie ermöglichen es Ihnen, Ihren Code in kleinere, leichter verständliche und wartbare Teile zu zerlegen.

Funktionen definieren

Um eine Funktion in Python zu definieren, verwenden Sie das Schlüsselwort def, gefolgt vom Funktionsnamen, einer Klammer und einem Doppelpunkt. Der Funktionskörper wird eingerückt und enthält den Code, der ausgeführt wird, wenn die Funktion aufgerufen wird.

def greet(name):
    print(f"Hallo, {name}!")

In diesem Beispiel nimmt die Funktion greet einen einzelnen Parameter name entgegen und gibt eine Begrüßungsnachricht mit dem übergebenen Namen aus.

Funktionsparameter

Funktionen können einen oder mehrere Parameter akzeptieren, die Variablen sind, die der Funktion beim Aufruf übergeben werden. Die Parameter werden in den Klammern der Funktionsdefinition definiert.

def calculate_area(length, width):
    area = length * width
    print(f"Die Fläche des Rechtecks beträgt {area} Quadrat-Einheiten.")
Berechnen Sie die Fläche (5, 10)  # Ausgabe: Die Fläche des Rechtecks beträgt 50 Quadrat-Einheiten.
 

In diesem Beispiel nimmt die Funktion calculate_area zwei Parameter, length und width, entgegen und berechnet die Fläche eines Rechtecks.

Rückgabeanweisungen

Funktionen können auch Werte zurückgeben, die in anderen Teilen Ihres Codes verwendet werden können. Um einen Wert zurückzugeben, verwenden Sie das Schlüsselwort return.

def add_numbers(a, b):
    return a + b
 
result = add_numbers(3, 4)
print(result)  # Ausgabe: 7

In diesem Beispiel nimmt die Funktion add_numbers zwei Parameter, a und b, entgegen und gibt ihre Summe zurück.

Vorgabewerte für Argumente

Sie können auch Standardwerte für Funktionen angeben, die verwendet werden, wenn bei Aufruf der Funktion kein Argument angegeben wird.

def greet(name, message="Hallo"):
    print(f"{message}, {name}!")
 
greet("Alice")  # Ausgabe: Hallo, Alice!
greet("Bob", "Hi")  # Ausgabe: Hi, Bob!

In diesem Beispiel hat die Funktion greet ein Standardargument message mit dem Wert "Hallo". Wenn kein message-Argument angegeben wird, wird der Standardwert verwendet.

Argumente variabler Länge

Manchmal müssen Sie Funktionen schreiben, die eine variable Anzahl von Argumenten akzeptieren können. Dies können Sie mit der *args-Syntax tun.

def sum_numbers(*args):
    total = 0
    for num in args:
        total += num
    return total
 
print(sum_numbers(1, 2, 3))  # Ausgabe: 6
print(sum_numbers(4, 5, 6, 7, 8))  # Ausgabe: 30

In diesem Beispiel kann die Funktion sum_numbers beliebig viele Argumente akzeptieren, die in einem Tupel namens args gesammelt werden. Die Funktion summiert dann alle Zahlen im Tupel und gibt das Ergebnis zurück.

Lambda-Funktionen (anonyme Funktionen)

Python unterstützt auch anonyme Funktionen, sogenannte Lambda-Funktionen, die kleine, einzeilige Funktionen sind und ohne Namen definiert werden können.

square = lambda x: x ** 2
print(square(5))  # Ausgabe: 25
 
add_numbers = lambda a, b: a + b
print(add_numbers(3, 4))  # Ausgabe: 7

In diesem Beispiel wird die square-Funktion als Lambda-Funktion definiert, die ein einzelnes Argument x entgegennimmt und x quadriert zurückgibt. Die add_numbers-Funktion wird ebenfalls als Lambda-Funktion definiert, die zwei Argumente a und b entgegennimmt und ihre Summe zurückgibt.

Module und Pakete

In Python werden Module und Pakete zum Organisieren und Wiederverwenden von Code verwendet.

Module

Ein Modul ist eine Datei mit Python-Definitionen und -Anweisungen. Module ermöglichen es Ihnen, Ihren Code logisch zu organisieren und ihn einfacher zu warten und zu teilen.

# my_module.py
def greet(name):
    print(f"Hallo, {name}!")
 
# main.py
import my_module
my_module.greet("Alice")  # Ausgabe: Hallo, Alice!

In diesem Beispiel wird die Funktion greet in der Datei my_module.py definiert und dann in der Datei main.py importiert und verwendet.

Pakete

Pakete sind eine Möglichkeit, Module in einer hierarchischen Verzeichnisstruktur zu strukturieren. Dadurch können Sie größere und komplexere Anwendungen erstellen.

my_package/
    __init__.py
    math_utils.py
    string_utils.py

In diesem Beispiel ist my_package ein Paket, das zwei Module enthält: math_utils.py und string_utils.py. Die Datei __init__.py ist eine spezielle Datei, die Python mitteilt, dass das Verzeichnis ein Paket ist.

# main.py
from my_package import math_utils, string_utils
 
result = math_utils.add(2, 3)
print(result)  # Ausgabe: 5
 
reversed_string = string_utils.reverse_string("hello")
print(reversed_string)  # Ausgabe: "olleh"

In diesem Beispiel werden die Module math_utils und string_utils aus dem Paket my_package importiert und in der Datei main.py verwendet.

Datei-E/A

Python bietet integrierte Funktionen zum Lesen von Dateien und zum Schreiben in Dateien.

Lesen von Dateien

Um den Inhalt einer Datei zu lesen, können Sie die Funktion open() verwenden, um die Datei zu öffnen, und die Methode read() verwenden, um den Inhalt zu lesen.

with open("beispiel.txt", "r") as file:
    content = file.read()
    print(content)

In diesem Beispiel wird die Funktion open() verwendet, um die Datei beispiel.txt im Lese-Modus ("r") zu öffnen, und die Methode read() wird verwendet, um den gesamten Inhalt der Datei zu lesen.

Schreiben in Dateien

Um in eine Datei zu schreiben, können Sie die Funktion open() verwenden, um die Datei im Schreibmodus ("w") zu öffnen, und die Methode write() verwenden, um Daten in die Datei zu schreiben.

with open("ausgabe.txt", "w") as file:
    file.write("Dies ist ein Text, der in die Datei geschrieben werden soll.")

In diesem Beispiel wird die Funktion open() verwendet, um die Datei ausgabe.txt im Schreibmodus zu öffnen, und die Methode write() wird verwendet, um einen String in die Datei zu schreiben.

Dateimodi

Die Funktion open() nimmt ein zweites Argument an, das den Modus angibt, in dem die Datei geöffnet werden soll. Hier sind einige häufige Dateimodi:

  • "r": Lese-Modus (Standard)
  • "w": Schreib-Modus (überschreibt vorhandene Datei)
  • "a": Anhänge-Modus (fügt am Ende der Datei an)
  • "r+": Lese- und Schreib-Modus
  • "b": Binär-Modus (für Nicht-Text-Dateien)

Behandlung von Datei-Ausnahmen

Es ist wichtig, Datei-bezogene Ausnahmen abzufangen und zu behandeln, z. B. wenn eine Datei nicht existiert oder Sie keine Berechtigung haben, darauf zuzugreifen. Sie können einen try-except-Block verwenden, um diese Ausnahmen abzufangen und zu behandeln.

try:
    with open("nicht_vorhandene_datei.txt", "r") as file:
        content = file.read()
        print(content)
except FileNotFoundError:
    print("Die Datei existiert nicht.")

In diesem Beispiel wird die FileNotFoundError-Ausnahme abgefangen, wenn die Datei nicht_vorhandene_datei.txt nicht existiert, und eine entsprechende Meldung wird ausgegeben.

Fazit

In diesem Tutorial haben Sie verschiedene Python-Konzepte kennengelernt, darunter Funktionen, Module, Pakete und Datei-E/A. Diese Funktionen sind für das Schreiben komplexerer und organisierter Python-Programme unerlässlich. Indem Sie diese Konzepte verstehen und anwenden, können Sie robusteren und wartbareren Code erstellen.

title: Bessere Python-Fähigkeiten - German Translation language: de

Erinnern Sie sich daran, dass der beste Weg, Ihre Python-Fähigkeiten zu verbessern, darin besteht, regelmäßig zu üben und verschiedene Techniken und Ansätze auszuprobieren. Erforschen Sie weiterhin das umfangreiche Ökosystem der Python-Bibliotheken und -Module und zögern Sie nicht, Hilfe von der blühenden Python-Community zu suchen, wenn Sie auf Herausforderungen stoßen.

Viel Spaß beim Codieren!

MoeNagy Dev