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

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *