Dasturlash

Pandas Kutilganidan Ko'ra Kuchli Emas: Alternativalar

12-sentabr, 2026, 11:280 ko'rish3 daqiqa o'qish
Pandas Kutilganidan Ko'ra Kuchli Emas: Alternativalar

Pandas Python DataFrame kutubxonasi ko'pchilik tomonidan ishlatiladigan amaliy vosita bo'lsa-da, uning samarali bo'lmaganligi sababli foydalanuvchilar tarqalgan tizimlarga o'tishga majbur bo'lishadi. Bu maqolada Pandasning kamchiliklari va uning o'rniga keladigan alternativalar haqida gap kirishadi.

Pandasning muammolari

Pandas kutubxonasi ko'pchilik foydalanuvchilar uchun Exceldan keyingi qadam bo'lib, GB darajasidagi ma'lumotlar bilan ishlashda samarali bo'ladi. Biroq, 10 GB dan ortiq ma'lumotlar bilan ishlashda xotira muammolari, sekin hisoblash va murakkab API bilan bog'liq muammolar paydo bo'ladi. Bu holatda, foydalanuvchilar Spark, DataBricks, Snowflake yoki Dask kabi qimmatli vositalarga o'tishga majbur bo'lishadi.

A comparison of common DataFrame libraries and the rough data size you'd consider adopting them

Ammo, Pandasning samarali bo'lmaganligi sababli, foydalanuvchilar tarqalgan tizimlarga o'tishga majbur bo'lishadi. Bu holatda, 100 GB darajasidagi ma'lumotlar bilan ishlashda murakkab tizimlarni ishlatish zaruriy emas. Bu bo'shliqni Polars va DuckDB kabi zamonaviy, yuqori samarali, bir mashina vositalari to'ldirishi mumkin.

Bucketed query runtimes for the Amazon Redshift fleet

Big Data haqida

2024-yilda Amazon "Why TPC is not enough: An analysis of the Amazon Redshift fleet" nomli maqolani nashr etdi. Bu maqolada Amazonning o'zining tarqalgan analitik ma'lumotlar bazasi, Redshift, telemetriya ma'lumotlari va sanoat standartlari bilan solishtirildi. Maqolada, Amazonning mijozlari 94.68% hollarda 100 GB dan kam ma'lumotlar bilan ishlashadi.

Bucketed table sizes for the Amazon Redshift fleet

Bu ma'lumotlar shuni ko'rsatadiki, ko'pchilik foydalanuvchilar "Big Data" emas, balki "Medium Data" muammolariga duch kelishadi. Shuning uchun, ular "Medium Data" vositalarini talab qiladilar.

A graph showing cash usage as a percentage of all taxi rides in NYC between January 2019 and January 2023

Alternativalar

Pandasning o'rniga keladigan alternativalar sifatida DuckDB va Polarsni taklif qilamiz. Polars Rust asosidagi DataFrame kutubxonasi bo'lib, Pandasga o'xshaydi, ammo bir nechta muhim farqlarga ega. DuckDB esa in-memory analitik DB bo'lib, SQLite uchun analitik vosita hisoblanadi.

Ushbu vositalarning samaradorligini ko'rsatish uchun, 1 Billion Row Challenge testidan foydalanildi. Bu testda, 1 milliard qatorli CSV faylning min, mean va max qiymatlarini hisoblash vazifasi berildi. Eng tez implementatsiya 1.5 soniyada bajarildi.

    10 machines * 8GB * 1 second = 80GB of data

Pandasning kodini ko'rib chiqsak, u har bir qatorni ketma-ket va ochiq tarzda o'qiydi, guruhlaydi va keyinchalik aggregatsiya hisoblaydi. Bu usul sekin va xotira talab qiladigan bo'lishi mumkin.

    10^8 rows in a table * 1KB = 100GB

Yakun

Pandasning samarali bo'lmaganligi sababli, ko'pchilik foydalanuvchilar tarqalgan tizimlarga o'tishga majbur bo'lishadi. Ammo, bu tizimlar uchun asos bo'lgan vazifalar kam uchraydi. Shuning uchun, Polars va DuckDB kabi zamonaviy vositalarni ishlatish afzallikli bo'lishi mumkin.

def do_1brc_pandas(file_path: str):
    df = (
        pd.read_csv(file_path, sep=";", names=["station", "measurement"])
        .groupby("station")
        .agg({"measurement": ["min", "mean", "max"]})
        .round(2)
    )

Asl manba: eddie.codes

Manba: Hacker News
#Pandas #Polars #DuckDB #DataFrame #Big Data
Telegram da muhokama qilish