Como corrigir no pandas: typeerror: nenhum dado numérico para plotar
Um erro que você pode encontrar ao usar pandas é:
TypeError : no numeric data to plot
Este erro ocorre quando você tenta plotar valores de um DataFrame do pandas, mas não há valores numéricos para plotar.
Este erro geralmente ocorre quando você pensa que uma determinada coluna no DataFrame é numérica, mas na verdade é um tipo de dados diferente.
O exemplo a seguir mostra como corrigir esse erro na prática.
Como reproduzir o erro
Suponha que temos o seguinte DataFrame do 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
Agora suponha que tentamos criar um gráfico linear para as três variáveis que consideramos numéricas: pontos, rejeições e blocos:
#attempt to create line plot for points, rebounds, and blocks
df[[' points ', ' rebounds ', ' blocks ']]. plot ()
ValueError : no numeric data to plot
Estamos recebendo um erro porque nenhuma dessas colunas é realmente numérica.
Como corrigir o erro
Podemos usar a função dtypes para ver a qual tipo de dados cada coluna em nosso DataFrame pertence:
#display data type of each column in DataFrame
df. dtypes
team object
points object
rebound object
blocks object
dtype:object
Podemos ver que nenhuma das colunas do DataFrame é numérica.
Podemos usar a função .astype() para converter colunas específicas em valores numéricos:
#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)
Podemos então reutilizar a função plot() :
#create line plot for points, rebounds, and blocks
df[[' points ', ' rebounds ', ' blocks ']]. plot ()
Somos capazes de criar com sucesso um gráfico linear para pontos, saltos e blocos porque cada variável agora é numérica.
Podemos verificar isso usando a função dtypes novamente:
#display data type of each column in DataFrame
df. dtypes
team object
float64 points
rebounds float64
blocks float64
dtype:object
Recursos adicionais
Os tutoriais a seguir explicam como corrigir outros erros comuns em Python:
Como corrigir KeyError em Pandas
Como corrigir: ValueError: não é possível converter float NaN em int
Como corrigir: ValueError: os operandos não puderam ser transmitidos com formas