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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert