Oplossing in panda's: typeerror: geen numerieke gegevens om te plotten
Een fout die u kunt tegenkomen bij het gebruik van panda’s is:
TypeError : no numeric data to plot
Deze fout treedt op wanneer u probeert waarden uit een Panda DataFrame te plotten, maar er zijn geen numerieke waarden om te plotten.
Deze fout treedt meestal op als u denkt dat een bepaalde kolom in het DataFrame numeriek is, maar het een ander gegevenstype blijkt te zijn.
Het volgende voorbeeld laat zien hoe u deze fout in de praktijk kunt corrigeren.
Hoe de fout te reproduceren
Stel dat we de volgende panda’s DataFrame hebben:
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
Stel nu dat we proberen een lineair diagram te maken voor de drie variabelen waarvan we denken dat ze numeriek zijn: punten, stuiters en blokken:
#attempt to create line plot for points, rebounds, and blocks
df[[' points ', ' rebounds ', ' blocks ']]. plot ()
ValueError : no numeric data to plot
We krijgen een foutmelding omdat geen van deze kolommen daadwerkelijk numeriek is.
Hoe u de fout kunt oplossen
We kunnen de functie dtypes gebruiken om te zien tot welk gegevenstype elke kolom in ons DataFrame behoort:
#display data type of each column in DataFrame
df. dtypes
team object
points object
rebound object
blocks object
dtype:object
We kunnen zien dat geen van de kolommen in het DataFrame numeriek is.
We kunnen de functie .astype() gebruiken om specifieke kolommen naar numerieke waarden te converteren:
#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)
We kunnen dan de plot() -functie hergebruiken:
#create line plot for points, rebounds, and blocks
df[[' points ', ' rebounds ', ' blocks ']]. plot ()
We zijn in staat om met succes een lineair diagram voor punten, bounces en blokken te maken, omdat elke variabele nu numeriek is.
We kunnen dit controleren door de functie dtypes opnieuw te gebruiken:
#display data type of each column in DataFrame
df. dtypes
team object
float64 points
rebounds float64
blocks float64
dtype:object
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in Python kunt oplossen:
Hoe KeyError in Panda’s te repareren
Oplossing: ValueError: Kan float NaN niet naar int converteren
Oplossing: ValueError: Operanden konden niet worden uitgezonden met vormen