Pandas ist eine leistungsstarke Python-Bibliothek zur Datenmanipulation und -analyse. Die Datenverwaltung ist entscheidend für eine effiziente Datenverarbeitung. Dieser Artikel untersucht verschiedene Methoden, um Datentypen von Spalten in Ihren Pandas DataFrames effektiv zu ändern.
Inhaltsverzeichnis
- Konvertierung in numerische Typen mit
pd.to_numeric()
- Flexible Typkonvertierung mit
astype()
- Intelligente Typinferenz mit
infer_objects()
- Best Practices für die Datentypkonvertierung
1. Konvertierung in numerische Typen mit pd.to_numeric()
Die Funktion pd.to_numeric()
ist ideal zum Konvertieren von Spalten in numerische Datentypen (int
, float
). Sie ist besonders nützlich, wenn Sie es mit Spalten zu tun haben, die Zeichenketten-Darstellungen von Zahlen enthalten, die häufig beim Importieren von Daten auftreten.
import pandas as pd
data = {'col1': ['1', '2', '3', '4', '5'], 'col2': ['A', 'B', 'C', 'D', 'E']}
df = pd.DataFrame(data)
df['col1'] = pd.to_numeric(df['col1'])
print(df.dtypes)
Der Parameter errors
steuert die Behandlung von Fehlern:
'coerce'
: Ungültige Werte werden zuNaN
.'raise'
: Löst eine Ausnahme für ungültige Werte aus.'ignore'
: Ignoriert ungültige Werte.
data = {'col1': ['1', '2', 'a', '4', '5']}
df = pd.DataFrame(data)
df['col1'] = pd.to_numeric(df['col1'], errors='coerce')
print(df)
2. Flexible Typkonvertierung mit astype()
Die Methode astype()
bietet einen allgemeinen Ansatz zum Ändern von Datentypen. Sie können in praktisch jeden unterstützten Typ konvertieren (int
, float
, str
, bool
, datetime
usw.).
data = {'col1': [1, 2, 3, 4, 5], 'col2': [True, False, True, False, True]}
df = pd.DataFrame(data)
df['col1'] = df['col1'].astype(str)
df['col2'] = df['col2'].astype(int)
print(df.dtypes)
Vorsicht: Typkonvertierungen können zu Datenverlust führen (z. B. Abschneiden von Dezimalstellen beim Konvertieren von float
in int
).
3. Intelligente Typinferenz mit infer_objects()
Die Methode infer_objects()
ist nützlich für DataFrames mit gemischten Datentypen in „object“-Spalten. Sie versucht, den am besten geeigneten Typ für jede Spalte zu ermitteln.
data = {'col1': ['1', 2, '3.14', 4], 'col2': ['A', 'B', 'C', 'D']}
df = pd.DataFrame(data)
df = df.infer_objects()
print(df.dtypes)
Hinweis: Inkonsistente Daten können eine erfolgreiche Typinferenz verhindern.
4. Best Practices für die Datentypkonvertierung
Überprüfen Sie Ihre Daten immer vor und nach der Konvertierung, um Änderungen zu überprüfen und unerwartete Ergebnisse zu vermeiden. Verwenden Sie die Methode .info()
, um Datentypen und fehlende Werte zu überprüfen. Behandeln Sie potenzielle Fehler mithilfe des Parameters errors
in pd.to_numeric()
oder durch Vorverarbeitung Ihrer Daten, um problematische Werte zu entfernen oder zu ersetzen.