Heim > Backend-Entwicklung > Python-Tutorial > Was ist die Funktion astype() in Python?

Was ist die Funktion astype() in Python?

Mary-Kate Olsen
Freigeben: 2025-01-09 06:51:46
Original
194 Leute haben es durchsucht

What is astype() function in Python

Astype() in Python verstehen

Die Funktion astype() ist eine leistungsstarke Methode in Python, die hauptsächlich in der Bibliothek pandas zum Konvertieren einer Spalte oder eines Datensatzes in einem DataFrame oder einer Serie in einen bestimmten Datentyp verwendet wird. Es ist auch in NumPy verfügbar, um Array-Elemente in einen anderen Typ umzuwandeln.


Grundlegende Verwendung von astype()

Die Funktion astype() wird verwendet, um den Datentyp eines Pandas-Objekts (wie einer Serie oder eines DataFrame) oder eines NumPy-Arrays in einen anderen Typ umzuwandeln.

Syntax für Pandas:

DataFrame.astype(dtype, copy=True, errors='raise')
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Syntax für NumPy:

ndarray.astype(dtype, order='K', casting='unsafe', subok=True, copy=True)
Nach dem Login kopieren
Nach dem Login kopieren

Schlüsselparameter

1. dtype

Der Zieldatentyp, in den Sie die Daten konvertieren möchten. Dies kann angegeben werden mit:

  • Ein einzelner Typ (z. B. float, int, str).
  • Ein Wörterbuch, das Spaltennamen Typen zuordnet (für Pandas DataFrames).

2. kopieren (Pandas und NumPy)

  • Standard: True
  • Zweck: Ob eine Kopie der Originaldaten zurückgegeben werden soll (falls True) oder an Ort und Stelle geändert werden soll (falls False).

3. Fehler (nur Pandas)

  • Optionen:
    • 'raise' (Standard): Löst einen Fehler aus, wenn die Konvertierung fehlschlägt.
    • 'ignore': Fehler stillschweigend ignorieren.

4. order (nur NumPy)

  • Steuert das Speicherlayout des Ausgabearrays. Optionen:
    • 'C': C-zusammenhängende Reihenfolge.
    • 'F': Fortran-zusammenhängende Reihenfolge.
    • 'A': Fortran-Reihenfolge verwenden, wenn die Eingabe Fortran-zusammenhängend ist, andernfalls C-Reihenfolge.
    • 'K': Entspricht dem Layout des Eingabearrays.

5. Casting (nur NumPy)

  • Steuert das Casting-Verhalten:
    • 'nein': Kein Casting erlaubt.
    • 'equiv': Nur Änderungen der Byte-Reihenfolge zulässig.
    • 'sicher': Nur Umwandlungen, die Werte beibehalten, sind zulässig.
    • 'same_kind': Nur sichere Casts oder Casts innerhalb einer Art (z. B. float -> int) sind erlaubt.
    • 'unsicher': Jede Datenkonvertierung ist zulässig.

6. subok (nur NumPy)

  • Wenn True, werden Unterklassen durchlaufen; Bei False ist das zurückgegebene Array ein Basisklassen-Array.

Beispiele

1. Grundlegende Konvertierung in Pandas

import pandas as pd

# Example DataFrame
df = pd.DataFrame({'A': ['1', '2', '3'], 'B': [1.5, 2.5, 3.5]})

# Convert column 'A' to integer
df['A'] = df['A'].astype(int)
print(df.dtypes)
Nach dem Login kopieren
Nach dem Login kopieren

Ausgabe:

A     int64
B    float64
dtype: object
Nach dem Login kopieren
Nach dem Login kopieren

2. Wörterbuchzuordnung für mehrere Spalten

# Convert multiple columns
df = df.astype({'A': float, 'B': int})
print(df.dtypes)
Nach dem Login kopieren
Nach dem Login kopieren

Ausgabe:

DataFrame.astype(dtype, copy=True, errors='raise')
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

3. Verwenden vonerrors='ignore'

ndarray.astype(dtype, order='K', casting='unsafe', subok=True, copy=True)
Nach dem Login kopieren
Nach dem Login kopieren

Ausgabe:

import pandas as pd

# Example DataFrame
df = pd.DataFrame({'A': ['1', '2', '3'], 'B': [1.5, 2.5, 3.5]})

# Convert column 'A' to integer
df['A'] = df['A'].astype(int)
print(df.dtypes)
Nach dem Login kopieren
Nach dem Login kopieren
  • Die Konvertierung schlägt für „zwei“ fehl, es wird jedoch kein Fehler ausgegeben.

4. Verwendung von astype() in NumPy

A     int64
B    float64
dtype: object
Nach dem Login kopieren
Nach dem Login kopieren

Ausgabe:

# Convert multiple columns
df = df.astype({'A': float, 'B': int})
print(df.dtypes)
Nach dem Login kopieren
Nach dem Login kopieren

5. Casting in NumPy mit casting='safe'

A    float64
B      int64
dtype: object
Nach dem Login kopieren

Ausgabe:

df = pd.DataFrame({'A': ['1', 'two', '3'], 'B': [1.5, 2.5, 3.5]})

# Attempt conversion with errors='ignore'
df['A'] = df['A'].astype(int, errors='ignore')
print(df)
Nach dem Login kopieren

6. Umgang mit nicht numerischen Typen in Pandas

      A    B
0     1  1.5
1   two  2.5
2     3  3.5
Nach dem Login kopieren

Ausgabe:

import numpy as np

# Example array
arr = np.array([1.1, 2.2, 3.3])

# Convert to integer
arr_int = arr.astype(int)
print(arr_int)
Nach dem Login kopieren

7. Speicheroptimierung mit astype()

Code:

[1 2 3]
Nach dem Login kopieren

Ausgabe:

Vor der Optimierung (ursprüngliche Speichernutzung):

arr = np.array([1.1, 2.2, 3.3])

# Attempt an unsafe conversion
try:
    arr_str = arr.astype(str, casting='safe')
except TypeError as e:
    print(e)
Nach dem Login kopieren

Nach der Optimierung (optimierte Speichernutzung):

Cannot cast array data from dtype('float64') to dtype('<U32') according to the rule 'safe'
Nach dem Login kopieren

Erklärung:

  • Ursprüngliche Speichernutzung:

    • Spalte A als int64 verwendet 24 Bytes (8 Bytes pro Element × 3 Elemente).
    • Spalte B als float64 verwendet 24 Bytes (8 Bytes pro Element × 3 Elemente).
  • Optimierte Speichernutzung:

    • Spalte A als int8 verwendet 3 Bytes (1 Byte pro Element × 3 Elemente).
    • Spalte B als float32 verwendet 12 Bytes (4 Bytes pro Element × 3 Elemente).

Der Speicherverbrauch wird durch die Verwendung kleinerer Datentypen erheblich reduziert, insbesondere bei der Arbeit mit großen Datenmengen.

Häufige Fallstricke

  1. Ungültige Konvertierung: Konvertieren inkompatibler Typen (z. B. Zeichenfolgen in numerische Typen, wenn nicht numerische Werte vorhanden sind).
df = pd.DataFrame({'A': ['2022-01-01', '2023-01-01'], 'B': ['True', 'False']})

# Convert to datetime and boolean
df['A'] = pd.to_datetime(df['A'])
df['B'] = df['B'].astype(bool)
print(df.dtypes)
Nach dem Login kopieren
  1. Stille Fehler mit „errors='ignore“: Mit Vorsicht verwenden, da die Konvertierung stillschweigend fehlschlagen kann.

  2. Präzisionsverlust: Konvertierung von einem Typ mit höherer Genauigkeit (z. B. float64) in einen Typ mit niedrigerer Genauigkeit (z. B. float32).


Erweiterte Beispiele

1. Komplexe Datentypumwandlung

A    datetime64[ns]
B             bool
dtype: object
Nach dem Login kopieren

Ausgabe:

import pandas as pd

# Original DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [1.1, 2.2, 3.3]})
print("Original memory usage:")
print(df.memory_usage())

# Downcast numerical types
df['A'] = df['A'].astype('int8')
df['B'] = df['B'].astype('float32')

print("Optimized memory usage:")
print(df.memory_usage())
Nach dem Login kopieren

2. Verwendung von astype() in NumPy für strukturierte Arrays

Index    128
A         24
B         24
dtype: int64
Nach dem Login kopieren

Ausgabe:

DataFrame.astype(dtype, copy=True, errors='raise')
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Zusammenfassung

Die Funktion astype() ist ein vielseitiges Werkzeug zur Datentypkonvertierung sowohl in Pandas als auch in NumPy. Es ermöglicht eine differenzierte Steuerung des Casting-Verhaltens, der Speicheroptimierung und der Fehlerbehandlung. Die ordnungsgemäße Verwendung seiner Parameter, wie Fehler in Pandas und Umwandlung in NumPy, gewährleistet robuste und effiziente Datentyptransformationen.

Das obige ist der detaillierte Inhalt vonWas ist die Funktion astype() in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage