50% off DataCamp Premium. 700+ courses, half price. Start learning today.
In de wereld van data-analyse is Python een populaire taal dankzij zijn veelzijdigheid en uitgebreide ecosysteem aan bibliotheken. Datamanipulatie en -analyse spelen een cruciale rol bij het verkrijgen van inzichten en het nemen van gefundeerde beslissingen. Maar naarmate datasets blijven groeien in omvang en complexiteit, wordt de behoefte aan high-performance oplossingen steeds belangrijker.
Het efficiënt verwerken van grote datasets vereist tools die snelle berekeningen en geoptimaliseerde operaties leveren. Hier komt Polars om de hoek kijken. Polars is een krachtige open-sourcebibliotheek die specifiek is ontwikkeld voor high-performance datamanipulatie en -analyse in Python.
Functies van Polars
Polars is een DataFrame-bibliotheek die volledig in Rust is geschreven en is gebouwd om Python-ontwikkelaars een schaalbaar en efficiënt framework te bieden voor het werken met data. Het wordt gezien als een alternatief voor de zeer populaire pandas-bibliotheek. Het biedt een breed scala aan functionaliteiten die uiteenlopende taken voor datamanipulatie en -analyse ondersteunen. Enkele belangrijke kenmerken en voordelen van Polars zijn onder andere:
1. Snelheid en performance
Polars is ontworpen met performance in gedachten. Het maakt gebruik van parallelle verwerking en technieken voor geheugenoptimalisatie, waardoor het grote datasets aanzienlijk sneller kan verwerken dan traditionele methoden.
2. Mogelijkheden voor datamanipulatie
Polars biedt een uitgebreide toolkit voor datamanipulatie, met essentiële operaties zoals filteren, sorteren, groeperen, joinen en aggregeren. Hoewel Polars door zijn relatieve nieuwheid niet dezelfde enorme functionaliteitsomvang heeft als pandas, dekt het ongeveer 80% van de veelvoorkomende operaties die je in pandas vindt.
3. Expressieve syntaxis
Polars gebruikt een beknopte en intuïtieve syntaxis, waardoor het gemakkelijk te leren en te gebruiken is. De syntaxis doet denken aan populaire Python-bibliotheken zoals pandas, zodat gebruikers snel kunnen overstappen op Polars en hun bestaande kennis kunnen benutten.
4. DataFrame- en Series-structuren
De kern van Polars bestaat uit de DataFrame- en Series-structuren, die een vertrouwde en krachtige abstractie bieden voor het werken met tabeldata. DataFrame-bewerkingen in Polars kunnen aan elkaar worden gekoppeld, wat efficiënte en beknopte datatransformaties mogelijk maakt.
5. Polars ondersteunt luie evaluatie
Polars maakt gebruik van luie evaluatie, waarbij query’s worden onderzocht en geoptimaliseerd om de performance te verbeteren en het geheugengebruik te minimaliseren. Wanneer je met Polars werkt, analyseert de bibliotheek je query’s en zoekt die naar mogelijkheden om de uitvoering te versnellen of het geheugenverbruik te verminderen. Ter vergelijking: pandas ondersteunt alleen eager evaluatie, waarbij expressies direct worden geëvalueerd zodra ze worden aangetroffen.
Waarom kiezen voor Polars als we pandas al hebben?
pandas, een veelgebruikte bibliotheek, staat bekend om zijn flexibiliteit en gebruiksgemak. Maar bij grote datasets kan pandas last krijgen van performance-knelpunten door de afhankelijkheid van single-threaded uitvoering. Naarmate de dataset groter wordt, kunnen verwerkingstijden onwerkbaar lang worden, wat de productiviteit beperkt.
Polars is specifiek ontworpen om grote datasets efficiënt te verwerken. Met de strategie van luie evaluatie en parallelle uitvoering blinkt Polars uit in het snel verwerken van grote hoeveelheden data. Door berekeningen over meerdere CPU-cores te verdelen, benut Polars parallelisme om indrukwekkende performancewinst te leveren. Zie de snelheidstest tussen pandas en Polars door Yuki.

Voor een volledige vergelijking van Polars vs pandas kun je ons aparte artikel bekijken.
Polars installeren
Polars kan worden geïnstalleerd via pip, de Python-package manager. Open je command line-interface en voer de volgende opdracht uit:
install polars
Een dataset laden in Polars
Polars biedt handige methoden om data uit verschillende bronnen te laden, waaronder CSV-bestanden, Parquet-bestanden en pandas-DataFrames. De methoden om een CSV- of Parquet-bestand te lezen zijn hetzelfde als in de pandas-bibliotheek.
# 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:

Het type van data is polars.DataFrame.
type(data)
>>> polars.dataframe.frame.DataFrame
Output:

Veelvoorkomende functies voor datamanipulatie met Polars
Polars biedt een uitgebreide set functionaliteiten voor datamanipulatie, zodat je eenvoudig data kunt selecteren, filteren, sorteren, transformeren en opschonen. Laten we enkele veelvoorkomende taken voor datamanipulatie verkennen en bekijken hoe je die met Polars uitvoert:
1. Data selecteren en filteren
Om specifieke kolommen uit een DataFrame te selecteren, kun je de methode select() gebruiken. Hier is een voorbeeld:
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:

Rijen filteren op basis van bepaalde voorwaarden kan met de methode filter(). Om bijvoorbeeld rijen te filteren waar het karaat groter is dan 1,0, kun je het volgende doen:
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:

2. Data sorteren en ordenen
Polars biedt de methode sort() om een DataFrame te sorteren op basis van één of meer kolommen. Hier is een voorbeeld:
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:

3. Omgaan met missende waarden
Polars biedt handige methoden om met missende waarden om te gaan. Met de methode drop_nulls() kun je rijen verwijderen die missende waarden bevatten:
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:

Je kunt ook de methode fill_nulls() gebruiken om missende waarden te vervangen door een opgegeven standaardwaarde of vulmethode.
4. Data groeperen op specifieke kolommen
Om data te groeperen op specifieke kolommen, kun je de methode groupby() gebruiken. Hier is een voorbeeld dat de data groepeert op de kolom Cut en de gemiddelde Price voor elke groep berekent:
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:

In de bovenstaande output zie je de gemiddelde prijs van diamanten per Cut-categorie.
5. DataFrames joinen en combineren
Polars biedt flexibele opties om DataFrames te joinen en te combineren, zodat je data uit verschillende bronnen kunt samenvoegen en aaneenrijgen. Voor een join-operatie kun je de methode join() gebruiken. Hier is een voorbeeld van een inner join tussen twee DataFrames op basis van een gemeenschappelijke sleutelkolom:
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 dit voorbeeld maken we twee DataFrames (df1 en df2) met de constructor pl.DataFrame. Het eerste DataFrame df1 bevat de kolommen id en name, en het tweede DataFrame df2 bevat de kolommen id en age. Vervolgens voeren we een inner join uit op de kolom id met de methode join(), waarbij we de kolom id als joinsleutel opgeven.
Integratie en interoperabiliteit
Polars biedt naadloze integratie met andere populaire Python-bibliotheken, zodat data-analisten gebruik kunnen maken van een breed scala aan tools en functionaliteiten. Laten we twee belangrijke aspecten van integratie bekijken: werken met andere bibliotheken en interoperabiliteit met pandas.
Polars integreren met andere Python-bibliotheken
Polars integreert handig met bibliotheken zoals NumPy en PyArrow, zodat gebruikers de krachten van meerdere tools kunnen combineren in hun data-analyseworkflows. Met NumPy-integratie zet Polars moeiteloos Polars-DataFrames en NumPy-arrays in elkaar om, waarbij het de krachtige wetenschappelijke rekenmogelijkheden van NumPy benut. Deze integratie zorgt voor soepele datatransities en stelt analisten in staat om NumPy-functies direct op Polars-data toe te passen.
Op vergelijkbare wijze optimaliseert Polars, door gebruik te maken van PyArrow, de gegevensoverdracht tussen Polars en op Arrow gebaseerde systemen. Deze integratie maakt het mogelijk om naadloos te werken met data die in Arrow-indeling is opgeslagen en benut de high-performance datamanipulatiemogelijkheden van Polars.
Polars-DataFrames converteren naar pandas-DataFrames
Polars biedt een naadloze conversie van Polars-DataFrames naar pandas-DataFrames. Hier is een voorbeeld dat de conversie van Polars naar pandas illustreert.
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:

Conclusie
Polars is een krachtige bibliotheek voor high-performance datamanipulatie en -analyse in Python. Dankzij de snelheid en performance-optimalisaties is het een ideale keuze voor het efficiënt verwerken van grote datasets.
Met de expressieve syntaxis en DataFrame-structuren biedt Polars een vertrouwde en intuïtieve interface voor taken rond datamanipulatie. Daarnaast integreert Polars naadloos met andere Python-bibliotheken zoals NumPy en PyArrow, waardoor de mogelijkheden worden uitgebreid en gebruikers een divers ecosysteem aan tools kunnen benutten.
De mogelijkheid om Polars-DataFrames naar pandas-DataFrames te converteren zorgt voor interoperabiliteit en maakt het eenvoudig om Polars in bestaande workflows te integreren. Of je nu met complexe datatypes werkt, grote datasets verwerkt of op zoek bent naar performanceverbeteringen, Polars biedt een complete toolkit om het volle potentieel van je data-analyse te ontsluiten.
Onderwerpen

