Как исправить в 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: операнды не могут быть переданы с помощью фигур.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *