A Pandas az adattudósok svájci bicskája, de nem hibátlan. Nagy adathalmazoknál lassú lehet és rengeteg memóriát fogyaszt. Szerencsére léteznek modernebb, gyorsabb és könnyebb eszközök. Ebben a cikkben öt olyan ingyenes Python könyvtárat mutatunk be, amelyekkel felgyorsíthatod az adatelemzést. Minden eszközhöz mellékelünk egy működő kódot is.
1. DuckDB: SQL az elemzésekhez
A DuckDB olyan az analitikának, mint az SQLite az adatbázisoknak. Segítségével közvetlenül futtathatsz SQL lekérdezéseket CSV fájlokon, anélkül, hogy külön adatbázis-szervert kellene telepítened.
Ideális választás, ha ismered az SQL-t, vagy gépi tanulási folyamatokban dolgozol.
Telepítés:
pip install duckdb
Példa a Titanic adatkészlettel:
Közvetlenül a CSV fájl URL-jére írunk egy SQL lekérdezést, majd az eredményt átalakítjuk DataFrame-mé.
import duckdb
url = "https://raw.githubusercontent.com/mwaskom/seaborn-data/master/titanic.csv"
# SQL lekérdezés közvetlenül a CSV-n
result = duckdb.query(f"""
SELECT sex, age, survived
FROM read_csv_auto('{url}')
WHERE age > 18
""").to_df()
print(result.head())
A DuckDB ötvözi az SQL sebességét a Python rugalmasságával.
2. Polars: A sebességbajnok
A Polars jelenleg az egyik legnépszerűbb alternatíva. Rust nyelven íródott, így elképesztően gyors és kevés memóriát igényel. A szintaxisa letisztult és logikus.
Telepítés:
pip install polars
Példa szűrésre:
A Polars read_csv funkciója azonnal betölti az adatokat, a szűrés pedig láncolt metódusokkal történik.
import polars as pl
url = "https://raw.githubusercontent.com/mwaskom/seaborn-data/master/titanic.csv"
df = pl.read_csv(url)
# Szűrés és oszlopkiválasztás egy lépésben
result = df.filter(pl.col("age") > 40).select(["sex", "age", "survived"])
print(result)
3. PyArrow: Oszlopalapú hatékonyság
A PyArrow egy könnyűsúlyú könyvtár oszlopalapú adatok kezelésére. Bár nem helyettesíti teljesen a Pandast, kiválóan alkalmas nagy fájlok gyors beolvasására és előfeldolgozására.
Telepítés:
pip install pyarrow
Példa az Iris adatkészlettel:
Itt először letöltjük a fájlt, majd a pyarrow számítási moduljával (pc) szűrünk.
import pyarrow.csv as csv
import pyarrow.compute as pc
import urllib.request
url = "https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv"
local_file = "iris.csv"
urllib.request.urlretrieve(url, local_file)
# Beolvasás PyArrow táblaként
table = csv.read_csv(local_file)
# Szűrés a számítási modullal
filtered = table.filter(pc.greater(table['sepal_length'], 5.0))
print(filtered.slice(0, 5))
4. Modin: Pandas, csak gyorsabban
Ha nem akarsz új szintaxist tanulni, a Modin a te eszközöd. Ugyanazt az API-t használja, mint a Pandas, de a háttérben párhuzamosítja a műveleteket az összes processzormagon.
Telepítés:
pip install "modin[ray]"
Példa (szinte azonos a Pandasszal):
Csak az import sort kell megváltoztatnod, minden más marad a régiben.
import modin.pandas as pd
url = "https://raw.githubusercontent.com/mwaskom/seaborn-data/master/titanic.csv"
df = pd.read_csv(url)
# Hagyományos Pandas szintaxis
adults = df[df["age"] > 18]
adults_small = adults[["survived", "sex", "age", "class"]]
print(adults_small.head())
5. Dask: Big Data kezelése
Mi a teendő, ha az adatfájl nagyobb, mint a számítógéped RAM-ja? A Dask a megoldás. „Lusta kiértékelést” (lazy evaluation) használ, vagyis nem tölt be mindent egyszerre a memóriába, hanem darabokban dolgozza fel az adatokat.
Telepítés:
pip install "dask[complete]"
Példa a Chicagói bűnözési adatokkal:
Ez a kód egy nagy CSV fájlt kezel anélkül, hogy lefagyna a géped.
import dask.dataframe as dd
import urllib.request
url = "https://data.cityofchicago.org/api/views/ijzp-q8t2/rows.csv?accessType=DOWNLOAD"
local_file = "chicago_crime.csv"
urllib.request.urlretrieve(url, local_file)
# Lusta beolvasás
df = dd.read_csv(local_file, dtype=str)
# A szűrés csak a 'head()' híváskor fut le valójában
thefts = df[df['Primary Type'] == 'THEFT']
thefts_small = thefts[["ID", "Date", "Primary Type", "Description", "District"]]
print(thefts_small.head())
Próbáld ki ezeket az eszközöket, és válaszd azt, amelyik a legjobban illeszkedik a projektedhez. A DuckDB és a Polars a sebesség királyai, a Modin a kényelemé, a Dask pedig a nagy adatmennyiségé.




