Cómo solucionarlo: TypeError: no se puede realizar la reducción con tipo flexible

En este artículo discutiremos TypeError: no se puede realizar reduce con tipo flexible y cómo podemos solucionarlo. Este error puede ocurrir cuando encontramos la media de una array NumPy bidimensional que consta de datos de varios tipos.

Conjunto de datos en uso:

Identificación del Estudiante

Nombre del estudiante

Rama

Marcas

101

Harry

CSE

87

102

Ron

CEPE

88

103

Alexa

CSE

72

Cuando creamos esta tabla usando NumPy, esta array 2D consta de datos con múltiples tipos. En esto, teníamos tipos de datos String y Integer. Para encontrar el valor medio para cualquiera de las columnas numéricas como Marks, arroja TypeError, porque no saber cómo calcular la media cuando no todos los valores son números (es decir, el nombre del estudiante, la sucursal consta de datos de tipo string).

Ejemplo: Error al producir código

Python3

# import necessary packages
import numpy as np
  
# create a 2D Array
students = np.array([['Student ID', 'Student Name', 'Branch', 'Marks'],
                     [101, 'Hary', 'CSE', 87],
                     [102, 'Ron', 'ECE', 88],
                     [103, 'Alexa', 'CSE', 72]])
  
# mean of marks(3rd column)
print(students[:, 3].mean())

Producción:

 

Para superar este problema, cree una array 2D utilizando Pandas DataFrame en lugar de NumPy. Dado que DataFrame tiene un valor de índice para cada fila y un nombre para cada columna, ayuda al intérprete a distinguir entre columnas de diferentes tipos.

Esta única alternativa soluciona el problema de manera eficiente.

Ejemplo: código fijo

Python3

# import necessary packages
import pandas as pd
  
# create dataframe
students = pd.DataFrame({'student_ID': [101, 102, 103],
                         'student_Name': ['Hary', 'Ron', 'Alexa'],
                         'Branch': ['CSE', 'ECE', 'CSE'],
                         'Marks': [87, 88, 72]})
# Table
print(students)
  
# mean values for all numeric columns
print(students.mean())

Producción:

Tabla de estudiantes y resultados de valores medios

En el ejemplo anterior, el valor medio del marco de datos se genera para todas las columnas con tipo numérico si no se especifica el nombre de la columna: las columnas ID_estudiante y Marcas son de tipo flotante. Entonces calcula la media para esas 2 columnas y el resto de las columnas son de tipo string. Por lo tanto, no calculará el valor medio.

Publicación traducida automáticamente

Artículo escrito por akhilvasabhaktula03 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 *