Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Problemas con groupby

Hasta ahora, he estado siguiendo paso a paso los diferentes pasos par conseguir el mismo resultado que el aula "Análisis exploratorio de datos", específicamente el primer video donde se utiliza groupby, traté de utilizar la fórmula para agrupar datos por tipo (datos.groupby('Tipo').mean()), pero me arroja error que dejo a continuación: "ypeError Traceback (most recent call last) /usr/local/lib/python3.11/dist-packages/pandas/core/groupby/groupby.py in _agg_py_fallback(self, how, values, ndim, alt) 1941 try: -> 1942 res_values = self._grouper.agg_series(ser, alt, preserve_dtype=True) 1943 except Exception as err:

17 frames TypeError: Could not convert string 'PolancoLindavistaChapultepecNarvarteLa FloridaNueva Santa MaríaPolancoRomaJuárezCondesaÁlvaro ObregónSanta FeSanta FePolancoSanta FeNarvarteVilla CoapaSanta FeSanta FeBosques de las LomasTlalpanSanta FeSan Andrés TetepilcoPolancoPolancoChapultepecTlalpanTláhuacCiudad de los DeportesLomas de PadiernaNarvarteSan ÁngelSan Miguel ChapultepecTepalcatlalpanNativitasSan ÁngelTepalcatlalpanSan Andrés TetepilcoCasa BlancaBarrio BravoSan Miguel ChapultepecSan Antonio TecomitlDel ValleSan Miguel ChapultepecSan Pedro de los PinosArboledasVilla de GuadalupeSanta FeLos AlpesSan ÁngelBarrio BravoLas ÁguilasTlalpanZacatencoRoma SurSanta FeSanta FeCiudad de los DeportesSanta FeSanta FeTepalcatlalpanNativitasÁlvaro ObregónRoma SurSanta FeDel ValleSanta FeVilla CoapaSan Miguel ChapultepecSanta FeCiudad de los DeportesJardines de San MateoSanta FeDel ValleSanta FeNarvarteSan Gregorio AtlapulcoCondesaSanta FeSan Pedro de los PinosRomaDoctoresSan Gregorio AtlapulcoXochimilcoSan ÁngelBarrio BravoRomaPolancoSan ÁngelPeralvilloSanta FeJuárezPolancoTláhuacJardines de San MateoBosques de las LomasSanta FeDel ValleSanta María NonoalcoSan Gregorio AtlapulcoNarvarteSanta María NonoalcoNativitasSan Gregorio AtlapulcoLa CondesaTlalpanCondesaSan ÁngelÁlvaro ObregónDel ValleSan Gregorio AtlapulcoDel ValleCondesaCentro HistóricoPolancoPeralvilloSan ÁngelVilla de CortésÁlvaro ObregónMoctezumaSanta FeNueva Santa MaríaMoctezumaÁlvaro ObregónEl RodeoSanta FeLa Con...

The above exception was the direct cause of the following exception:

TypeError Traceback (most recent call last) /usr/local/lib/python3.11/dist-packages/pandas/core/groupby/groupby.py in _agg_py_fallback(self, how, values, ndim, alt) 1944 msg = f"agg function failed [how->{how},dtype->{ser.dtype}]" 1945 # preserve the kind of exception that raised -> 1946 raise type(err)(msg) from err 1947 1948 if ser.dtype == object:

TypeError: agg function failed [how->mean,dtype->object]"

Alguien le pasó lo mismo y cuál es la solución de esto?, gracias.

1 respuesta

¡Hola! Parece que estás enfrentando un problema común al intentar usar groupby con la función mean() en una columna que contiene datos de tipo object, como cadenas de texto. La función mean() está diseñada para calcular el promedio de valores numéricos, por lo que no puede aplicarse directamente a columnas que contienen texto.

Para resolver este problema, asegúrate de que estás aplicando mean() solo a columnas numéricas. Aquí tienes algunos pasos que podrías seguir:

  1. Verifica los tipos de datos: Antes de agrupar, revisa los tipos de datos de tu DataFrame para asegurarte de que las columnas que deseas promediar son numéricas. Puedes hacerlo con datos.dtypes.

  2. Selecciona solo columnas numéricas: Si deseas calcular la media solo para columnas numéricas después de agrupar, puedes seleccionar estas columnas específicamente. Por ejemplo:

    # Agrupa por 'Tipo' y calcula la media solo para columnas numéricas
    resultado = datos.groupby('Tipo').mean(numeric_only=True)
    

    La opción numeric_only=True asegura que solo las columnas numéricas sean consideradas para el cálculo de la media.

  3. Transforma columnas si es necesario: Si tienes columnas que deberían ser numéricas pero están almacenadas como texto, puedes intentar convertirlas usando pd.to_numeric(). Por ejemplo:

    datos['ColumnaNumerica'] = pd.to_numeric(datos['ColumnaNumerica'], errors='coerce')
    

    Esto convertirá los valores no numéricos a NaN, que serán ignorados en el cálculo de la media.

Espero que estos consejos te ayuden a resolver el problema. ¡Bons estudios!