Pandas converte la stringa in tipo numerico

Suraj Joshi 30 gennaio 2023
  1. Metodo pandas.to_numeric()
  2. Converti i valori stringa di Pandas DataFrame in un tipo numerico usando il metodo pandas.to_numeric()
  3. Converti valori stringa di Pandas DataFrame in tipo numerico con altri caratteri in esso
Pandas converte la stringa in tipo numerico

Questo tutorial spiega come convertire i valori stringa di Pandas DataFrame in tipo numerico usando il metodo pandas.to_numeric().

import pandas as pd

items_df = pd.DataFrame(
    {
        "Id": [302, 504, 708, 103, 343, 565],
        "Name": ["Watch", "Camera", "Phone", "Shoes", "Laptop", "Bed"],
        "Cost": ["300", "400", "350", "100", "1000", "400"],
    }
)

print(items_df)

Produzione:

    Id    Name  Cost
0  302   Watch   300
1  504  Camera   400
2  708   Phone   350
3  103   Shoes   100
4  343  Laptop  1000
5  565     Bed   400

Useremo l’esempio sopra per dimostrare come possiamo cambiare i valori di DataFrame nel tipo numerico.

Metodo pandas.to_numeric()

Sintassi

pandas.to_numeric(arg, errors="raise", downcast=None)

Converte l’argomento passato come arg nel tipo numerico. Per impostazione predefinita, l’arg verrà convertito in int64 o float64. Possiamo impostare il valore del parametro downcast per convertire arg in altri tipi di dati.

Converti i valori stringa di Pandas DataFrame in un tipo numerico usando il metodo pandas.to_numeric()

import pandas as pd

items_df = pd.DataFrame(
    {
        "Id": [302, 504, 708, 103, 343, 565],
        "Name": ["Watch", "Camera", "Phone", "Shoes", "Laptop", "Bed"],
        "Cost": ["300", "400", "350", "100", "1000", "400"],
    }
)

print("The items DataFrame is:")
print(items_df, "\n")

print("Datatype of Cost column before type conversion:")
print(items_df["Cost"].dtypes, "\n")

items_df["Cost"] = pd.to_numeric(items_df["Cost"])
print("Datatype of Cost column after type conversion:")
print(items_df["Cost"].dtypes)

Produzione:

The items DataFrame is:
    Id    Name  Cost
0  302   Watch   300
1  504  Camera   400
2  708   Phone   350
3  103   Shoes   100
4  343  Laptop  1000
5  565     Bed   400 

Datatype of Cost column before type conversion:
object 

Datatype of Cost column after type conversion:
int64

Converte il tipo di dati della colonna Cost di items_df da object a int64.

Converti valori stringa di Pandas DataFrame in tipo numerico con altri caratteri in esso

Se vogliamo convertire una colonna in un tipo numerico con valori con alcuni caratteri, otteniamo un errore che dice ValueError: Unable to parse string. In questi casi, possiamo rimuovere tutti i caratteri non numerici e quindi eseguire la conversione del tipo.

import pandas as pd

items_df = pd.DataFrame(
    {
        "Id": [302, 504, 708, 103, 343, 565],
        "Name": ["Watch", "Camera", "Phone", "Shoes", "Laptop", "Bed"],
        "Cost": ["$300", "$400", "$350", "$100", "$1000", "$400"],
    }
)

print("The items DataFrame is:")
print(items_df, "\n")

print("Datatype of Cost column before type conversion:")
print(items_df["Cost"].dtypes, "\n")

items_df["Cost"] = pd.to_numeric(items_df["Cost"].str.replace("$", ""))
print("Datatype of Cost column after type conversion:")
print(items_df["Cost"].dtypes, "\n")

print("DataFrame after Type Conversion:")
print(items_df)

Produzione:

The items DataFrame is:
    Id    Name   Cost
0  302   Watch   $300
1  504  Camera   $400
2  708   Phone   $350
3  103   Shoes   $100
4  343  Laptop  $1000
5  565     Bed   $400 

Datatype of Cost column before type conversion:
object 

Datatype of Cost column after type conversion:
int64 

DataFrame after Type Conversion:
    Id    Name  Cost
0  302   Watch   300
1  504  Camera   400
2  708   Phone   350
3  103   Shoes   100
4  343  Laptop  1000
5  565     Bed   400

Rimuove il carattere $ allegato ai valori della colonna Cost e quindi converte questi valori nel tipo numerico utilizzando il metodo pandas.to_numeric().

Autore: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Articolo correlato - Pandas Data Type