Come risolvere il problema in panda: typeerror: nessun dato numerico da tracciare


Un errore che potresti riscontrare quando usi i panda è:

 TypeError : no numeric data to plot

Questo errore si verifica quando si tenta di tracciare valori da un DataFrame panda, ma non ci sono valori numerici da tracciare.

Questo errore si verifica in genere quando si ritiene che una determinata colonna nel DataFrame sia numerica, ma risulta essere un tipo di dati diverso.

L’esempio seguente mostra come correggere questo errore nella pratica.

Come riprodurre l’errore

Supponiamo di avere i seguenti panda DataFrame:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'B', 'B', 'B'],
                   ' points ': ['5', '7', '7', '9', '12'],
                   ' rebounds ': ['11', '8', '10', '6', '6'],
                   ' blocks ': ['4', '7', '7', '6', '5']})

#view DataFrame
df

	team points rebound blocks
0 A 5 11 4
1 To 7 8 7
2 B 7 10 7
3 B 9 6 6
4 B 12 6 5

Supponiamo ora di provare a creare un grafico lineare per le tre variabili che riteniamo numeriche: punti, rimbalzi e blocchi:

 #attempt to create line plot for points, rebounds, and blocks
df[[' points ', ' rebounds ', ' blocks ']]. plot ()

ValueError : no numeric data to plot

Riceviamo un errore perché nessuna di queste colonne è effettivamente numerica.

Come correggere l’errore

Possiamo usare la funzione dtypes per vedere a quale tipo di dati appartiene ciascuna colonna nel nostro DataFrame:

 #display data type of each column in DataFrame
df. dtypes

team object
points object
rebound object
blocks object
dtype:object

Possiamo vedere che nessuna delle colonne nel DataFrame è numerica.

Possiamo usare la funzione .astype() per convertire colonne specifiche in valori numerici:

 #convert points, rebounds, and blocks columns to numeric
df[' points ']=df[' points ']. astype (float)
df[' rebounds ']=df[' rebounds ']. astype (float)
df[' blocks ']=df[' blocks ']. astype (float)

Possiamo quindi riutilizzare la funzione plot() :

 #create line plot for points, rebounds, and blocks
df[[' points ', ' rebounds ', ' blocks ']]. plot () 

Siamo in grado di creare con successo un grafico lineare per punti, rimbalzi e blocchi perché ogni variabile ora è numerica.

Possiamo verificarlo utilizzando nuovamente la funzione dtypes :

 #display data type of each column in DataFrame
df. dtypes

team object
float64 points
rebounds float64
blocks float64
dtype:object

Risorse addizionali

I seguenti tutorial spiegano come correggere altri errori comuni in Python:

Come correggere l’errore chiave nei Panda
Come risolvere il problema: ValueError: impossibile convertire float NaN in int
Come risolvere il problema: ValueError: non è stato possibile trasmettere gli operandi con le forme

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *