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