Fonction pd.to-numeric() de Pandas

Pandas 通用函数Fonctions courantes de Pandas


pd.to_numeric()est utilisée dans la bibliothèque Pandas pourconvertir des données en types numériquesfonction. Elle peut convertir des données de divers formats (comme des chaînes de caractères, des colonnes de types mixtes) en types numériques tels que des entiers et des flottants.

Il s'agit d'une fonction couramment utilisée dans le nettoyage des données, en particulier lors du traitement de données importées depuis des fichiers ou des bases de données, où il est souvent nécessaire de convertir des colonnes qui semblent numériques mais qui sont en réalité des chaînes de caractères.

Définition du mot: to_numericCela signifie « convertir en numérique », c'est-à-dire convertir des données d'autres types en types numériques.


Syntaxe de base et paramètres

pd.to_numeric()est une fonction de premier niveau de la bibliothèque Pandas, utilisée pour convertir l'entrée en types numériques.

Format de syntaxe

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

Description du paramètre

  • Paramètre: arg
    • Type : Series, list, array ou objet de type dictionnaire.
    • Description : Les données à convertir en types numériques. Généralement une Series.
  • Paramètre: errors
    • Type : chaîne de caractères ('raise', 'coerce', 'ignore').
    • Description : Mode de gestion des erreurs.'raise'(Par défaut) Lève une exception lorsqu'une valeur qui ne peut pas être convertie est rencontrée ;'coerce'Définit les valeurs non convertibles sur NaN ;'ignore'Ignore les erreurs et renvoie les données d'origine.
  • Paramètre: downcast
    • Type : String ('integer', 'signed', 'unsigned', 'float') ou None.

Description de la fonction

  • Valeur de retour: Renvoie une Series numérique.
  • Effet: Convertit le type des données d'entrée en numérique (int64 ou float64).

Exemples

Maîtrisons parfaitement à travers une série d'exemples, du simple au complexe,pd.to_numeric()l'utilisation de.

Exemple 1 : Utilisation de base - Conversion de chaînes en valeurs numériques

Exemple

import pandas as pd

# 1. Créez une Series contenant des chaînes numériques
s = pd.Series(['10', '20', '30', '40', '50'])

print("=== Series originale (type :", s.dtype, ")===")
print(s)

# 2. Utilisez pd.to_numeric() pour convertir en type numérique
result = pd.to_numeric(s)
print("\n=== Après conversion avec pd.to_numeric() (type :", result.dtype, ")===")
print(result)

Sortie attendue :

=== 原始 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

Analyse du code :

  1. Les données d'origine sont de type chaîne de caractères (object), les opérations numériques ne peuvent donc pas être effectuées.
  2. pd.to_numeric()Après l'avoir converti en type entier (int64), des opérations mathématiques peuvent être effectuées.

Exemple 2 : Gestion des chaînes contenant des valeurs non numériques

Utilisationerrorsle paramètre peut gérer de manière flexible les valeurs qui ne peuvent pas être converties.

Exemple

import pandas as pd
import numpy as np

# 1. Créer une Series contenant des chaînes non numériques
s = pd.Series(['10', '20', 'abc', '40', 'example'])

print("=== Series contenant des valeurs non numériques ===")
print(s)

# 2. errors='raise' (par défaut) - lève une exception lorsqu'il rencontre une valeur non convertible
print("\n=== errors='raise' (par défaut) ===)
try:
    result = pd.to_numeric(s, errors='raise')
except Exception as e:
    print(f"Exception : {e}")

# 3. errors='coerce' - remplacer les valeurs non convertibles par NaN
print("\n=== errors='coerce' ===")
result_coerce = pd.to_numeric(s, errors='coerce')
print(result_coerce)

# 4. errors='ignore' - ignorer les erreurs et renvoyer les données d'origine
print("\n=== errors='ignore' ===")
result_ignore = pd.to_numeric(s, errors='ignore')
print(result_ignore)
print(f"Type : {result_ignore.dtype}")

Sortie attendue :

=== 包含非数值的 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

Analyse du code :

  • errors='coerce'Très pratique : il remplace les valeurs non convertibles par NaN (valeurs manquantes) tout en conservant les valeurs convertibles.
  • errors='ignore'Conserve les données d'origine inchangées, adapté lorsque vous souhaitez seulement essayer la conversion sans modifier les données.

Exemple 3 : Traitement des valeurs numériques mixtes et des valeurs manquantes

Dans des données réelles, il est souvent nécessaire de traiter des colonnes qui contiennent un mélange de valeurs manquantes et de valeurs numériques.

Exemple

import pandas as pd
import numpy as np

# 1. Créer une Series contenant des valeurs manquantes et des chaînes numériques
s = pd.Series(['100', '200', None, 'N/A', '400', '', '500'])

print("=== Series contenant des valeurs manquantes et des valeurs non numériques ===")
print(s)

# 2. Convertir en utilisant errors='coerce'
print("\n=== Converti en utilisant errors='coerce' ===)
result = pd.to_numeric(s, errors='coerce')
print(result)

# 3. Vérifier quelles valeurs ont été converties en NaN
print("\n=== Identification des valeurs NaN ===)
print(f"Positions des NaN : {result.isna().tolist()}")

# 4. Remplir les NaN avec 0 ou supprimer
print("\n=== Remplir les NaN avec 0 ===)
print(result.fillna(0))

Sortie attendue :

=== 包含缺失值和数值字符串的 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

Analyse du code :

  • errors='coerce'Il peut gérer None, les chaînes vides, N/A et d'autres formes représentant des valeurs manquantes, en les convertissant toutes uniformément en NaN.
  • Le type converti devient float64 (car NaN doit être représenté).

Exemple 4 : Utilisation du paramètre downcast pour optimiser la mémoire

Pour les grands ensembles de données, vous pouvez utiliserdowncastle paramètre pour réduire l'utilisation de la mémoire.

Exemple

import pandas as pd
import numpy as np

# 1. Créer une Series de grands entiers
s = pd.Series([1, 2, 3, 4, 5] * 100000)

print("=== Type d'origine :", s.dtype)
print("=== Mémoire d'origine :", s.memory_usage(deep=True), "bytes")

# 2. Convertir en numérique sans spécifier de downcast
result_default = pd.to_numeric(s)
print("\n=== Type après conversion par défaut :", result_default.dtype)
print("=== Mémoire par défaut :", result_default.memory_usage(deep=True), "bytes")

# 3. Downcast vers un type entier plus petit
result_signed = pd.to_numeric(s, downcast='signed')
print("\n=== type downcast='signed' :", result_signed.dtype)
print("=== mémoire downcast='signed' :", result_signed.memory_usage(deep=True), "bytes")

# 4. Downcast vers des nombres à virgule flottante
float_data = pd.Series([1.5, 2.5, 3.5] * 100000)
result_float = pd.to_numeric(float_data, downcast='float')
print("\n=== downcast='float' type:", result_float.dtype)
print("=== downcast='float' mémoire :", result_float.memory_usage(deep=True), "bytes")

Sortie attendue :

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

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

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

Analyse du code :

  • Pour les jeux de données volumineux,downcastcela peut réduire considérablement l'utilisation de la mémoire.
  • downcast='signed'Tente de convertir les entiers vers le plus petit type d'entier signé.
  • downcast='float'Convertit les nombres à virgule flottante de float64 en float32.

Astuce :Lors du traitement de données à grande échelle,pd.to_numeric()en combinanterrors='coerce'etdowncastle paramètre peut convertir efficacement des données mixtes en types numériques et optimiser la mémoire.

Pandas 常用函数Fonctions courantes de Pandas

Autres extensions