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