EDA con Polars Guida passo-passo alle funzioni di aggregazione e analitiche (Parte 2)

EDA con Polars Guida alle funzioni di aggregazione e analitiche (Parte 2)

Aggregazioni avanzate e medie mobili a velocità fulminea con Polars

Foto di Spencer Davis su Unsplash

Introduzione

Nella prima parte di questa serie abbiamo affrontato le basi di Polars e confrontato le sue funzionalità e sintassi con Pandas. In questa parte porteremo la complessità delle nostre query ad un livello superiore, vedremo quindi come eseguire aggregazioni piuttosto complesse, statistiche mobili e altro ancora. Se non conosci Polars o hai bisogno di un ripasso, assicurati di dare un’occhiata alla parte precedente. Altrimenti, continuiamo ad esplorare Polars!

Configurazione

Come nella parte precedente, assicurati di clonare/scaricare questa repo GitHub poiché contiene tutto il codice necessario per questo post. In particolare, utilizzeremo questo notebook, quindi assicurati di averlo se vuoi seguirmi.

I dati utilizzati in questo progetto possono essere scaricati da Kaggle (CC0: Public Domain). Suppongo che tu abbia già installato Polars, quindi assicurati solo di aggiornarlo all’ultima versione usando pip install -U polars.

Elaborazione dei dati

Lettura dei dati

Come nel post precedente, leggiamo il dataset delle tendenze nel Regno Unito e le associazioni per le colonne 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']

Pulizia dei dati

Successivamente, analizziamo le date e associamo gli ID delle categorie ai nomi delle categorie. Per renderlo più pronto per la produzione, metterò il codice di analisi delle date in una funzione generalizzabile.

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# Nome della colonna con il formato di data attesodate_column_format = {    "trending_date": '%y.%d.%m',    "publish_time"…