Как исправить в pandas: typeerror: нет числовых данных для построения графика
Ошибка, с которой вы можете столкнуться при использовании панд:
TypeError : no numeric data to plot
Эта ошибка возникает, когда вы пытаетесь отобразить значения из DataFrame pandas, но числовых значений для построения нет.
Эта ошибка обычно возникает, когда вы думаете, что определенный столбец в DataFrame является числовым, но оказывается, что это другой тип данных.
В следующем примере показано, как исправить эту ошибку на практике.
Как воспроизвести ошибку
Предположим, у нас есть следующий DataFrame pandas:
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
Теперь предположим, что мы пытаемся создать линейный график для трех переменных, которые мы считаем числовыми: точек, отскоков и блоков:
#attempt to create line plot for points, rebounds, and blocks
df[[' points ', ' rebounds ', ' blocks ']]. plot ()
ValueError : no numeric data to plot
Мы получаем сообщение об ошибке, поскольку ни один из этих столбцов на самом деле не является числовым.
Как исправить ошибку
Мы можем использовать функцию dtypes , чтобы узнать, к какому типу данных принадлежит каждый столбец в нашем DataFrame:
#display data type of each column in DataFrame
df. dtypes
team object
points object
rebound object
blocks object
dtype:object
Мы видим, что ни один из столбцов в DataFrame не является числовым.
Мы можем использовать функцию .astype() для преобразования определенных столбцов в числовые значения:
#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)
Затем мы можем повторно использовать функциюplot() :
#create line plot for points, rebounds, and blocks
df[[' points ', ' rebounds ', ' blocks ']]. plot ()
Мы можем успешно создать линейный график для точек, отскоков и блоков, поскольку каждая переменная теперь является числовой.
Мы можем проверить это, снова используя функцию dtypes :
#display data type of each column in DataFrame
df. dtypes
team object
float64 points
rebounds float64
blocks float64
dtype:object
Дополнительные ресурсы
В следующих руководствах объясняется, как исправить другие распространенные ошибки в Python:
Как исправить ошибку KeyError в Pandas
Как исправить: ValueError: невозможно преобразовать число с плавающей запятой NaN в int.
Как исправить: ValueError: операнды не могут быть переданы с помощью фигур.