Guías de Make it Real
  • Introduction
  • Preparación
    • Conceptos básicos
    • El editor de texto
    • La línea de comandos
    • Git y Github
  • Git
    • Instalación y configuración
    • Conceptos y comandos esenciales
    • Ignorando archivos y carpetas
    • Trabajando con ramas
    • Repositorios remotos
    • Etiquetas
    • Reescribiendo la historia
    • Stashing
    • Github
  • HTML y CSS
    • Introducción a HTML
    • Introducción a CSS
    • Más elementos de HTML
    • Tablas
    • Formularios
    • El modelo de caja en CSS
    • Fondos (backgrounds)
    • Posicionamiento
    • Selectores CSS
    • Bordes, sombras y gradientes
    • Media Queries
    • Unidades en CSS
    • Flexbox
  • Bootstrap 3
    • Primeros pasos
    • Elementos básicos de HTML
    • Componentes
    • La grilla
    • Personalizando Bootstrap
    • Utilizando plantillas
  • Bootstrap 4
    • Primeros pasos
    • Elementos básicos de HTML
    • Componentes
    • La grilla
    • Clases utilitarias
    • Personalizando Bootstrap
  • Ruby
    • Primeros pasos
    • Tipos y operadores
    • Variables y entrada de usuario
    • Condicionales
    • Ciclos
    • Arreglos
    • Más cadenas de texto
    • Hashes
    • Métodos
    • Manipulación de archivos
    • Gemas
  • Programación Orientada a Objetos en Ruby
    • Clases y objetos
    • Métodos y atributos de clase
    • Herencia
    • Módulos
    • Excepciones
  • JavaScript I
    • Primeros pasos
    • Tipos y operadores
    • Variables
    • Condicionales
    • Ciclos
    • Arreglos
    • Más cadenas de texto
    • Funciones
    • Objetos literales
    • Manipulación de archivos
  • JavaScript en el navegador
    • Primeros pasos
    • Manipulando HTML
    • Escuchando eventos
    • Local Storage
    • History API
    • Canvas
    • Notificaciones Web
    • Audio y Video
    • Arrastrar y soltar
    • JSON
    • Realizando peticiones HTTP
  • jQuery
    • Primeros pasos
    • Manipulando HTML
    • Escuchando eventos
    • Plugins
    • Realizando peticiones con AJAX
  • JavaScript II
    • Prototipos
    • Librerías (Node.js)
    • ES6
    • Uso de this (call, apply, bind)
    • Programación funcional
    • Scope, hoisting, closures
    • Programación asincrónica
    • Testing
  • HTTP y Sinatra
    • Primeros pasos con Sinatra
    • El protocolo HTTP
    • Rutas
    • Formularios
    • Cookies y sesión
  • Bases de datos
    • Bases de datos relacionales
    • SQL
    • DDL
    • MongoDB
  • Ruby on Rails I
    • Primeros pasos
    • Arquitectura
    • Rutas
    • Layouts y rendering
    • ActiveRecord - Modelos
    • ActiveRecord - Migraciones
    • ActiveRecord - Validaciones
    • ActiveRecord - Asociaciones
    • ActiveRecord - Scopes
    • ActiveRecord - Callbacks
    • Recursos REST
    • Formularios
    • Autenticación con Devise
    • Sass y Bootstrap
    • Envío de correos
    • Carga de imágenes
    • Seeds
    • Heroku
  • Ruby on Rails II
    • Usando JavaScript (y jQuery) en Rails
    • Testing en Ruby
    • Testing en Rails
    • Creando una Web API
    • Web Sockets
  • Express.js
    • Primeros Pasos
    • El protocolo HTTP
    • Rutas
    • Vistas
    • Middlewares y manejo de errores
    • Formularios
    • Cookies y sesión
  • Express.js II
    • Mongoose
    • Web Sockets
    • Autenticación
    • Envío de correos
    • Cargar imágenes
    • Deployment
    • Testing
    • Creando una Web API
  • React
    • Primeros pasos
    • JSX
    • Componentes
    • Más sobre estado
    • Formularios
    • Peticiones HTTP con Axios
    • React Hooks
    • React Context
    • React Bootstrap
    • React Router
    • Carga de Imágenes
    • Testing
    • Estructura de carpetas
    • Componentes de clase
  • Redux
    • Primeros pasos
    • Action creators
    • Usando la librería react-redux
    • Middlewares
    • Operaciones asincrónicas con redux-thunk
    • Combinando funciones reductoras
    • Testing
    • Redux Tool Kit
  • Algoritmos
    • Describiendo un algoritmo
    • Complejidad (Big-O)
    • Estructuras de datos
    • Recursión
    • Ordenamiento
    • Búsqueda
    • Programación dinámica
  • Python
    • Primeros Pasos
    • Tipos y Variables
    • Funciones
    • Control de Flujo
    • Listas
    • Ciclos
    • Diccionarios, Tuplas y Sets
  • NumPy
    • Primeros Pasos
    • Arreglos
    • Arreglos Multidimensionales
    • Estadística con NumPy
    • Distribución Estadística
  • Pandas
    • Primeros Pasos
    • Inspección y Selección de Datos
    • Modificando Dataframes
    • La Función Lambda
    • Aggregates en Pandas
    • Múltiples Tablas
Powered by GitBook
On this page
  • Estadística de una columna
  • Nunique & Unique
  • Sintaxis
  • Ejercicios
  • Calculando aggregates
  • Pivot Tables
  1. Pandas

Aggregates en Pandas

Los agregados son una forma de crear un único número que describe un grupo de números

Los aggregates más comunes incluyen la media (mean), la mediana (median) o la desviación standard (standard deviation)

También aprenderemos a hacer un “rearrange” en un dataframe, lo cual es una forma de comparar datos entre dos dimensiones

Estadística de una columna

Anteriormente vimos como correr operaciones sobre cada valor en una columna usando apply Vamos a ver como combinar todos los valores de una columna en un único cálculo

movies = pd.DataFrame([
    ['Avatar', 'action', 2009, 7.9],
    ['Jurassic World', 'action', 2015, 7.3]
    ['The Avengers', 'action', 2012, 8.1]
    ['The Dark Knight', 'action', 2008, 9.0]
],
columns=['name', 'genre', 'year', 'imdb_rating'])

print(movies)
print(movies.year.median())

Nunique & Unique

Veamos cual es el número de ocurrencias únicas

print(movies.year.nunique())

Veamos los valores únicos

print(movies.year.unique())

Sintaxis

La sintaxis general para correr cálculos es:

df.column_name.command()

La siguiente es una tabla que resume los comandos más comunes:

comando | Descripción
mean    | Promedio de todos los valores de la columna
std     | Desviación estándar todos los valores de la columna
median  | Mediana de todos los valores de la columna
max     | Valor máximo de la columna
min     | Valor mínimo de la columna
count   | Número de valores en la columna
nunique | Número de valores únicos en la columna
unique  | Lista de los valores únicos en la columna

Ejercicios

Descargue este csv llamado orders.csv https://drive.google.com/file/d/1EPqj_vQH-o2PcnChrg2CyUzGNMnVWe8K/view?usp=sharing, y siga los siguientes pasos:

orders = pd.read_csv('orders.csv')
print(orders.head(10))

most_expensive = orders.price.max()
print(most_expensive)

num_colors = orders.shoe_color.nunique()
print(num_colors)

Calculando aggregates

En Pandas también podemos usar el groupby con la siguiente sintaxis:

df.groupby('column1').column2.measurement()

Donde:

  • column1: es la columna por la que queremos agrupar (groupby)

  • column2: es la columna sobre la cual queremos ejecutar el aggregate (measurement)

  • measurement: es el método para calcular la medición que queremos aplicar.

Nuestro departamento de finanzas quiere conocer el zapato más costoso que vendemos por cada tipo de zapato (shoe_type), ¿cómo lo haríamos?

pricey_shoes = orders.groupby('shoe_type').price.max()
print(pricey_shoes)

Después de usar groupby normalmente necesitaremos limpiar nuestros datos resultantes. groupby normalmente crea un Series no un DataFrame. Podemos usar reset_index(), esto volverá a transformar nuestro Series en un DataFrame y mover los índices a su propia columna. lo hacemos así:

df.group('column1').column2.measurement().reset_index()
pricey_shoes = orders.groupby('shoe_type').price.max().reset_index()
print(pricey_shoes)

Algunas veces la operación que queremos correr será más complicada que la media o el count. En esos casos podremos aplicar la función apply y las funciones lambda. De la misma forma como hicimos con columnas individuales. Un buen ejemplo de esto es calcular los percentiles.

Nuestro departamento de marketing dice que es importante tener zapatos a precios razonables y en disponibilidad para todos los colores del inventario. Vamos a calcular el 25th percentile al precio del zapato por cada color

import numpy as np

cheap_shoes = orders.groupby('shoe_color').price.apply(lambda x: np.percentile(x, 25)).reset_index()

print(cheap_shoes)

Algunas veces vamos a querer agregar por más de una columna. Podemos hacer esto pasando una lista de los nombres de las columnas en el método groupby. Imaginemos que el equipo de compras cree que ciertas combinaciones de tipos de zapatos y colores son particularmente populares este año. Vamos a crear un dataframe con el total del número de zapatos de cada combinación por tipo y color comparada

shoe_count = orders.groupby(['shoe_type', 'shoe_color']).id.count().reset_index()

print(shoe_count)

Pivot Tables

Cuando corremos un groupby entre múltiples columnas, muy seguido vamos a querer cambiar como es guardada la data. Reorganizar la tabla es lo que se conoce como "pivoting". La nueva tabla es llamada pivot table. En Pandas el comando para pivotar es:

df.pivot(columns='ColumnToPivot', index='ColumnToBeRows', values='ColumnToBeValues')

Siguiendo este ejemplo anterior

shoe_count = orders.groupby(['shoe_type', 'shoe_color']).id.count().reset_index()

shoes_count_pivot = shoe_count.pivot(
  columns='shoe_color',
  index='shoe_type',
  values='id').reset_index()

print(shoes_count_pivot)
PreviousLa Función LambdaNextMúltiples Tablas

Last updated 2 years ago