5 villámgyors Pandas alternatíva Pythonban

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é.

Kérjük, ellenőrizd a mező formátumát, és próbáld újra.
Köszönjük, hogy feliratkoztál.

vagyunk.hu hírlevél

Hozzászólás

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük