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.
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.
Bevor du mit Pandas arbeitest, muss die Bibliothek installiert werden. Dies geschieht einfach mit dem folgenden Befehl:
pip install pandas
CSV-Dateien sind eines der häufigsten Formate für tabellarische Daten. Mit Pandas kannst du CSV-Dateien effizient einlesen und bearbeiten.
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.
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.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.
Neben CSV-Dateien unterstützt Pandas auch das Einlesen von Excel-Dateien mit der Funktion pd.read_excel()
.
# 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.
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())
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.
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.
Beim Arbeiten mit großen Datenmengen kann der Speicherverbrauch schnell zum Problem werden. Hier sind einige Tipps, um Speicher effizient zu nutzen:
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'})
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'])
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')
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 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 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.
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.
Finden Sie interessante und zum Thema passende Kurse
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!
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!