Ordenación y agregación de datos en Pandas

La ordenación y agregación de datos son operaciones muy comunes e importantes en el análisis de datos, especialmente cuando se analizan grandes conjuntos de datos.

La ordenación nos ayuda a organizar los datos según criterios específicos, mientras que la agregación nos permite resumir los datos y calcular diversas estadísticas.

Pandas ofrece potentes funciones de ordenación y agregación que ayudan a los analistas a procesar datos de manera eficiente.

Operación Método Descripción Funciones/métodos comunes
Ordenación sort_values(by, ascending) Ordenar según los valores de una columna,ascendingcontrolar el orden ascendente o descendente df.sort_values(by='column')
Ordenación sort_index(axis) Ordenar según el índice de filas o columnas df.sort_index(axis=0)
Agregación por grupos groupby(by) Después de agrupar por una columna, aplicar funciones de agregación df.groupby('column')
Funciones de agregación agg() Funciones de agregación, comosum()、mean()、count()esperar df.groupby('column').agg({'value': 'sum'})
Agregación múltiple agg([func1, func2]) Aplicar múltiples funciones de agregación a la misma columna df.groupby('column').agg({'value': ['mean', 'sum']})
Ordenación después de agrupar apply(lambda x: x.sort_values(...)) Ordenar después de agrupar df.groupby('column').apply(lambda x: x.sort_values(...))
Tabla dinámica pivot_table() Crear una tabla dinámica para resumir datos según filas y columnas

1. Ordenación de datos (Sorting)

La ordenaciónse refiere a organizar los datos en orden ascendente o descendente según los valores de una columna. Pandas proporciona dos métodos principales para ordenar:sort_values()ysort_index()。

Métodos de ordenación

  • sort_values(): ordenar según los valores de las columnas.
  • sort_index(): ordenar según el índice de filas o columnas.

Ejemplo

Operación Método Descripción Ejemplo
Ordenar por valor df.sort_values(by, ascending) Según la columna especificada (by) ordenar,ascendingcontrolar el orden ascendente o descendente, siendo ascendente por defecto df.sort_values(by='Age', ascending=False)
Ordenar por índice df.sort_index(axis) Ordenar según el índice de filas o columnas,axiscontrolar si se ordena por filas o columnas df.sort_index(axis=0)

sort_values()Ejemplo:

Ejemplo

import pandas as pd

# Datos de ejemplo
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 35, 40],
        'Salary': [50000, 60000, 70000, 80000]}

df = pd.DataFrame(data)

# Ordenar en orden descendente según los valores de la columna "Age"
df_sorted = df.sort_values(by='Age', ascending=False)
print(df_sorted)

Salida:

Name  Age  Salary
3    David   40   80000
2  Charlie   35   70000
1      Bob   30   60000
0    Alice   25   50000

sort_index()Ejemplo:

Ejemplo

# Ordenar según el índice de filas
df_sorted_by_index = df.sort_index(axis=0)
print(df_sorted_by_index)

Salida:

      Name  Age  Salary
0    Alice   25   50000
1      Bob   30   60000
2  Charlie   35   70000
3    David   40   80000

2. Agregación de datos (Aggregation)

La agregaciónconsiste en resumir los datos según ciertas reglas, generalmente realizando operaciones como suma, promedio, máximo, mínimo, etc. sobre los datos de ciertas columnas. Pandas proporcionagroupby()el método para agrupar los datos y luego aplicar diferentes funciones de agregación.

Métodos de agregación

  • groupby(): agrupar por ciertas columnas.
  • Funciones de agregación: comosum(), mean(), count(), min(), max(), std()etc.

Ejemplo

Operación Método Descripción Ejemplo
Agrupar por columna y agregar df.groupby(by).agg() Según la columna especificada (by) agrupar,agg()se pueden pasar diferentes funciones de agregación para realizar diversas operaciones df.groupby('Department').agg({'Salary': 'mean'})
Aplicación de múltiples funciones de agregación df.groupby(by).agg([func1, func2]) Se pueden aplicar múltiples funciones de agregación a la misma columna, devolviendo varios resultados de agregación df.groupby('Department').agg({'Salary': ['mean', 'sum']})

groupby()Ejemplo:

Ejemplo

import pandas as pd

# Datos de ejemplo
data = {'Department': ['HR', 'Finance', 'HR', 'IT', 'IT'],
        'Employee': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
        'Salary': [50000, 60000, 55000, 70000, 75000]}

df = pd.DataFrame(data)

# Agrupar por departamento y calcular el salario promedio de cada departamento
grouped = df.groupby('Department')['Salary'].mean()
print(grouped)

Salida:

Department
Finance    60000.0
HR         52500.0
IT         72500.0
Name: Salary, dtype: float64

Aplicación de múltiples funciones de agregación:

Ejemplo

# Agrupar por departamento y calcular el promedio y la suma de los salarios de cada departamento
grouped_multiple = df.groupby('Department').agg({'Salary': ['mean', 'sum']})
print(grouped_multiple)

Salida:

              Salary           
               mean    sum
Department                  
Finance    60000.0  60000
HR         52500.0  105000
IT         72500.0  145000

3. Ordenación después de agrupar

Los datos agregados se pueden ordenar aún más según los valores de una columna, lo que permite encontrar los valores más importantes en un grupo específico.

Ordenación después de agrupar

Operación Método Descripción Ejemplo
Ordenación después de agrupar df.groupby(by).apply(lambda x: x.sort_values(by='col')) Ordenar dentro de cada grupo según los valores de una columna. df.groupby('Department').apply(lambda x: x.sort_values(by='Salary', ascending=False))

Ejemplo de ordenación después de agrupar:

Ejemplo

# Después de agrupar por departamento, ordenar por salario en orden descendente
grouped_sorted = df.groupby('Department').apply(lambda x: x.sort_values(by='Salary', ascending=False))
print(grouped_sorted)

Salida:

    Department Employee  Salary
Department                     
Finance     Bob   60000
HR          Charlie  55000
HR          Alice  50000
IT          Eve   75000
IT          David  70000

4. Tabla dinámica

La tabla dinámica (Pivot Table) es una forma especial de agregación que nos permite resumir rápidamente los datos mediante filas, columnas y funciones de agregación, similar a las tablas dinámicas de Excel.

Ejemplo

Operación Método Descripción Ejemplo
Crear tabla dinámica df.pivot_table(values, index, columns, aggfunc) Utilizar columnas especificadas para resumir por filas y columnas,valueses el valor que se va a agregar,aggfunces la función de agregación df.pivot_table(values='Salary', index='Department', aggfunc='mean')

Ejemplo de tabla dinámica:

Ejemplo

# Usar pivot_table para calcular el salario promedio de cada departamento
pivot_table = df.pivot_table(values='Salary', index='Department', aggfunc='mean')
print(pivot_table)

Salida:

Department
Finance    60000.0
HR         52500.0
IT         72500.0
Name: Salary, dtype: float64
Otras extensiones