EDA con Polars Guía paso a paso para funciones de agregación y analíticas (Parte 2)
EDA con Polars Guía paso a paso (Parte 2)
Agregados avanzados y promedios móviles a alta velocidad con Polars
Introducción
En la primera parte de esta serie hemos cubierto los conceptos básicos de Polars y hemos comparado sus funcionalidades y sintaxis con Pandas. En esta parte llevaremos la complejidad de nuestras consultas un poco más lejos, por lo que veremos cómo realizar algunos agregados bastante complejos, estadísticas móviles y más. Si no estás familiarizado con Polars o sientes que necesitas un repaso, asegúrate de revisar la parte anterior. De lo contrario, ¡continuemos explorando Polars!
Configuración
Al igual que en la última parte, asegúrate de clonar/actualizar este repositorio de GitHub ya que tiene todo el código que necesitas para este artículo. En particular, estaremos cubriendo este cuaderno, así que asegúrate de obtenerlo si quieres seguirlo.
Los datos utilizados en este proyecto se pueden descargar de Kaggle (CC0: Dominio público). Supongo que ya tienes instalado Polars, así que solo asegúrate de actualizarlo a la última versión usando pip install -U polars
.
Procesamiento de datos
Lectura de datos
Similar al último artículo, vamos a leer el conjunto de datos de tendencias en el Reino Unido y los mapeos para las columnas category_id
.
csv_path = './youtube/GBvideos.csv'json_path = './youtube/US_category_id.json'df = pl.read_csv(csv_path)with open(json_path, 'r') as f: categories = json.load(f) id_to_category = {}for c in categories['items']: id_to_category[int(c['id'])] = c['snippet']['title']
Limpieza de datos
A continuación, vamos a analizar las fechas y asignar los nombres de categoría a los IDs de categoría. Para hacerlo más adecuado para producción, voy a poner el código de análisis de fechas en una función generalizable.
- El intérprete de código de ChatGPT ahora está disponible para todos...
- Cómo la Inteligencia Artificial potencia la Confianza Cero
- Un cuento de hadas del sesgo inductivo
def parse_dates(df: pl.DataFrame, date_cols: Dict[str, str]) -> pl.DataFrame: expressions = [] for date_col, format in date_cols.items(): expressions.append(pl.col(date_col).str.to_date(format=format)) df = df.with_columns(expressions) return df# Nombre de columna con formato de fecha esperadoformato_columna_fecha = { "trending_date": '%y.%d.%m', "publish_time"…