Maison >développement back-end >Tutoriel Python >Qu'est-ce que la fonction astype() en Python

Qu'est-ce que la fonction astype() en Python

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-09 06:51:46194parcourir

What is astype() function in Python

Comprendre astype() en Python

La fonction astype() est une méthode puissante en Python, principalement utilisée dans la bibliothèque pandas pour convertir une colonne ou un ensemble de données dans un DataFrame ou une série en un type de données spécifique. Il est également disponible dans NumPy pour convertir des éléments de tableau en un type différent.


Utilisation de base de astype()

La fonction astype() est utilisée pour convertir le type de données d'un objet pandas (comme une série ou un DataFrame) ou un tableau NumPy dans un autre type.

Syntaxe pour les pandas :

DataFrame.astype(dtype, copy=True, errors='raise')

Syntaxe pour NumPy :

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

Paramètres clés

1. dtype

Le type de données cible vers lequel vous souhaitez convertir les données. Cela peut être spécifié en utilisant :

  • Un seul type (par exemple, float, int, str).
  • Un dictionnaire mappant les noms de colonnes aux types (pour les DataFrames pandas).

2. copie (pandas et NumPy)

  • Par défaut : Vrai
  • Objectif : s'il faut renvoyer une copie des données originales (si vrai) ou les modifier sur place (si faux).

3. erreurs (pandas uniquement)

  • Options :
    • 'raise' (par défaut) : génère une erreur si la conversion échoue.
    • 'ignore' : ignorer silencieusement les erreurs.

4. commander (NumPy uniquement)

  • Contrôle la disposition de la mémoire du tableau de sortie. Possibilités :
    • 'C' : ordre C-contigu.
    • 'F' : ordre Fortran-contigu.
    • 'A' : utilisez l'ordre Fortran si l'entrée est contiguë à Fortran, sinon l'ordre C.
    • 'K' : correspond à la disposition du tableau d'entrée.

5. casting (NumPy uniquement)

  • Contrôle le comportement de diffusion :
    • 'non' : Aucun casting autorisé.
    • 'equiv' : seules les modifications de l'ordre des octets sont autorisées.
    • « sûr » : seules les conversions qui préservent les valeurs sont autorisées.
    • 'same_kind' : seules les conversions sécurisées ou les conversions au sein d'un genre (par exemple, float -> int) sont autorisées.
    • « dangereux » : toute conversion de données est autorisée.

6. subok (NumPy uniquement)

  • Si True, les sous-classes sont transmises ; si False, le tableau renvoyé sera un tableau de classe de base.

Exemples

1. Conversion de base en 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)

Sortie :

A     int64
B    float64
dtype: object

2. Mappage de dictionnaire pour plusieurs colonnes

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

Sortie :

DataFrame.astype(dtype, copy=True, errors='raise')

3. Utiliser error='ignore'

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

Sortie :

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)
  • La conversion échoue pour « deux », mais aucune erreur n'est générée.

4. Utiliser astype() dans NumPy

A     int64
B    float64
dtype: object

Sortie :

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

5. Casting dans NumPy avec casting='safe'

A    float64
B      int64
dtype: object

Sortie :

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)

6. Gestion des types non numériques dans les pandas

      A    B
0     1  1.5
1   two  2.5
2     3  3.5

Sortie :

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)

7. Optimisation de la mémoire à l'aide de astype()

Code :

[1 2 3]

Sortie :

Avant l'optimisation (utilisation de la mémoire d'origine) :

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)

Après optimisation (utilisation optimisée de la mémoire) :

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

Explication :

  • Utilisation de la mémoire d'origine :

    • La colonne A comme int64 utilise 24 octets (8 octets par élément × 3 éléments).
    • La colonne B comme float64 utilise 24 octets (8 octets par élément × 3 éléments).
  • Utilisation optimisée de la mémoire :

    • La colonne A comme int8 utilise 3 octets (1 octet par élément × 3 éléments).
    • La colonne B comme float32 utilise 12 octets (4 octets par élément × 3 éléments).

L'utilisation de la mémoire est considérablement réduite en utilisant des types de données plus petits, en particulier lorsque vous travaillez avec de grands ensembles de données.

Pièges courants

  1. Conversion invalide : conversion de types incompatibles (par exemple, des chaînes en types numériques lorsque des valeurs non numériques existent).
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)
  1. Erreurs silencieuses avec erreurs='ignore' : à utiliser avec prudence car la conversion peut échouer silencieusement.

  2. Perte de précision : Conversion d'un type de précision supérieure (par exemple, float64) à un type de précision inférieure (par exemple, float32).


Exemples avancés

1. Casting de types de données complexes

A    datetime64[ns]
B             bool
dtype: object

Sortie :

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())

2. Utilisation de astype() dans NumPy pour les tableaux structurés

Index    128
A         24
B         24
dtype: int64

Sortie :

DataFrame.astype(dtype, copy=True, errors='raise')

Résumé

La fonction astype() est un outil polyvalent pour la conversion de types de données dans pandas et NumPy. Il permet un contrôle précis du comportement de diffusion, de l'optimisation de la mémoire et de la gestion des erreurs. Une utilisation appropriée de ses paramètres, tels que les erreurs dans les pandas et le casting dans NumPy, garantit des transformations de types de données robustes et efficaces.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn