Cómo solucionarlo: TypeError: no hay datos numéricos para trazar

En este artículo, corregiremos el error: TypeError: no hay datos numéricos para trazar

Casos de ocurrencia de este error:

Python3

# importing pandas
import pandas as pd
# importing numpy
import numpy as np
import matplotlib.pyplot as plt
  
petal_length = ['3.3', '3.5', '4.0', '4.5',
                '4.6', '5.0', '5.5', '6.0', 
                '6.5', '7.0']
petal_width = ['3.6', '3.8', '4.4', '6.6',
               '6.8', '7.0', '7.5', '8.0', 
               '8.5', '8.9']
  
  
df = pd.DataFrame({'petal_length(cm)': petal_length,
                   'petal_width(cm)': petal_width})
df.plot(x='petal_length(cm)', y='petal_width(cm)')
plt.show()

Producción:

TypeError: no numeric data to plot

Motivo del error:

El trazado solo se puede realizar en datos numéricos cuando trazamos los datos con un tipo de datos diferente al de los datos numéricos que genera este error. Para saber si los tipos de datos son numéricos o no podemos saberlo usando la función dtypes() .

print(df.dtypes)

Los datos que usamos para graficar deben ser numéricos.

Arreglando el error:

Este error se puede solucionar convirtiendo los datos que se trazarán en datos numéricos. Para convertir los datos a datos numéricos podemos usar las funciones astype() o to_numeric().

Método 1: Usar la función astype()

Sintaxis:

df['column_name']= df['column_name'].astype(data_type)

donde, df es el marco de datos de entrada

Ejemplo:

Python3

# importing pandas
import pandas as pd
# importing numpy
import numpy as np
# importing matplotlib.pyplot
import matplotlib.pyplot as plt
  
petal_length = ['3.3', '3.5', '4.0', '4.5',
                '4.6', '5.0', '5.5', '6.0', 
                '6.5', '7.0']
petal_width = ['3.6', '3.8', '4.4', '6.6',
               '6.8', '7.0', '7.5', '8.0',
               '8.5', '8.9']
  
  
df = pd.DataFrame({'petal_length(cm)': petal_length,
                   'petal_width(cm)': petal_width})
df['petal_length(cm)'] = df['petal_length(cm)'].astype(float)
df['petal_width(cm)'] = df['petal_width(cm)'].astype(float)
  
df.plot(x='petal_length(cm)', y='petal_width(cm)')
plt.show()

Salida :

Método 2: Usar la función to_numeric()

Sintaxis:

df['column_name'] = pd.to_numeric(df['column_name'])

donde df es el marco de datos de entrada

Ejemplo :

Python3

# importing pandas
import pandas as pd
# importing numpy
import numpy as np
# importing matplotlib.pyplot
import matplotlib.pyplot as plt
  
petal_length = ['3.3', '3.5', '4.0', '4.5',
                '4.6', '5.0', '5.5', '6.0',
                '6.5', '7.0']
petal_width = ['3.6', '3.8', '4.4', '6.6',
               '6.8', '7.0', '7.5', '8.0', 
               '8.5', '8.9']
  
  
df = pd.DataFrame({'petal_length(cm)': petal_length,
                   'petal_width(cm)': petal_width})
# Using to_numeric() function
df['petal_length(cm)'] = pd.to_numeric(df['petal_length(cm)'])
df['petal_width(cm)'] = pd.to_numeric(df['petal_width(cm)'])
  
df.plot(x='petal_length(cm)', y='petal_width(cm)')
plt.show()

Producción:

Publicación traducida automáticamente

Artículo escrito por lokeshpotta20 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *