Pandas ist eine leistungsstarke Python-Bibliothek zur Datenmanipulation, die häufig mit DataFrames verwendet wird, die numerische Daten enthalten. Eine häufige Aufgabe besteht darin, Spalten mit Gleitkommazahlen (Floats) in ganze Zahlen umzuwandeln. Dieser Artikel beschreibt effiziente Methoden für diese Konvertierung innerhalb eines Pandas DataFrame und hebt deren Stärken und Schwächen hervor.
Inhaltsverzeichnis
- Verwendung von
astype(int)
für die Float-zu-Int-Konvertierung - Nutzen von
pd.to_numeric()
für flexible Konvertierung - Fehlerbehandlung und erweitertes Runden
Verwendung von astype(int)
für die Float-zu-Int-Konvertierung
Die Methode astype(int)
bietet einen unkomplizierten Ansatz zur Typumwandlung in Pandas. Sie wandelt den Datentyp einer Spalte direkt in eine ganze Zahl um. Es ist jedoch wichtig, ihr Verhalten zu verstehen: Sie schneidet den Dezimalteil ab und führt effektiv eine Floor-Operation durch. Das bedeutet, dass sie den Bruchteil verwirft und immer abrundet.
Beispiel:
import pandas as pd
data = {'col1': [1.5, 2.7, 3.2, 4.9, 5.1]}
df = pd.DataFrame(data)
df['col1_int'] = df['col1'].astype(int)
print(df)
Ausgabe:
col1 col1_int
0 1.5 1
1 2.7 2
2 3.2 3
3 4.9 4
4 5.1 5
Die Einfachheit dieser Methode ist ihr Vorteil, aber ihr unflexibles Rundungsverhalten schränkt ihre Anwendbarkeit ein, wenn andere Rundungsstrategien erforderlich sind.
Nutzen von pd.to_numeric()
für flexible Konvertierung
pd.to_numeric()
bietet mehr Kontrolle und Flexibilität. Obwohl es hauptsächlich für die Konvertierung verschiedener Datentypen in numerische Formate entwickelt wurde, ist es sehr effektiv für Float-zu-Int-Konvertierungen, insbesondere in Kombination mit Rundungsfunktionen.
Beispiel mit Runden:
import pandas as pd
import numpy as np
data = {'col1': [1.5, 2.7, 3.2, 4.9, 5.1, np.nan]}
df = pd.DataFrame(data)
df['col1_int'] = pd.to_numeric(df['col1'], errors='coerce').round().astype(int)
print(df)
Ausgabe:
col1 col1_int
0 1.5 2
1 2.7 3
2 3.2 3
3 4.9 5
4 5.1 5
5 NaN NaN
Hier behandelt errors='coerce'
nicht-numerische Werte elegant, indem es sie in NaN
umwandelt. round()
rundet auf die nächste ganze Zahl, bevor die endgültige astype(int)
-Konvertierung durchgeführt wird.
Fehlerbehandlung und erweitertes Runden
Für eine präzisere Steuerung des Rundens verwenden Sie die Funktionen von NumPy:
np.floor()
: Rundet auf die nächste ganze Zahl ab.np.ceil()
: Rundet auf die nächste ganze Zahl auf.
Denken Sie daran, potenzielle Fehler (wie nicht-numerische Werte) mit dem Parameter errors
in pd.to_numeric()
zu behandeln. Die Wahl von 'coerce'
ersetzt problematische Werte mit NaN
und verhindert Fehler. Alternativ dazu löst 'raise'
eine Ausnahme aus, und 'ignore'
lässt nicht-numerische Werte unberührt.