Pandas pd.to-numeric()-Funktion

Pandas 通用函数Pandas Häufige Funktionen


pd.to_numeric()wird in der Pandas-Bibliothek verwendet, umDaten in numerische Typen umzuwandelnFunktion. Es kann Daten in verschiedenen Formaten (wie Strings, Spalten mit gemischten Typen) in numerische Typen wie Ganzzahlen und Gleitkommazahlen umwandeln.

Dies ist eine häufig verwendete Funktion bei der Datenbereinigung, insbesondere bei der Verarbeitung von Daten, die aus Dateien oder Datenbanken importiert wurden, wo es oft notwendig ist, Spalten umzuwandeln, die numerisch aussehen, aber tatsächlich Strings sind.

Wortdefinition: to_numericEs bedeutet "in numerische Typen umwandeln", das heißt, Daten von anderen Typen in numerische Typen umzuwandeln.


Grundlegende Syntax und Parameter

pd.to_numeric()ist eine Top-Level-Funktion der Pandas-Bibliothek, die verwendet wird, um Eingaben in numerische Typen umzuwandeln.

Syntaxformat

pd.to_numeric(arg, errors='raise', downcast=None)

Parameterbeschreibung

  • Parameter: arg
    • Typ: Series, Liste, Array oder wörterbuchähnliches Objekt.
    • Beschreibung: Die Daten, die in numerische Typen umgewandelt werden sollen. Normalerweise eine Series.
  • Parameter: errors
    • Typ: String ('raise', 'coerce', 'ignore').
    • Beschreibung: Fehlerbehandlungsmodus.'raise'(Standard) Löst eine Ausnahme aus, wenn ein Wert auftritt, der nicht umgewandelt werden kann;'coerce'Setzt nicht umwandelbare Werte auf NaN;'ignore'Ignoriert Fehler und gibt die Originaldaten zurück.
  • Parameter: downcast
    • Typ: String ('integer', 'signed', 'unsigned', 'float') oder None.

Funktionsbeschreibung

  • Rückgabewert: Gibt eine numerische Series zurück.
  • Wirkung: Konvertiert den Typ der Eingabedaten in numerisch (int64 oder float64).

Beispiele

Lass uns das anhand einer Reihe von Beispielen von einfach bis komplex gründlich meistern,pd.to_numeric()die Verwendung von.

Beispiel 1: Grundlegende Verwendung - Konvertieren von Strings in numerische Werte

Beispiel

import pandas as pd

# 1. Erstelle eine Series mit numerischen Strings
s = pd.Series(['10', '20', '30', '40', '50'])

print("=== Original Series (Typ:", s.dtype, ")===")
print(s)

# 2. Verwende pd.to_numeric(), um in den numerischen Typ zu konvertieren
result = pd.to_numeric(s)
print("\n=== Nach der Konvertierung mit pd.to_numeric() (Typ:", result.dtype, ")===")
print(result)

Erwartete Ausgabe:

=== 原始 Series(类型: object )===
0    10
1    20
2    30
3    40
5    50
dtype: object

=== pd.to_numeric() 转换后(类型: int64 )===
0    10
1    20
2    30
3    40
4    50
dtype: int64

Codeanalyse:

  1. Die ursprünglichen Daten haben den Typ String (object), daher können keine numerischen Operationen durchgeführt werden.
  2. pd.to_numeric()Nach der Konvertierung in den Integer-Typ (int64) können mathematische Operationen durchgeführt werden.

Beispiel 2: Umgang mit Zeichenketten, die nicht-numerische Werte enthalten

VerwendungerrorsDer Parameter kann flexibel mit Werten umgehen, die nicht konvertiert werden können.

Beispiel

import pandas as pd
import numpy as np

# 1. Erstellen einer Series, die nicht-numerische Zeichenketten enthält
s = pd.Series(['10', '20', 'abc', '40', 'example'])

print("=== Series mit nicht-numerischen Werten ===")
print(s)

# 2. errors='raise' (Standard) - löst eine Ausnahme aus, wenn ein nicht konvertierbarer Wert auftritt
print("\n=== errors='raise' (Standard) ===)
try:
    result = pd.to_numeric(s, errors='raise')
except Exception as e:
    print(f"Ausnahme: {e}")

# 3. errors='coerce' - nicht konvertierbare Werte auf NaN setzen
print("\n=== errors='coerce' ===")
result_coerce = pd.to_numeric(s, errors='coerce')
print(result_coerce)

# 4. errors='ignore' – Fehler ignorieren und die Originaldaten zurückgeben
print("\n=== errors='ignore' ===")
result_ignore = pd.to_numeric(s, errors='ignore')
print(result_ignore)
print(f"Type: {result_ignore.dtype}")

Erwartete Ausgabe:

=== 包含非数值的 Series ===
0      10
1      20
2     abc
3      40
4    example
包含了 'abc', 'example' 等无法转换的字符串

=== errors='raise'(默认)===
异常: Unable to convert string to float explicitly

=== errors='coerce' ===
0    10.0
1    20.0
2     NaN
3    40.0
4     NaN
dtype: float64

=== errors='ignore' ===
0      10
1      20
2     abc
3      40
4    example
Type: object

Codeanalyse:

  • errors='coerce'Sehr praktisch: Es ersetzt nicht konvertierbare Werte durch NaN (fehlende Werte), während konvertierbare Werte beibehalten werden.
  • errors='ignore'Behält die Originaldaten unverändert bei, geeignet, wenn Sie die Konvertierung nur ausprobieren möchten, ohne die Daten zu ändern.

Beispiel 3: Umgang mit gemischten numerischen Werten und fehlenden Werten

In realen Daten ist es oft notwendig, Spalten zu behandeln, die eine Mischung aus fehlenden Werten und numerischen Werten enthalten.

Beispiel

import pandas as pd
import numpy as np

# 1. Eine Series erstellen, die fehlende Werte und numerische Strings enthält
s = pd.Series(['100', '200', None, 'N/A', '400', '', '500'])

print("=== Series mit fehlenden Werten und nicht-numerischen Werten ===")
print(s)

# 2. Mit errors='coerce' konvertieren
print("\n=== Konvertiert mit errors='coerce' ===)
result = pd.to_numeric(s, errors='coerce')
print(result)

# 3. Prüfen, welche Werte in NaN konvertiert wurden
print("\n=== NaN-Werte identifizieren ===)
print(f"NaN-Positionen: {result.isna().tolist()}")

# 4. NaN mit 0 füllen oder löschen
print("\n=== NaN mit 0 füllen ===)
print(result.fillna(0))

Erwartete Ausgabe:

=== 包含缺失值和数值字符串的 Series ===
0      100
1      200
2     None
3    N/A
4      400
5       (空字符串)
6      字符串 '500'
dtype: object

=== 使用 errors='coerce' 转换 ===
0    100.0
1    200.0
 даль
2        NaN
3.       NaN
4     400.0
5        NaN
6     NaN
dtype: float64

Codeanalyse:

  • errors='coerce'Es kann None, leere Zeichenfolgen, N/A und andere Formen, die fehlende Werte darstellen, verarbeiten und sie alle einheitlich in NaN umwandeln.
  • Der konvertierte Typ wird float64 (weil NaN dargestellt werden muss).

Beispiel 4: Verwenden des downcast-Parameters zur Speicheroptimierung

Bei großen Datensätzen können Siedowncastden Parameter verwenden, um den Speicherverbrauch zu reduzieren.

Beispiel

import pandas as pd
import numpy as np

# 1. Eine Series mit großen Ganzzahlen erstellen
s = pd.Series([1, 2, 3, 4, 5] * 100000)

print("=== Ursprünglicher Typ:", s.dtype)
print("=== Ursprünglicher Speicher:", s.memory_usage(deep=True), "bytes")

# 2. In numerischen Wert umwandeln, ohne downcast anzugeben
result_default = pd.to_numeric(s)
print("\n=== Typ nach Standardkonvertierung:", result_default.dtype)
print("=== Standard-Speicher:", result_default.memory_usage(deep=True), "bytes")

# 3. Downcast auf einen kleineren Ganzzahltyp
result_signed = pd.to_numeric(s, downcast='signed')
print("\n=== downcast='signed' Typ:", result_signed.dtype)
print("=== downcast='signed' Speicher:", result_signed.memory_usage(deep=True), "bytes")

# 4. Downcast zu Gleitkommazahlen
float_data = pd.Series([1.5, 2.5, 3.5] * 100000)
result_float = pd.to_numeric(float_data, downcast='float')
print("\n=== downcast='float' Typ:", result_float.dtype)
print("=== downcast='float' Speicher:", result_float.memory_usage(deep=True), "bytes")

Erwartete Ausgabe:

=== 原始类型: int64
=== 原始内存: 2800000 bytes

=== 默认转换后类型: int64
内存节省:2.8 MB -> 1.4 MB
=== downcast='signed' 类型: int8/int16/int32
内存节省约 50%

=== downcast='float' 类型: float32
内存节省约 50%

Codeanalyse:

  • Für große Datensätze,downcastEs kann den Speicherverbrauch erheblich reduzieren.
  • downcast='signed'Versucht, Ganzzahlen in den kleinsten vorzeichenbehafteten Ganzzahltyp zu konvertieren.
  • downcast='float'Konvertiert Gleitkommazahlen von float64 in float32.

Tipp:Bei der Verarbeitung großer Datenmengen,pd.to_numeric()in Kombinationerrors='coerce'unddowncastkann der Parameter gemischte Daten effizient in numerische Typen umwandeln und den Speicher optimieren.

Pandas 常用函数Pandas Häufige Funktionen

Andere Erweiterungen