TypeError: no se puede convertir la serie a <Class 'Float'> en Python

Salman Mehmood 15 febrero 2024
TypeError: no se puede convertir la serie a <Class 'Float'> en Python

Con esta explicación, aprenderemos por qué obtenemos el error Error de tipo: no se puede convertir la serie a <clase 'flotante'>. También aprenderemos cómo solucionarlo y cambiar el tipo de datos de una serie Pandas en Python.

Convierta el tipo de datos de una serie Pandas sin error en Python

Saltemos con un conjunto de datos de ejemplo. Importaremos la biblioteca de Pandas y luego el conjunto de datos; Comenzaremos con el consumo de alcohol por país.

Declararemos una variable llamada Alcohol y leeremos el archivo CSV de http://bit.ly/drinksbycountry.

Después de ejecutar el siguiente código, miraremos el head(), y deberíamos ver seis columnas y cuatro filas numéricas.

import pandas as pd

Alcohol = pd.read_csv("http://bit.ly/drinksbycountry")
Alcohol.head()

Producción:

python typeerror no puede convertir la serie a clase flotante - conjunto de datos

Veamos los tipos de datos de estas columnas. Usaremos el atributo dtypes del marco de datos Alcohol para encontrar los tipos de datos.

Alcohol.dtypes

Ahora veremos que tres de nuestras columnas son columnas enteras, tenemos una columna de punto flotante y luego dos columnas son objetos, lo que significa que “país” y “continente” son solo cadenas.

Producción:

Tipos de datos de columnas

Supongamos que queremos convertir la columna spirit_servings en un punto flotante en lugar de un número entero. Todo lo que tenemos que hacer es usar el método de la serie astype() y pasarlo float, lo que significa que lo convertimos al tipo de punto flotante.

Si queremos modificar el marco de datos, puede agregar una nueva columna o sobrescribir la columna spirit_servings existente. Si definimos dtypes para verificar los tipos de datos de las columnas, vemos que ha cambiado, y spirit_servings ahora es una columna de coma flotante.

Alcohol["spirit_servings"] = Alcohol.spirit_servings.astype(float)
Alcohol.dtypes

Producción:

Convierta la columna Spirit_Servings usando astype()

Ahora te estarás preguntando cuál es el uso de eso. Por lo general, hace esto cuando tiene un archivo de datos donde los números se almacenan como cadenas y lo ha leído en cadenas de Pandas pero quiere hacer matemáticas con ellos.

Para hacer matemáticas en una columna, tiene que ser de tipo numérico, por lo que su tipo de columna debe ser flotante, que es el caso de uso más común. Si no lo convierte al tipo flotante, obtendrá un error que sería algo así como Error de tipo: no se puede convertir la serie a <clase 'flotante'>.

Surge una pregunta más: ¿cómo encontró el tipo de cada columna antes de leer el archivo CSV? Ahora cambiaremos los tipos de datos durante el proceso de lectura de CSV; tendremos que añadir un parámetro más, dtype.

Lo pasamos a un diccionario; la clave del diccionario es spirit_servings, y el valor del diccionario es un flotante. Ahora, si revisamos el tipo de datos de esta columna, vemos que, una vez más, spirit_servings se ha convertido a un punto flotante.

Alcohol = pd.read_csv(
    "http://bit.ly/drinksbycountry", dtype={"spirit_servings": "float"}
)
Alcohol.dtypes

Producción:

Convierta la columna Spirit_Servings usando dtype

La única diferencia entre este y el anterior es que este método lo hace durante el proceso de lectura. En lo anterior, lo convertimos después de que ya se había creado el marco de datos.

Otro ejemplo de conversión de tipo de datos de una serie Pandas sin error en Python

Ahora le mostraremos un conjunto de datos más y otro ejemplo usando los datos de pedidos de chips.

CHIP_ORDERS = pd.read_table("http://bit.ly/chiporders")
CHIP_ORDERS.head()

Miremos la columna. Queremos centrarnos en la columna item_price.

Datos de pedidos de fichas

CHIP_ORDERS.dtypes

Pandas está almacenando la columna item_price como un objeto, es decir, una cadena, porque no entiende que se trata de números.

Tipos de datos de las columnas de pedidos de fichas

Para hacer algunas matemáticas con él, debemos eliminar un carácter de una serie como el signo $. Podemos usar los métodos str y replace() para reemplazar el signo de dólar con nada, pero no es suficiente; si intentamos aplicar una operación Matemática a la serie, te dará error.

CHIP_ORDERS.item_price.str.replace("$", "").mean()

Producción :

ValueError: could not convert string to float: '2.39 3.39 3.39...

Esto se debe a que, aunque eliminamos el signo de dólar, sigue siendo una cadena, por lo que debemos convertirlo en un flotante. Después de encasillarlo en un flotador, podemos hacer una operación matemática en él.

CHIP_ORDERS.item_price.str.replace("$", "").astype(float).mean()

Producción:

Typecast to Float Usando un tipo

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

Artículo relacionado - Python Error