Python
Dominando df.mean: Una guía para principiantes sobre cómo calcular promedios

Dominando df.mean: Una guía para principiantes sobre cómo calcular promedios

MoeNagy Dev

Definición del promedio en el contexto de los data frames

El promedio, también conocido como la media, es una medida ampliamente utilizada de tendencia central en el análisis de datos. En el contexto de los data frames, el promedio representa el valor promedio de una columna en particular o de un conjunto de columnas. Se calcula sumando todos los valores en una columna y dividiendo el resultado por el número de valores no faltantes.

Cálculo del promedio de un data frame

Cálculo del promedio de una sola columna

Para calcular el promedio de una sola columna en un data frame, puedes usar la función mean(). Aquí tienes un ejemplo:

import pandas as pd
 
# Crear un data frame de muestra
data = {'Edad': [25, 32, 41, 28, 35],
        'Salario': [50000, 60000, 70000, 55000, 65000]}
df = pd.DataFrame(data)
 
# Calcular el promedio de la columna 'Edad'
promedio_edad = df['Edad'].mean()
print(f"El promedio de edad es: {promedio_edad}")

Output:

El promedio de edad es: 32.2

Cálculo del promedio de múltiples columnas

También puedes calcular el promedio de múltiples columnas en un data frame. Para hacer esto, puedes pasar una lista de nombres de columnas a la función mean():

# Calcular el promedio de las columnas 'Edad' y 'Salario'
valores_promedio = df[['Edad', 'Salario']].mean()
print(valores_promedio)

Output:

Edad     32.2
Salario  60000.0
dtype: float64

Manejo de valores faltantes al calcular el promedio

Si tu data frame contiene valores faltantes (representados por NaN o None), la función mean() automáticamente excluye estos valores del cálculo. Sin embargo, también puedes especificar cómo manejar los valores faltantes usando el parámetro skipna:

# Crear un data frame con valores faltantes
data = {'Edad': [25, 32, 41, 28, 35, None],
        'Salario': [50000, 60000, 70000, 55000, 65000, None]}
df = pd.DataFrame(data)
 
# Calcular el promedio, incluyendo valores faltantes
promedio_edad = df['Edad'].mean(skipna=False)
print(f"El promedio de edad (incluyendo valores faltantes): {promedio_edad}")
 
# Calcular el promedio, excluyendo valores faltantes
promedio_edad = df['Edad'].mean(skipna=True)
print(f"El promedio de edad (excluyendo valores faltantes): {promedio_edad}")

Output:

El promedio de edad (incluyendo valores faltantes): nan
El promedio de edad (excluyendo valores faltantes): 32.2

Aplicación del promedio a diferentes tipos de datos

Tipos de datos numéricos

La función mean() funciona sin problemas con tipos de datos numéricos, como enteros y números de punto flotante. Calcula el promedio aritmético de los valores en la(s) columna(s) seleccionada(s).

# Ejemplo con datos numéricos
data = {'Edad': [25, 32, 41, 28, 35],
        'Salario': [50000, 60000, 70000, 55000, 65000]}
df = pd.DataFrame(data)
 
promedio_edad = df['Edad'].mean()
promedio_salario = df['Salario'].mean()
 
print(f"El promedio de edad es: {promedio_edad}")
print(f"El promedio de salario es: {promedio_salario}")

Output:

El promedio de edad es: 32.2
El promedio de salario es: 60000.0

Tipos de datos no numéricos

La función mean() también se puede aplicar a tipos de datos no numéricos, como cadenas de texto o variables categóricas, pero la interpretación del resultado puede no ser significativa. En tales casos, la función mean() intentará convertir los valores no numéricos a valores numéricos antes de calcular el promedio.

# Ejemplo con datos no numéricos
data = {'Nombre': ['Juan', 'Juana', 'Bob', 'Alice', 'Tom'],
        'Género': ['M', 'F', 'M', 'F', 'M']}
df = pd.DataFrame(data)
 
promedio_genero = df['Género'].mean()
print(f"El promedio del género es: {promedio_genero}")

Output:

El promedio del género es: 0.6

En este ejemplo, la función mean() convierte los valores 'M' y 'F' a valores numéricos (0 y 1, respectivamente) y calcula el promedio, que es 0.6. Este resultado no es muy significativo en el contexto de datos sobre género.

Interpretación de los resultados del cálculo del promedio

Entendiendo el significado del valor del promedio

El valor del promedio representa la tendencia central de los datos, proporcionando una estimación del valor "promedio" o "típico" en el conjunto de datos. Se calcula sumando todos los valores y dividiendo por el número de valores no faltantes.

La interpretación del valor del promedio depende del contexto de los datos y del problema específico que estés tratando de resolver. Por ejemplo, en el caso de la columna 'Edad', la edad promedio de 32.2 años te da una idea de la edad típica en el conjunto de datos. Para la columna 'Salario', el salario promedio de $60,000 proporciona información sobre el nivel salarial promedio.

Identificación de posibles problemas con el promedio

Si bien el promedio es una estadística resumen ampliamente utilizada, puede verse influenciado por valores atípicos o distribuciones sesgadas. Los valores atípicos, que son puntos de datos significativamente diferentes del resto de los datos, pueden sesgar el promedio en su dirección y hacer que sea menos representativo del valor típico.

Además, si los datos están sesgados (es decir, la distribución no es simétrica), el promedio puede no ser la mejor representación de la tendencia central, y la mediana podría ser una medida más apropiada.

Comparación del promedio con otras estadísticas resumen

Diferencias entre el promedio y la mediana

La mediana es otra medida de tendencia central, que representa el valor intermedio en el conjunto de datos cuando los valores se ordenan. A diferencia del promedio, la mediana se ve menos afectada por valores atípicos y distribuciones sesgadas.

Las principales diferencias entre el promedio y la mediana son:

  • El promedio es el promedio aritmético, mientras que la mediana es el valor intermedio.
  • El promedio es sensible a los valores atípicos, mientras que la mediana es más robusta ante valores atípicos.
  • El promedio se ve influenciado por la magnitud de los valores, mientras que la mediana no.
  • El promedio se ve afectado por la forma de la distribución, mientras que la mediana no lo hace.

Cuándo usar el promedio versus la mediana

La elección entre usar el promedio o la mediana depende de las características de los datos y del problema específico que estés intentando resolver. En general:

  • Usa el promedio cuando los datos estén aproximadamente distribuidos de forma normal y quieras representar el valor "típico" o "promedio".
  • Usa la mediana cuando los datos estén sesgados o contengan valores atípicos, ya que se ve menos afectada por valores extremos y proporciona una medida de tendencia central más robusta.
  • Usa la mediana cuando quieras encontrar el valor "central" en el conjunto de datos, independientemente de la distribución.

Agrupación de datos y cálculo del promedio

Cálculo del promedio para datos agrupados

También puedes calcular el promedio para datos agrupados en un marco de datos. Esto es útil cuando quieres analizar el promedio para diferentes subconjuntos de tus datos. Para hacer esto, puedes usar la función groupby() en Pandas.

# Ejemplo con datos agrupados
data = {'Nombre': ['Juan', 'Juana', 'Bob', 'Alice', 'Tom'],
        'Edad': [25, 32, 41, 28, 35],
        'Salario': [50000, 60000, 70000, 55000, 65000],
        'Departamento': ['Ventas', 'Marketing', 'TI', 'Ventas', 'TI']}
df = pd.DataFrame(data)
 
# Calcula el promedio de edad y salario para cada departamento
valores_promedio = df.groupby('Departamento')[['Edad', 'Salario']].mean()
print(valores_promedio)

Salida:

            Edad   Salario
Departamento               
TI          38.0  67500.0
Marketing   32.0  60000.0
Ventas      26.5  52500.0

En este ejemplo, agrupamos el marco de datos por la columna 'Departamento' y luego calculamos el promedio de las columnas 'Edad' y 'Salario' para cada departamento.

Aplicando el promedio a múltiples grupos

También puedes aplicar el cálculo del promedio a múltiples grupos simultáneamente. Esto puede ser útil cuando quieres comparar los valores promedio en diferentes criterios de agrupación.

# Ejemplo con múltiples criterios de agrupación
data = {'Nombre': ['Juan', 'Juana', 'Bob', 'Alice', 'Tom', 'Emily', 'David', 'Sarah'],
        'Edad': [25, 32, 41, 28, 35, 30, 38, 27],
        'Salario': [50000, 60000, 70000, 55000, 65000, 52000, 68000, 48000],
        'Departamento': ['Ventas', 'Marketing', 'TI', 'Ventas', 'TI', 'Marketing', 'TI', 'Ventas'],
        'Género': ['M', 'F', 'M', 'F', 'M', 'F', 'M', 'F']}
df = pd.DataFrame(data)
 
# Calcula el promedio de edad y salario para cada departamento y género
valores_promedio = df.groupby(['Departamento', 'Género'])[['Edad', 'Salario']].mean()
print(valores_promedio)

Salida:

                     Edad   Salario
Departamento Género                
TI           M      39.5  69000.0
             F      30.0  52000.0
Marketing    F      31.0  60000.0
Ventas       F      27.5  51500.0
             M      26.0  50000.0

En este ejemplo, agrupamos el marco de datos por las columnas 'Departamento' y 'Género' y luego calculamos el promedio de las columnas 'Edad' y 'Salario' para cada combinación de departamento y género.

Trabajando con Módulos y Paquetes

El diseño modular de Python te permite organizar tu código en componentes reutilizables llamados módulos. Los módulos son archivos de Python que contienen definiciones y declaraciones. Al importar módulos, puedes acceder a la funcionalidad que proporcionan.

Importando Módulos

La instrucción import se utiliza para importar la funcionalidad de un módulo. Aquí tienes un ejemplo:

import math
print(math.pi)  # Salida: 3.141592653589793

También puedes importar funciones o atributos específicos de un módulo:

from math import pi, sqrt
print(pi)       # Salida: 3.141592653589793
print(sqrt(9)) # Salida: 3.0

Creando Módulos

Para crear tu propio módulo, simplemente guarda tu código de Python en un archivo .py. Por ejemplo, vamos a crear un módulo llamado mi_modulo.py:

def saludar(nombre):
    print(f"Hola, {nombre}!")
 
def cuadrado(x):
    return x ** 2

Ahora, puedes importar y usar las funciones de este módulo:

import mi_modulo
mi_modulo.saludar("Alice")  # Salida: Hola, Alice!
resultado = mi_modulo.cuadrado(5)
print(resultado)  # Salida: 25

Paquetes

Los paquetes son una forma de organizar módulos en estructuras jerárquicas. Un paquete es una colección de módulos almacenados en un directorio. Para crear un paquete, simplemente crea un directorio y coloca tus archivos de módulo dentro de él.

Por ejemplo, vamos a crear un paquete llamado mi_paquete con dos módulos: utils.py y funciones_matematicas.py:

mi_paquete/
    __init__.py
    utils.py
    funciones_matematicas.py

El archivo __init__.py es necesario para que el directorio sea un paquete. Puede estar vacío o contener código de inicialización.

Ahora, puedes importar módulos del paquete de esta manera:

from mi_paquete import utils, funciones_matematicas
utils.imprimir_mensaje("¡Hola, Mundo!")
resultado = funciones_matematicas.sumar(3, 4)
print(resultado)  # Salida: 7

Paquetes e Importaciones Relativas

Dentro de un paquete, puedes usar importaciones relativas para acceder a otros módulos en el mismo paquete. Las importaciones relativas usan la notación . para especificar la ruta relativa.

Por ejemplo, supongamos que funciones_matematicas.py necesita utilizar una función del módulo utils.py:

# funciones_matematicas.py
from .utils import imprimir_mensaje
 
def sumar(a, b):
    imprimir_mensaje("Sumando números...")
    return a + b

El . al inicio de la instrucción de importación indica que el módulo utils está en el mismo directorio que el módulo actual.

Entornos Virtuales

Los entornos virtuales te permiten crear entornos Python aislados con sus propias dependencias e instalaciones de paquetes. Esto ayuda a prevenir conflictos entre diferentes proyectos y garantiza entornos de desarrollo consistentes.

Puedes crear y administrar entornos virtuales utilizando herramientas como venv (incluida en Python) o pipenv.

Aquí tienes un ejemplo utilizando venv:

# Crea un nuevo entorno virtual
python -m venv mi_entorno

# Activa el entorno virtual
# (Windows)
mi_entorno\Scripts\activate
# (macOS/Linux)
source mi_entorno/bin/activate

# Instala paquetes en el entorno virtual
pip install numpy pandas

Cuando hayas terminado, puedes desactivar el entorno virtual:

desactivar

Conclusión

En este tutorial, aprendiste cómo trabajar con módulos y paquetes en Python. Exploraste la importación de módulos, la creación de tus propios módulos, la organización del código mediante paquetes y el uso de importaciones relativas. Además, aprendiste sobre la importancia de los entornos virtuales para gestionar dependencias y garantizar entornos de desarrollo consistentes.

Al dominar estos conceptos, podrás escribir código Python más modular, mantenible y escalable. Recuerda que la clave para un desarrollo efectivo en Python es aprovechar el potente sistema de módulos y paquetes del lenguaje para crear componentes reutilizables y organizados.

MoeNagy Dev