Python
Schnell Pandas-Dict in DataFrame umwandeln: Ein Leitfaden für Anfänger

Schnell Pandas-Dict in DataFrame umwandeln: Ein Leitfaden für Anfänger

MoeNagy Dev

Ein Python-Dictionary in ein Pandas-DataFrame umwandeln

Pandas DataFrame: Das Kraftpaket der Datenmanipulation

Verständnis des Pandas DataFrame

Der Pandas DataFrame ist eine leistungsstarke Datenstruktur in Python, die eine umfassende Reihe von Tools für Datenmanipulation, -analyse und -visualisierung bietet. Er basiert auf der NumPy-Bibliothek und bietet ein tabellarisches Datenformat, ähnlich wie bei einer Tabellenkalkulation, das es ermöglicht, strukturierte Daten zu speichern und damit zu arbeiten.

Hauptfunktionen und Vorteile

  • Tabellarische Datenstruktur: Pandas DataFrames repräsentieren Daten in einem zweidimensionalen tabellenartigen Format mit Zeilen und Spalten.
  • Unterschiedliche Datentypen: DataFrames können Daten verschiedener Datentypen in derselben Struktur speichern, was sie vielseitig einsetzbar für die Verarbeitung unterschiedlicher Datensätze macht.
  • Effiziente Datenmanipulation: Pandas bietet eine umfangreiche Sammlung von Methoden und Funktionen zum Filtern, Sortieren, Gruppieren und Transformieren von Daten, was die Datenanalyse und Vorverarbeitung erleichtert.
  • Behandlung fehlender Daten: DataFrames unterstützen den Umgang mit fehlenden Daten und ermöglichen es Ihnen, fehlende Werte leicht zu identifizieren, zu ersetzen oder zu interpolieren.
  • Integrierte Visualisierung: Pandas integriert nahtlos mit Datenvisualisierungsbibliotheken wie Matplotlib und Seaborn, was es Ihnen ermöglicht, aussagekräftige Plots und Diagramme direkt aus Ihrem DataFrame zu generieren.
  • Skalierbarkeit und Leistung: Pandas ist für hohe Leistung optimiert und kann große Datensätze effizient verarbeiten, wodurch es für die Arbeit mit Big Data geeignet ist.

Umwandlung eines Python-Dictionarys in ein Pandas-DataFrame

Definition des Dictionarys

Beginnen wir damit, ein Python-Dictionary zu erstellen, das wir zur Demonstration der Umwandlung in ein Pandas-DataFrame verwenden werden. In diesem Beispiel erstellen wir ein Dictionary, das Informationen über verschiedene Autos darstellt:

car_data = {
    'make': ['Toyota', 'Honda', 'Ford', 'Chevrolet', 'Nissan'],
    'model': ['Camry', 'Civic', 'Mustang', 'Silverado', 'Altima'],
    'year': [2020, 2018, 2022, 2019, 2021],
    'price': [25000, 22000, 35000, 40000, 27000]
}

Erstellen eines DataFrame aus einem Dictionary

Um das Python-Dictionary in ein Pandas-DataFrame umzuwandeln, können Sie die Funktion pd.DataFrame() verwenden:

import pandas as pd
 
df = pd.DataFrame(car_data)
print(df)

Ausgabe:

       make    model  year  price
0    Toyota   Camry  2020  25000
1     Honda   Civic  2018  22000
2      Ford  Mustang  2022  35000
3  Chevrolet Silverado  2019  40000
4     Nissan   Altima  2021  27000

Die resultierende Variable df ist ein Pandas DataFrame, das die Daten aus dem car_data-Dictionary enthält.

Umgang mit Dictionaries mit unterschiedlichen Werttypen

Pandas DataFrames können Dictionaries mit unterschiedlichen Werttypen behandeln, wie z.B. Listen, Tupel oder sogar andere Dictionaries. Modifizieren wir das car_data-Dictionary, um einige geschachtelte Daten einzuschließen:

car_data = {
    'make': ['Toyota', 'Honda', 'Ford', 'Chevrolet', 'Nissan'],
    'model': ['Camry', 'Civic', 'Mustang', 'Silverado', 'Altima'],
    'year': [2020, 2018, 2022, 2019, 2021],
    'price': [25000, 22000, 35000, 40000, 27000],
    'features': [
        {'engine': 'V6', 'transmission': 'automatic', 'drivetrain': 'FWD'},
        {'engine': 'I4', 'transmission': 'manual', 'drivetrain': 'FWD'},
        {'engine': 'V8', 'transmission': 'automatic', 'drivetrain': 'RWD'},
        {'engine': 'V8', 'transmission': 'automatic', 'drivetrain': '4WD'},
        {'engine': 'I4', 'transmission': 'CVT', 'drivetrain': 'FWD'}
    ]
}
 
df = pd.DataFrame(car_data)
print(df)

Ausgabe:

       make    model  year  price                                           features
0    Toyota   Camry  2020  25000  {'engine': 'V6', 'transmission': 'automatic', 'd…
1     Honda   Civic  2018  22000  {'engine': 'I4', 'transmission': 'manual', 'driv…
2      Ford  Mustang  2022  35000  {'engine': 'V8', 'transmission': 'automatic', 'd…
3  Chevrolet Silverado  2019  40000  {'engine': 'V8', 'transmission': 'automatic', 'd…
4     Nissan   Altima  2021  27000  {'engine': 'I4', 'transmission': 'CVT', 'drivet...

In diesem Beispiel enthält die Spalte features für jedes Auto ein Dictionary, das zusätzliche Informationen über das Fahrzeug darstellt.

Umgang mit geschachtelten Dictionaries

Wenn Sie ein Dictionary von Dictionaries haben, können Sie trotzdem ein DataFrame daraus erstellen. Betrachten wir ein Beispiel, bei dem jedes Auto ein geschachteltes Dictionary für die features hat:

car_data = {
    'make': ['Toyota', 'Honda', 'Ford', 'Chevrolet', 'Nissan'],
    'model': ['Camry', 'Civic', 'Mustang', 'Silverado', 'Altima'],
    'year': [2020, 2018, 2022, 2019, 2021],
    'price': [25000, 22000, 35000, 40000, 27000],
    'features': {
        'Camry': {'engine': 'V6', 'transmission': 'automatic', 'drivetrain': 'FWD'},
        'Civic': {'engine': 'I4', 'transmission': 'manual', 'drivetrain': 'FWD'},
        'Mustang': {'engine': 'V8', 'transmission': 'automatic', 'drivetrain': 'RWD'},
        'Silverado': {'engine': 'V8', 'transmission': 'automatic', 'drivetrain': '4WD'},
        'Altima': {'engine': 'I4', 'transmission': 'CVT', 'drivetrain': 'FWD'}
    }
}
 
df = pd.DataFrame(car_data)
print(df)

Ausgabe:

       make    model  year  price                                           features
0    Toyota   Camry  2020  25000  {'engine': 'V6', 'transmission': 'automatic', 'd...
1     Honda   Civic  2018  22000  {'engine': 'I4', 'transmission': 'manual', 'driv...
2      Ford  Mustang  2022  35000  {'engine': 'V8', 'transmission': 'automatic', 'd...
3  Chevrolet Silverado  2019  40000  {'engine': 'V8', 'transmission': 'automatic', 'd...
4     Nissan   Altima  2021  27000  {'engine': 'I4', 'transmission': 'CVT', 'drivet...

In diesem Fall enthält die features-Spalte immer noch für jedes Auto ein Wörterbuch, aber die Struktur unterscheidet sich vom vorherigen Beispiel.

Anpassen des DataFrames

Festlegen der Spaltenreihenfolge

Sie können die Spaltenreihenfolge des DataFrames ändern, indem Sie eine Liste von Spaltennamen an die pd.DataFrame()-Funktion übergeben:

df = pd.DataFrame(car_data, columns=['make', 'model', 'price', 'year', 'features'])
print(df)

Ausgabe:

       make    model  price  year                                           features
0    Toyota   Camry  25000  2020  {'engine': 'V6', 'transmission': 'automatic', 'd...
1     Honda   Civic  22000  2018  {'engine': 'I4', 'transmission': 'manual', 'driv...
2      Ford  Mustang  35000  2022  {'engine': 'V8', 'transmission': 'automatic', 'd...
3  Chevrolet Silverado  40000  2019  {'engine': 'V8', 'transmission': 'automatic', 'd...
4     Nissan   Altima  27000  2021  {'engine': 'I4', 'transmission': 'CVT', 'drivet...

Umbenennen von Spalten

Sie können die Spalten des DataFrames mit der rename()-Methode umbenennen:

df = df.rename(columns={'make': 'Hersteller', 'model': 'Modell', 'price': 'Preis', 'year': 'Jahr', 'features': 'Autofunktionen'})
print(df)

Ausgabe:

   Hersteller    Modell  Preis  Jahr                                     Autofunktionen
0        Toyota   Camry  25000  2020  {'engine': 'V6', 'transmission': 'automatic', 'd...
1         Honda   Civic  22000  2018  {'engine': 'I4', 'transmission': 'manual', 'driv...
2          Ford  Mustang  35000  2022  {'engine': 'V8', 'transmission': 'automatic', 'd...
3    Chevrolet Silverado  40000  2019  {'engine': 'V8', 'transmission': 'automatic', 'd...
4         Nissan   Altima  27000  2021  {'engine': 'I4', 'transmission': 'CVT', 'drivet...

Umgang mit fehlenden Daten

Wenn Ihr Wörterbuch fehlende Werte enthält, behandelt Pandas diese automatisch im DataFrame. Wenn wir zum Beispiel einen fehlenden Wert für den "Preis" des Autos "Altima" hinzufügen:

car_data = {
    'make': ['Toyota', 'Honda', 'Ford', 'Chevrolet', 'Nissan'],
    'model': ['Camry', 'Civic', 'Mustang', 'Silverado', 'Altima'],
    'year': [2020, 2018, 2022, 2019, 2021],
    'price': [25000, 22000, 35000, 40000, None],
    'features': {
        'Camry': {'engine': 'V6', 'transmission': 'automatic', 'drivetrain': 'FWD'},
        'Civic': {'engine': 'I4', 'transmission': 'manual', 'drivetrain': 'FWD'},
        'Mustang': {'engine': 'V8', 'transmission': 'automatic', 'drivetrain': 'RWD'},
        'Silverado': {'engine': 'V8', 'transmission': 'automatic', 'drivetrain': '4WD'},
        'Altima': {'engine': 'I4', 'transmission': 'CVT', 'drivetrain': 'FWD'}
    }
}
 
df = pd.DataFrame(car_data)
print(df)

Ausgabe:

       make    model  year   price                                           features
0    Toyota   Camry  2020  25000.0  {'engine': 'V6', 'transmission': 'automatic', 'd...
1     Honda   Civic  2018  22000.0  {'engine': 'I4', 'transmission': 'manual', 'driv...
2      Ford  Mustang  2022  35000.0  {'engine': 'V8', 'transmission': 'automatic', 'd...
3  Chevrolet Silverado  2019  40000.0  {'engine': 'V8', 'transmission': 'automatic', 'd...
4     Nissan   Altima  2021       NaN  {'engine': 'I4', 'transmission': 'CVT', 'drivet...

Der fehlende "Preis"-Wert für das Auto "Altima" wird als NaN dargestellt.

Funktionen

Funktionen in Python sind wiederverwendbare Codeblöcke, die eine bestimmte Aufgabe erfüllen. Sie ermöglichen es Ihnen, Ihr Programm in kleinere, überschaubarere Teile aufzuteilen. Funktionen können Argumente (Eingaben) entgegennehmen und Werte (Ausgaben) zurückgeben.

Hier ist ein Beispiel für eine einfache Funktion, die zwei Zahlen als Argumente entgegennimmt und ihre Summe zurückgibt:

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

In diesem Beispiel nimmt die Funktion add_numbers zwei Argumente a und b entgegen und gibt ihre Summe zurück. Wir rufen die Funktion dann mit den Argumenten 5 und 3 auf und speichern das Ergebnis in der Variable result, die wir dann ausgeben.

Funktionen können auch Standardargumente haben, die verwendet werden, wenn der Aufrufer keinen Wert für dieses Argument angibt:

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

In diesem Beispiel hat die Funktion greet ein Standardargument message mit einem Wert von "Hello". Wenn der Aufrufer keinen Wert für message angibt, wird der Standardwert verwendet.

Funktionsumfang

In Python haben Variablen einen bestimmten Gültigkeitsbereich, der bestimmt, wo sie aufgerufen werden können. Variablen, die innerhalb einer Funktion definiert werden, gelten als lokal für diese Funktion und können nur innerhalb der Funktion aufgerufen werden. Variablen, die außerhalb einer Funktion definiert werden, gelten als global und können aus dem gesamten Programm aufgerufen werden.

Hier ist ein Beispiel, das den Unterschied zwischen lokalen und globalen Variablen veranschaulicht:

global_variable = 10
 
def my_function():
    local_variable = 5
    print(f"Lokale Variable: {local_variable}")
    print(f"Globale Variable: {global_variable}")
 
my_function()  # Ausgabe: Lokale Variable: 5, Globale Variable: 10
 
print(local_variable)  # NameError: name 'local_variable' is not defined

In diesem Beispiel ist global_variable eine globale Variable, auf die sowohl innerhalb als auch außerhalb der Funktion my_function zugegriffen werden kann. local_variable hingegen ist eine lokale Variable, auf die nur innerhalb der Funktion my_function zugegriffen werden kann.

Module und Pakete

In Python sind Module einzelne Python-Dateien, die Definitionen und Anweisungen enthalten. Pakete sind Sammlungen von zusammengehörigen Modulen.

Um ein Modul zu verwenden, können Sie es am Anfang Ihres Python-Skripts mit import importieren. Hier ist ein Beispiel:

import math
 
result = math.sqrt(16)
print(result)  # Ausgabe: 4.0

In diesem Beispiel importieren wir das math Modul, das eine Vielzahl mathematischer Funktionen bereitstellt. Wir verwenden dann die sqrt Funktion aus dem math Modul, um die Quadratwurzel von 16 zu berechnen.

Sie können auch spezifische Funktionen oder Variablen aus einem Modul mit dem from Schlüsselwort importieren:

from math import sqrt
 
result = sqrt(16)
print(result)  # Ausgabe: 4.0

In diesem Beispiel importieren wir die sqrt Funktion direkt aus dem math Modul, was es uns ermöglicht, sie ohne das math. Präfix zu verwenden.

Packages sind Sammlungen von verwandten Modulen. Sie können eigene Packages erstellen, indem Sie Ihre Python-Dateien in Verzeichnisse organisieren und in jedes Verzeichnis eine __init__.py Datei hinzufügen. Hier ist ein Beispiel:

my_package/
    __init__.py
    module1.py
    module2.py

In diesem Beispiel ist my_package ein Package, das zwei Module, module1.py und module2.py, enthält. Die __init__.py Datei ist erforderlich, um das Verzeichnis zu einem Package zu machen.

Sie können dann Module aus dem Package mit folgender Syntax importieren:

import my_package.module1
result = my_package.module1.my_function()

Oder Sie können bestimmte Funktionen oder Variablen aus dem Package importieren:

from my_package.module2 import my_variable, my_function
print(my_variable)
my_function()

Ausnahmen (Exceptions)

Ausnahmen sind Ereignisse, die während der Ausführung eines Programms auftreten und den normalen Ablauf der Anweisungen des Programms unterbrechen. Python hat ein eingebautes System zur Ausnahmehandlung, mit dem Sie diese Ereignisse elegant behandeln können.

Hier ist ein Beispiel, wie man eine ZeroDivisionError Ausnahme behandelt:

try:
    result = 10 / 0
except ZeroDivisionError:
    print("Fehler: Division durch Null")

In diesem Beispiel versuchen wir, 10 durch 0 zu teilen, was einen ZeroDivisionError verursacht. Wir fangen diese Ausnahme mit dem except Block ab und geben eine Fehlermeldung aus.

Sie können auch mehrere Ausnahmen in einem einzigen try-except Block behandeln:

try:
    result = int("abc")
except ValueError:
    print("Fehler: Ungültiges Integer-Format")
except TypeError:
    print("Fehler: Eingabe muss ein String sein")

In diesem Beispiel versuchen wir, den String "abc" in eine Ganzzahl umzuwandeln, was einen ValueError verursacht. Wir behandeln auch eine TypeError Ausnahme, die auftreten kann, wenn wir einen falschen Typ an die int() Funktion übergeben.

Sie können auch den finally Block verwenden, um Code auszuführen, unabhängig davon, ob eine Ausnahme aufgetreten ist oder nicht:

try:
    result = 10 / 0
except ZeroDivisionError:
    print("Fehler: Division durch Null")
finally:
    print("Dieser Code wird immer ausgeführt")

In diesem Beispiel wird der Code im finally Block unabhängig davon ausgeführt, ob die Division durch Null erfolgreich ist oder eine Ausnahme wirft.

Fazit

In diesem Tutorial haben Sie verschiedene fortgeschrittene Python-Konzepte kennengelernt, darunter Funktionen, Funktionsumfang (Scope), Module und Packages sowie die Behandlung von Ausnahmen. Diese Konzepte sind essentiell für den Aufbau komplexerer und robuster Python-Anwendungen.

Denken Sie daran, dass der beste Weg, Ihre Python-Kenntnisse zu verbessern, darin besteht, zu üben. Versuchen Sie, diese Konzepte auf Ihre eigenen Projekte anzuwenden und mit verschiedenen Anwendungsfällen zu experimentieren. Viel Erfolg!

MoeNagy Dev