Jak naprawić błąd w pandach: typeerror: brak danych numerycznych do wykreślenia


Błąd, który możesz napotkać podczas korzystania z pand, to:

 TypeError : no numeric data to plot

Ten błąd występuje, gdy próbujesz wykreślić wartości z ramki DataFrame pandy, ale nie ma wartości liczbowych do wykreślenia.

Ten błąd zwykle występuje, gdy myślisz, że określona kolumna w ramce DataFrame jest liczbowa, ale okazuje się, że jest to inny typ danych.

Poniższy przykład pokazuje, jak w praktyce skorygować ten błąd.

Jak odtworzyć błąd

Załóżmy, że mamy następującą ramkę DataFrame pand:

 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

Załóżmy teraz, że próbujemy utworzyć wykres liniowy dla trzech zmiennych, które naszym zdaniem są numeryczne: punktów, odbić i bloków:

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

ValueError : no numeric data to plot

Występuje błąd, ponieważ żadna z tych kolumn nie jest w rzeczywistości liczbą.

Jak naprawić błąd

Możemy użyć funkcji dtypes , aby sprawdzić, do jakiego typu danych należy każda kolumna w naszej ramce DataFrame:

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

team object
points object
rebound object
blocks object
dtype:object

Widzimy, że żadna z kolumn w DataFrame nie jest liczbowa.

Możemy użyć funkcji .astype() do konwersji określonych kolumn na wartości liczbowe:

 #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)

Możemy następnie ponownie użyć funkcji plot() :

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

Jesteśmy w stanie z powodzeniem stworzyć wykres liniowy dla punktów, odbić i bloków, ponieważ każda zmienna jest teraz numeryczna.

Możemy to sprawdzić ponownie używając funkcji dtypes :

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

team object
float64 points
rebounds float64
blocks float64
dtype:object

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak naprawić inne typowe błędy w Pythonie:

Jak naprawić błąd KeyError w Pandach
Jak naprawić: ValueError: Nie można przekonwertować float NaN na int
Jak naprawić: Błąd wartości: Nie można rozgłaszać argumentów z kształtami

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *