Pandas Python

Verarbeiten großer Datenmengen in Pandas

Beim Arbeiten mit großen Datenmengen ist Pandas eines der leistungsstärksten und flexibelsten Tools in Python. Es bietet Datenstrukturen und Funktionen, die es einfach machen, Daten aus verschiedenen Formaten wie CSV- oder Excel-Dateien zu lesen und zu verarbeiten.


3 Minuten Lesezeit
14 Okt 2024
Verarbeiten großer Datenmengen in Pandas

Was lerne ich in diesem Kurs?

In diesem Tutorial wird erklärt, wie man große Datenmengen effizient mit Pandas einlesen und verarbeiten kann, insbesondere aus CSV-Dateien und Excel-Sheets.

1. Installation von Pandas

Bevor du mit Pandas arbeitest, muss die Bibliothek installiert werden. Dies geschieht einfach mit dem folgenden Befehl:

pip install pandas

2. Einlesen von CSV-Dateien

CSV-Dateien sind eines der häufigsten Formate für tabellarische Daten. Mit Pandas kannst du CSV-Dateien effizient einlesen und bearbeiten.

Einfache CSV-Datei einlesen

Mit der Funktion pd.read_csv() kannst du eine CSV-Datei in ein Pandas-DataFrame laden.

import pandas as pd

# CSV-Datei einlesen
df = pd.read_csv('daten.csv')

# Daten anzeigen
print(df.head())

df.head() zeigt die ersten fünf Zeilen des DataFrames an, um eine schnelle Vorschau auf die Daten zu erhalten.

Spalten auswählen und Datentypen festlegen

Wenn eine CSV-Datei sehr groß ist, kann es effizienter sein, nur die benötigten Spalten einzulesen und die Datentypen festzulegen, um den Speicherverbrauch zu reduzieren.

# Nur bestimmte Spalten einlesen
df = pd.read_csv('daten.csv', usecols=['Spalte1', 'Spalte2'], dtype={'Spalte1': 'int32', 'Spalte2': 'float32'})

print(df.head())
  • usecols: Wählt nur die angegebenen Spalten aus der Datei aus.
  • dtype: Legt die Datentypen für die Spalten fest, was den Speicher effizienter nutzt.

Daten in Teilen einlesen

Bei sehr großen CSV-Dateien kann es sinnvoll sein, die Daten in Teilen zu lesen, um den Arbeitsspeicher zu schonen. Dies ist besonders nützlich, wenn die Datei zu groß ist, um sie komplett in den Speicher zu laden.

# Daten stückweise einlesen
for chunk in pd.read_csv('große_daten.csv', chunksize=10000):
    # Daten verarbeiten
    print(chunk.shape)

Mit chunksize liest Pandas die Datei in kleinen Teilen ein. In diesem Beispiel werden jeweils 10.000 Zeilen gelesen und verarbeitet.


3. Einlesen von Excel-Sheets

Neben CSV-Dateien unterstützt Pandas auch das Einlesen von Excel-Dateien mit der Funktion pd.read_excel().

Einfache Excel-Datei einlesen

# Excel-Datei einlesen
df = pd.read_excel('daten.xlsx')

# Daten anzeigen
print(df.head())

Pandas erkennt automatisch die Blätter in der Excel-Datei und lädt das erste Blatt, sofern nicht explizit ein anderes Blatt angegeben wird.

Bestimmtes Blatt aus einer Excel-Datei einlesen

Wenn deine Excel-Datei mehrere Blätter hat, kannst du gezielt ein bestimmtes Blatt laden:

# Bestimmtes Blatt einlesen
df = pd.read_excel('daten.xlsx', sheet_name='Blatt1')

print(df.head())

Mehrere Blätter gleichzeitig einlesen

Pandas bietet auch die Möglichkeit, mehrere Blätter einer Excel-Datei gleichzeitig einzulesen und sie als Dictionary zurückzugeben:

# Alle Blätter einlesen
dfs = pd.read_excel('daten.xlsx', sheet_name=None)

# Daten aus mehreren Blättern anzeigen
for sheet_name, df in dfs.items():
    print(f"Blattname: {sheet_name}")
    print(df.head())

In diesem Fall enthält dfs ein Dictionary, bei dem die Blattnamen die Schlüssel und die DataFrames die Werte sind.


4. Empfohlene maximale Datenmenge für Pandas

Pandas ist für die Verarbeitung von moderaten bis großen Datenmengen ausgelegt, aber es gibt Grenzen, bei denen die Leistung abnimmt. Eine empfohlene maximale Größe für die Arbeit mit Pandas liegt bei 5 bis 10 Millionen Zeilen oder etwa 1 bis 5 GB Daten, je nach Komplexität der Operationen und verfügbaren Arbeitsspeicher des Systems.

Für größere Datenmengen können Probleme wie hoher Speicherverbrauch, langsame Verarbeitung oder gar Abstürze auftreten. In solchen Fällen kann es sinnvoll sein, entweder die Daten in kleinere Teile zu zerlegen oder auf effizientere Tools für große Datenmengen zurückzugreifen.


5. Effiziente Speicherverwaltung bei großen Datenmengen

Beim Arbeiten mit großen Datenmengen kann der Speicherverbrauch schnell zum Problem werden. Hier sind einige Tipps, um Speicher effizient zu nutzen:

Datentypen optimieren

Durch die Festlegung effizienterer Datentypen, z. B. die Verwendung von int32 oder float32 statt der Standard-int64 oder float64, kann der Speicherbedarf erheblich reduziert werden.

df = pd.read_csv('daten.csv', dtype={'Spalte1': 'int32', 'Spalte2': 'float32'})

Unnötige Spalten vermeiden

Wähle beim Einlesen nur die Spalten aus, die du tatsächlich benötigst, um den Speicherverbrauch zu reduzieren.

df = pd.read_csv('daten.csv', usecols=['WichtigeSpalte1', 'WichtigeSpalte2'])

Speichern und Laden von DataFrames

Wenn du mit großen Datenmengen arbeitest, kann es sinnvoll sein, Daten im Pandas-eigenen Format (Pickle) zu speichern und später schneller wieder einzuladen.

# Speichern
df.to_pickle('daten.pkl')

# Laden
df = pd.read_pickle('daten.pkl')

6. Alternativen zu Pandas für große Datenmengen

Wenn Pandas an seine Leistungsgrenzen stößt, gibt es einige leistungsfähigere Alternativen, die für die Verarbeitung sehr großer Datenmengen besser geeignet sind.

Dask

Dask ist eine Bibliothek, die das Pandas-API nachahmt, aber auf verteilte und parallele Datenverarbeitung ausgelegt ist. Es kann große DataFrames in kleinere Chunks aufteilen und diese parallel verarbeiten, was es für große Datensätze und verteilte Umgebungen geeignet macht.

import dask.dataframe as dd

# Dask-DataFrame einlesen
df = dd.read_csv('große_daten.csv')

# Berechnungen verzögert ausführen
df.head()

Dask bietet eine einfache Möglichkeit, den Pandas-Code bei Bedarf zu skalieren, da viele der gleichen Pandas-Operationen unterstützt werden.

Vaex

Vaex ist eine weitere leistungsstarke Bibliothek für die Arbeit mit großen Datensätzen. Vaex verwendet eine speichereffiziente Methode, um Daten zu verarbeiten, indem es Daten aus dem Speicher auf der Festplatte verarbeitet, ohne sie vollständig in den RAM zu laden.

import vaex

# Vaex-DataFrame einlesen
df = vaex.open('große_daten.csv')

# Schnelle Analyse
df.describe()

Vaex ist besonders gut für explorative Datenanalyse und große Datenmengen geeignet.

PySpark

Apache Spark ist eine verteilte Datenverarbeitungs-Engine, und PySpark ist die Python-Schnittstelle dafür. PySpark ermöglicht es, große Datenmengen über Cluster hinweg zu verarbeiten, indem es die Daten parallelisiert und verteilt.

from pyspark.sql import SparkSession

# SparkSession starten
spark = SparkSession.builder.appName("GroßeDaten").getOrCreate()

# Spark DataFrame einlesen
df = spark.read.csv('große_daten.csv')

# Analyse
df.show()

PySpark ist besonders nützlich für Big Data-Projekte und verteilte Verarbeitung über mehrere Maschinen.

Online- und Präsenzkurse zum Thema

Finden Sie interessante und zum Thema passende Kurse

Python Einführungskurs

Beginnen Sie Ihre Programmierkarriere mit unserem Python-Einführungskurs. Erlernen Sie grundlegende Konzepte wie Variablen, Schleifen und Datenstrukturen und bauen Sie eine solide Basis in Python auf. Durch praxisnahe Projekte und kompetente Anleitung entwickeln Sie wertvolle Programmierfähigkeiten.

5 Tage Vollzeit auch als Feierabendkurs Online

Nächster Termin: 20. Januar 2025
Preis pro Person: 1600,00 EUR

Rabattaktion: 3 für den Preis von 2!

Data Science mit Python

In diesem dreitägigen Data Science Seminar mit Python lernen Teilnehmer, wie sie Daten effizient mit Python-Datenstrukturen verarbeiten, analysieren und visualisieren. Die Schulung umfasst die Arbeit mit NumPy und Pandas sowie die Erstellung von aussagekräftigen Diagrammen mit Matplotlib.

3 Tage Vollzeit Online

Nächster Termin: noch kein Datum bekannt
Preis pro Person: 1200,00 EUR

Rabattaktion: 3 für den Preis von 2!