Last chance! 50% off DataCamp Premium
Sale ends in
Nel mondo dell'analisi dei dati, Python è un linguaggio molto popolare grazie alla sua versatilità e all'ampio ecosistema di librerie. La manipolazione e l'analisi dei dati svolgono un ruolo cruciale nell'estrarre insight e prendere decisioni informate. Tuttavia, man mano che i dataset crescono in dimensioni e complessità, la necessità di soluzioni ad alte prestazioni diventa fondamentale.
Gestire grandi dataset in modo efficiente richiede strumenti in grado di offrire calcoli rapidi e operazioni ottimizzate. È qui che entra in gioco Polars. Polars è una potente libreria open source progettata specificamente per la manipolazione e l'analisi dei dati ad alte prestazioni in Python.
Polars è una libreria DataFrame scritta interamente in Rust, pensata per offrire agli sviluppatori Python un framework scalabile ed efficiente per la gestione dei dati, ed è considerata un'alternativa alla popolarissima libreria pandas. Fornisce un'ampia gamma di funzionalità che facilitano diverse attività di manipolazione e analisi dei dati. Alcune delle caratteristiche e dei vantaggi principali dell'uso di Polars includono:
Polars è progettata con un'attenzione particolare alle prestazioni. Sfrutta l'elaborazione parallela e tecniche di ottimizzazione della memoria, consentendole di elaborare grandi dataset significativamente più velocemente rispetto ai metodi tradizionali.
Polars offre un set completo di strumenti per la manipolazione dei dati, che include operazioni essenziali come filtraggio, ordinamento, raggruppamento, join e aggregazione. Pur non avendo ancora la stessa vastità di funzionalità di pandas a causa della sua relativa novità, copre circa l'80% delle operazioni comuni presenti in Pandas.
Polars adotta una sintassi concisa e intuitiva, facile da imparare e utilizzare. La sua sintassi ricorda quella di popolari librerie Python come pandas, permettendo agli utenti di adattarsi rapidamente a Polars e sfruttare le conoscenze già acquisite.
Al cuore di Polars ci sono le strutture DataFrame e Series, che offrono un'astrazione familiare e potente per lavorare con dati tabellari. Le operazioni sui DataFrame in Polars possono essere concatenate, abilitando trasformazioni dei dati efficienti e concise.
Polars incorpora la valutazione lazy, che prevede l'esame e l'ottimizzazione delle query per migliorarne le prestazioni e ridurre il consumo di memoria. Quando lavori con Polars, la libreria analizza le tue query e cerca opportunità per accelerarne l'esecuzione o ridurre l'uso di memoria. Al contrario, Pandas supporta esclusivamente la valutazione eager, per cui le espressioni vengono valutate immediatamente non appena incontrate.
pandas, una libreria ampiamente adottata, è nota per la sua flessibilità e facilità d'uso. Tuttavia, quando si lavora con grandi dataset, Pandas può soffrire di colli di bottiglia prestazionali a causa dell'esecuzione single-thread. All'aumentare delle dimensioni del dataset, i tempi di elaborazione possono diventare proibitivi, limitando la produttività.
Polars è stata progettata specificamente per gestire grandi dataset in modo efficiente. Con la sua strategia di valutazione lazy e le capacità di esecuzione parallela, Polars eccelle nell'elaborare rapidamente quantità consistenti di dati. Distribuendo i calcoli su più core CPU, Polars sfrutta il parallelismo per offrire notevoli guadagni prestazionali. Vedi il test di confronto sulla velocità tra Pandas e Polars di Yuki.

Per un confronto completo tra Polars e pandas, dai un'occhiata al nostro articolo dedicato.
Polars può essere installata tramite pip, il gestore dei pacchetti di Python. Apri l'interfaccia a riga di comando ed esegui il seguente comando:
install polars
Polars fornisce metodi pratici per caricare dati da varie fonti, inclusi file CSV, file Parquet e DataFrame di Pandas. I metodi per leggere file CSV o Parquet sono gli stessi della libreria pandas.
# read csv file
import polars as pl
data = pl.read_csv('https://raw.githubusercontent.com/pycaret/pycaret/master/datasets/diamond.csv')
# check the head
data.head()
Output:

Il tipo di data è polars.DataFrame.
type(data)
>>> polars.dataframe.frame.DataFrame
Output:

Polars offre un set completo di funzionalità per la manipolazione dei dati, permettendoti di selezionare, filtrare, ordinare, trasformare e ripulire i tuoi dati con facilità. Esploriamo alcune attività comuni di manipolazione dei dati e come realizzarle con Polars:
Per selezionare colonne specifiche da un DataFrame, puoi usare il metodo select(). Ecco un esempio:
import polars as pl
# Load diamond data from a CSV file
df = pl.read_csv('https://raw.githubusercontent.com/pycaret/pycaret/master/datasets/diamond.csv')
# Select specific columns: carat, cut, and price
selected_df = df.select(['Carat Weight', 'Cut', 'Price'])
# show selected_df head
selected_df.head()
Output:

Il filtraggio delle righe in base a determinate condizioni può essere effettuato usando il metodo filter(). Ad esempio, per filtrare le righe in cui i carati sono maggiori di 1,0, puoi fare così:
import polars as pl
# Load diamond data from a CSV file
df = pl.read_csv('https://raw.githubusercontent.com/pycaret/pycaret/master/datasets/diamond.csv')
# filter the df with condition
filtered_df = df.filter(pl.col('Carat Weight') > 2.0)
# show filtered_df head
filtered_df.head()
Output:

Polars fornisce il metodo sort() per ordinare un DataFrame in base a una o più colonne. Ecco un esempio:
import polars as pl
# Load diamond data from a CSV file
df = pl.read_csv('https://raw.githubusercontent.com/pycaret/pycaret/master/datasets/diamond.csv')
# sort the df by price
sorted_df = df.sort(by='Price')
# show sorted_df head
sorted_df.head()
Output:

Polars mette a disposizione metodi pratici per gestire i valori mancanti. Il metodo drop_nulls() consente di eliminare le righe che contengono qualsiasi valore mancante:
import polars as pl
# Load diamond data from a CSV file
df = pl.read_csv('https://raw.githubusercontent.com/pycaret/pycaret/master/datasets/diamond.csv')
# drop missing values
cleaned_df = df.drop_nulls()
# show cleaned_df head
cleaned_df.head()
Output:

In alternativa, puoi usare il metodo fill_nulls() per sostituire i valori mancanti con un valore predefinito specificato o con un metodo di riempimento.
Per raggruppare i dati in base a colonne specifiche, puoi usare il metodo groupby(). Ecco un esempio che raggruppa i dati per la colonna Cut e calcola il Price medio per ciascun gruppo:
import polars as pl
# Load diamond data from a CSV file
df = pl.read_csv('https://raw.githubusercontent.com/pycaret/pycaret/master/datasets/diamond.csv')
# group by cut and calc mean of price
grouped_df = df.groupby(by='Cut').agg(pl.col('Price').mean())
# show grouped_df head
grouped_df.head()
Output:

Nell'output sopra puoi vedere il prezzo medio dei diamanti per dimensione Cut.
Polars offre opzioni flessibili per effettuare join e combinare DataFrame, permettendoti di unire e concatenare dati da diverse fonti. Per eseguire un'operazione di join, puoi usare il metodo join(). Ecco un esempio che mostra un inner join tra due DataFrame basato su una colonna chiave comune:
import polars as pl
# Create the first DataFrame
df1 = pl.DataFrame({
'id': [1, 2, 3, 4],
'name': ['Alice', 'Bob', 'Charlie', 'David']
})
# Create the second DataFrame
df2 = pl.DataFrame({
'id': [2, 3, 5],
'age': [25, 30, 35]
})
# Perform an inner join on the 'id' column
joined_df = df1.join(df2, on='id')
# Display the joined DataFrame
joined_df
Output:

In questo esempio, creiamo due DataFrame (df1 e df2) utilizzando il costruttore pl.DataFrame. Il primo DataFrame df1 contiene le colonne id e name, mentre il secondo DataFrame df2 contiene le colonne id e age. Eseguiamo quindi un inner join sulla colonna id usando il metodo join(), specificando la colonna id come chiave di join.
Polars offre un'integrazione fluida con altre popolari librerie Python, consentendo agli analisti di dati di sfruttare un'ampia gamma di strumenti e funzionalità. Esploriamo due aspetti chiave dell'integrazione: lavorare con altre librerie e l'interoperabilità con Pandas.
Polars si integra facilmente con librerie come NumPy e PyArrow, permettendo agli utenti di combinare i punti di forza di più strumenti nei propri flussi di lavoro di analisi dei dati. Con l'integrazione di NumPy, Polars converte senza sforzo tra DataFrame Polars e array NumPy, sfruttando le potenti capacità di calcolo scientifico di NumPy. Questa integrazione garantisce transizioni di dati fluide e consente agli analisti di applicare direttamente funzioni NumPy ai dati in Polars.
Allo stesso modo, sfruttando PyArrow, Polars ottimizza il trasferimento dei dati tra Polars e sistemi basati su Arrow. Questa integrazione consente di lavorare senza soluzione di continuità con dati archiviati in formato Arrow e di sfruttare le capacità di manipolazione dei dati ad alte prestazioni di Polars.
Polars offre una conversione senza intoppi dei DataFrame Polars in DataFrame Pandas. Ecco un esempio che illustra la conversione da Polars a pandas.
import polars as pl
import pandas as pd
# Create a Polars DataFrame
df_polars = pl.DataFrame({
'column_A': [1, 2, 3],
'column_B': ['apple', 'banana', 'orange']
})
# Convert Polars DataFrame to Pandas DataFrame
df_pandas = df_polars.to_pandas()
# Display the Pandas DataFrame
df_pandas
Output:

Polars è una libreria potente per la manipolazione e l'analisi dei dati ad alte prestazioni in Python. Le sue ottimizzazioni in termini di velocità e prestazioni la rendono una scelta ideale per gestire grandi dataset in modo efficiente.
Con la sua sintassi espressiva e le strutture DataFrame, Polars offre un'interfaccia familiare e intuitiva per i compiti di manipolazione dei dati. Inoltre, Polars si integra perfettamente con altre librerie Python come NumPy e PyArrow, ampliandone le capacità e permettendo agli utenti di sfruttare un ecosistema diversificato di strumenti.
La possibilità di convertire i DataFrame Polars in DataFrame pandas garantisce interoperabilità e facilita l'integrazione di Polars nei flussi di lavoro esistenti. Che tu stia lavorando con tipi di dati complessi, gestendo grandi dataset o cercando miglioramenti prestazionali, Polars offre un set di strumenti completo per sprigionare tutto il potenziale delle tue attività di analisi dei dati.
I migliori corsi di manipolazione dei dati in Python
Corso
Corso
blog
Tim Lu
12 min

blog
Abid Ali Awan
10 min

blog
Abid Ali Awan
15 min