Як виправити в pandas: typeerror: немає числових даних для побудови


Помилка, з якою ви можете зіткнутися під час використання панд:

 TypeError : no numeric data to plot

Ця помилка виникає, коли ви намагаєтеся побудувати значення з pandas DataFrame, але немає числових значень для побудови.

Ця помилка зазвичай виникає, коли ви вважаєте, що певний стовпець у DataFrame є числовим, але виявляється, що це інший тип даних.

У наступному прикладі показано, як виправити цю помилку на практиці.

Як відтворити помилку

Припустімо, що у нас є наступні pandas DataFrame:

 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: неможливо перетворити float NaN на int
Як виправити: ValueError: операнди не можна транслювати з фігурами

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *