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