4 पॉइंट द्वारा GN⁺ 2024-01-09 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • यह एक ओपन सोर्स DataFrame लाइब्रेरी है, जिसे ऐसे वातावरण के लिए बनाया गया है जहाँ single machine पर तेज़ data processing की ज़रूरत होती है, और इसने 57.5 करोड़+ downloads तथा 38,000+ GitHub stars दर्ज किए हैं
  • इसकी performance का मुख्य आधार Rust-आधारित multithreaded query engine है, साथ ही column-oriented processing, vectorization, SIMD और parallel execution भी शामिल हैं
  • यह MIT लाइसेंस के तहत लगातार उपलब्ध रहने वाली open source लाइब्रेरी है, और उसी API के साथ production workloads तक scale करने के लिए Polars Cloud भी उपलब्ध है
  • यह pandas की तुलना में 30x से अधिक performance improvement का दावा करता है, और derived TPC-H benchmark को c3-highmem-22 पर scale factor 10 तथा I/O शामिल शर्तों के साथ चलाया गया था
  • यह CSV, JSON, Parquet, Delta Lake, AVRO, Excel, Arrow, प्रमुख databases, S3 और Azure storage को support करता है, इसलिए मौजूदा data stack में जोड़ना आसान है

Polars कैसे उपलब्ध कराया जाता है

  • Polars data manipulation के लिए एक open source लाइब्रेरी है, और single machine पर सबसे तेज़ data processing solutions में से एक के रूप में स्थापित है
  • यह structured और typed API प्रदान करता है, और expressiveness तथा ease of use दोनों को साथ लेकर चलने का लक्ष्य रखता है
  • वर्तमान public metrics इस प्रकार हैं
    • 575M+ downloads
    • 38k+ GitHub stars
  • शुरुआत के दस्तावेज़ Get started में देखे जा सकते हैं
  • ओपन सोर्स Polars

    • Polars MIT लाइसेंस के तहत मुफ़्त में उपयोग की जा सकने वाली open source लाइब्रेरी है
    • इसे high-performance DataFrame लाइब्रेरी के रूप में उपलब्ध कराया जाता है और इसकी installation भी सरल है
    • installation के उदाहरण इस प्रकार हैं
      • Python: pip install polars
      • Rust: polars = { version = "x", features = ["lazy", ...]}
      • Node.js: const pl = require('nodejs-polars');
  • Polars Cloud

    • Polars Cloud एक managed solution है, जो notebook environment में Polars queries को cloud या on-premise production workloads तक scale करता है
    • उसी API का उपयोग करके बिना code changes के scale किया जा सकता है
    • deployment modes में Cloud और On-Prem दोनों supported हैं
    • billing केवल query execution पर होती है
    • इसे Polars Cloud पर आज़माया जा सकता है

Performance मॉडल और data integration

  • Polars की performance की नींव इसका Rust-आधारित multithreaded query engine और parallel processing design है
  • vectorization और column-oriented processing आधुनिक processors पर cache-coherent algorithms और उच्च performance को संभव बनाते हैं
  • derived independent TPC-H benchmark में इसकी कई solutions से तुलना की गई, जिसका उद्देश्य वास्तविक data cleaning tasks को पुनर्निर्मित करना है
    • pandas की तुलना में 30x से अधिक performance improvement संभव है
    • benchmark को c3-highmem-22 पर scale factor 10 और I/O शामिल शर्तों के साथ चलाया गया था
    • queries open source के रूप में सार्वजनिक हैं
    • अधिक जानकारी Learn more में देखी जा सकती है
  • Usability और execution optimization

    • उपयोगकर्ता queries को अपनी इच्छित शैली में लिखते हैं, और Polars का query optimizer कुशल execution method तय करता है
    • यह उपलब्ध CPU cores में काम बाँटकर बिना अतिरिक्त settings या serialization overhead के parallel execution करता है
    • यह Apache Arrow memory model का उपयोग करता है, जिससे मौजूदा data tools के साथ integration संभव होता है
    • zero-copy data sharing से tools के बीच collaboration cost कम की जा सकती है
    • इसे external dependencies के बिना machine के काफ़ी करीब डिज़ाइन किया गया है, ताकि API, memory और execution पर नियंत्रण रखा जा सके
    • memory से बड़े datasets को streaming API के ज़रिए process किया जा सकता है, इसलिए पूरे data को memory में लोड करना ज़रूरी नहीं है
  • समर्थित data formats

    • Polars सामान्य data formats के read और write को support करता है, इसलिए इसे मौजूदा data stack के साथ integrate किया जा सकता है
    • support का दायरा इस प्रकार है
      • Text: CSV, JSON
      • Binary: Parquet, Delta Lake, AVRO, Excel
      • IPC: Feather, Arrow
      • Databases: MySQL, Postgres, SQL Server, Sqlite, Redshift, Oracle
      • Cloud storage: S3, Azure Blob, Azure File

1 टिप्पणियां

 
GN⁺ 2024-01-09
Hacker News की राय
  • यह साफ़ दिखता है कि यह पेज उन लोगों के लिए लिखा गया है जो पहले से जानते हैं कि वे क्या देख रहे हैं। पहले ही वाक्य से टूल क्या है यह समझाने के बजाय “Polars is written from the ground up with performance in mind” जैसी गुणवत्ता की बात शुरू हो जाती है, और बाकी भी उसी तरह चलता है
    क्या कोई इसे 5 साल के बच्चे को समझाने की तरह बता सकता है कि यह क्या है और किस ज़रूरत के लिए अच्छा समाधान है?
    संपादन: आखिरकार मैंने इसे Pandas DataFrame के एक वैकल्पिक implementation के रूप में समझा। Google पर मिली https://realpython.com/pandas-dataframe/ व्याख्या के अनुसार, DataFrame 2-आयामी डेटा और labels रखने की एक संरचना है, और data science, machine learning, scientific computing जैसे data-intensive क्षेत्रों में व्यापक रूप से इस्तेमाल होता है, SQL table या Excel/Calc spreadsheet जैसा

    • बहुत से तकनीकी प्रोडक्ट्स की यही चिढ़ाने वाली कमी है। लक्ष्य पाठक, इस मामले में वह data scientist जो Pandas पसंद करता है लेकिन उसे धीमा और कम flexible मानता है, उससे बात करना स्वाभाविक है, लेकिन नए लोगों को इससे अलग-थलग महसूस होता है
      मैं Polars का लक्ष्य पाठक हूँ और कई महीनों से इसे आज़माने का सोच रहा हूँ, लेकिन टालता जा रहा हूँ। Pandas के निर्माता Wes McKinney ने आम analysis tools को समझाने वाली उपयोगी किताब https://wesmckinney.com/book/ लिखी है, इसलिए Pandas के प्रति मेरी कुछ वफ़ादारी बनी हुई है
    • यह Pandas, लेकिन तेज़ है। Pandas मूल open source dataframe library है, मज़बूत है और व्यापक रूप से इस्तेमाल होती है, लेकिन इसका दायरा बड़ा है और यह नए खिलाड़ी की तुलना में धीमी लगती है। “dataframe” शब्द ही उन लोगों के लिए तुरंत संकेत है जिन्होंने इसे पहले इस्तेमाल किया है
    • ऐसे पेज देखकर हर बार थोड़ा विनम्र महसूस होता है। “नई पीढ़ी के लिए DataFrame” सुनकर लगता है, क्या मैं सच में dataframe जानता हूँ, और “multi-threaded query engine” देखकर लगता है, क्या यह किसी database जैसा है?
      फिर pandas, modin, vaex जैसी चीज़ों से तुलना वाले ग्राफ़ आते हैं, और मैं उन्हें भी बिल्कुल नहीं जानता, तो लगता है कि यह मेरे लिए नहीं है। मुझे नई तकनीकें और प्रोजेक्ट्स पढ़ना और सीखना पसंद है, लेकिन यहाँ मेरे लिए पकड़ने लायक कुछ नहीं है
      जब मैं अपने मामूली web development की बातें करता हूँ, तब आम लोगों को शायद ऐसा ही महसूस होता होगा
    • निष्पक्ष रूप से देखें तो पेज का शीर्षक “Dataframes for the new Era” है, और शीर्षक के नीचे Get Started लिंक GitHub पेज पर मौजूद दस्तावेज़ों की ओर जाता है। GitHub डेटा विश्लेषण की पृष्ठभूमि वाले लोगों को समझाता है कि यह लाइब्रेरी क्या है: https://github.com/pola-rs/polars
    • मैं अभी “data” वाली दुनिया में खिंचता चला जा रहा हूँ, और यह अपनी अलग पृष्ठभूमि और संस्कृति वाला कोई समानांतर ब्रह्मांड लगता है। बहुत सी बातें ऐसी लगती हैं जैसे “Nincompoop की usability और ARSE2 की performance के साथ Antelope या Meringue instance से कनेक्ट करें”
      Polars की दिलचस्प बात यह है कि यह Pandas जैसा है, लेकिन ज़्यादा efficient Rust backend Arrow का उपयोग करता है, और इसमें query planner जैसी चीज़ें हैं जो operations के संयोजन को अधिक कुशल बनाती हैं। आम तौर पर Polars, Pandas की तुलना में काफ़ी अधिक efficient होता है, इसलिए जिन कामों के लिए पहले जटिल infrastructure चाहिए होता था, वे अब अक्सर एक ही मशीन पर हो जाते हैं
      यह Pandas के मुख्य डेवलपर द्वारा बनाई गई बहुत दोस्ताना प्रतिस्पर्धा है, और देखने में लगता है कि सबको यह पसंद है; समय के साथ इसके Pandas की जगह लेने की संभावना काफ़ी बड़ी दिखती है
  • संबंधित लेख:
    Detailed Comparison Between Polars, DuckDB, Pandas, Modin, Ponder, Fugue, Daft - https://news.ycombinator.com/item?id=37087279 - अगस्त 2023
    Polars: Company Formation Announcement - https://news.ycombinator.com/item?id=36984611 - अगस्त 2023
    Replacing Pandas with Polars - https://news.ycombinator.com/item?id=34452526 - जनवरी 2023
    Fast DataFrames for Ruby - https://news.ycombinator.com/item?id=34423221 - जनवरी 2023
    Modern Polars: A comparison of the Polars and Pandas dataframe libraries - https://news.ycombinator.com/item?id=34275818 - जनवरी 2023
    Rust polars 0.26 is released - https://news.ycombinator.com/item?id=34092566 - दिसंबर 2022
    Polars: Fast DataFrame library for Rust and Python - https://news.ycombinator.com/item?id=29584698 - दिसंबर 2021
    Polars: Rust DataFrames Based on Apache Arrow - https://news.ycombinator.com/item?id=23768227 - जुलाई 2020

  • मैंने Pandas कई साल इस्तेमाल किया, लेकिन हमेशा ऐसा लगा जैसे गेंद को पहाड़ी पर ऊपर की ओर लुढ़का रहा हूँ। join जैसे सरल कामों में भी यही महसूस होता था, और index reset करना न भूलो यह भी याद रखना पड़ता था
    Polars लगभग हर मामले में Pandas से बेहतर लगता है। यह तेज़ है, multi-core का उपयोग करता है, कम memory लेता है, और इसका API ज़्यादा intuitive है। यह अभी अपेक्षाकृत नई library है, इसलिए कुछ कमियाँ हैं, लेकिन अगर नया project है तो कम से कम इसे evaluate करना बनता है
    Rust ecosystem को आसानी से इस्तेमाल कर पाना भी शानदार है। मैंने खुद plugin इस्तेमाल करके functions को parallelize किया और कुछ geospatial code को 100x तेज़ बना दिया

    • join का उदाहरण देना थोड़ा ironic है। मुझे हमेशा लगा कि Pandas की सबसे बड़ी समस्या documentation है। उदाहरण के लिए, क्या तुम्हें पता था कि index का इस्तेमाल किए बिना dataframes को join करने का तरीका है? उसका नाम “join” नहीं बल्कि merge है
      Pandas पर शुरुआत में R की terminology और usage patterns का काफ़ी असर था, और R में “merge” पहले से “join” के अर्थ में आम था। अगर तुमने 2015 के आसपास Pandas सीखना शुरू किया और R पहले से नहीं जानते थे, तो इसे जल्दी सीखना मुश्किल रहा होगा
    • जानना चाहता हूँ कि लोग PRQL(prql-lang.org) को कैसे देखते हैं। मेरी नज़र में यह Polars या Pandas जैसी usability और developer experience को SQL की ताकत और सार्वभौमिकता के साथ जोड़ता है
      Queries को सिर्फ Polars और Pandas ही नहीं, बल्कि DuckDB, ClickHouse, BigQuery, Redshift, Postgres, Trino/Presto, SQLite जैसे किसी भी मनचाहे SQL-compatible execution engine पर चलाया जा सकता है
      join की syntax और semantics सबसे मुश्किल हिस्सों में से एक है, इसलिए इस पर हाल में फिर चर्चा हो रही है। यह relational algebra का core है, और PRQL के R पर भी लागू होता है। PRQL के ज़्यादातर basic transforms map, filter, reduce जैसी simple list operations हैं, लेकिन join में monad composition को preserve करने के लिए सावधानी चाहिए। अपने विचार यहाँ छोड़े हैं: https://github.com/PRQL/prql/issues/3782#issuecomment-1811312787
      वह issue बंद हो चुका है, लेकिन अगर नया issue खोलो या @snth को tag करके अपनी राय दो तो अच्छा लगेगा। संदर्भ के लिए, मैं PRQL contributor हूँ
    • Pandas dataframe merge में आखिर मुश्किल क्या है, यह जानने की जिज्ञासा है
  • जब मैंने evaluate किया, तो सबसे बड़ा फायदा यह लगा कि इसका API Pandas की तुलना में काफ़ी ज़्यादा consistent और समझने में आसान था। शायद यह स्वाभाविक भी है, क्योंकि मैंने Pandas को उसके 20 बड़े versions के दौरान देखते-सीखते इस्तेमाल किया है
    लेकिन चूँकि इसका उपयोग अभी बहुत कम है, Copilot Polars code अच्छी तरह नहीं लिख पाया। इसलिए फिलहाल मैं Pandas और Copilot ही इस्तेमाल कर रहा हूँ। नई libraries के साथ इस तरह की बाधा होती है, यह बात मुझे पहली बार महसूस हुई

    • पहली बार किसी को सार्वजनिक रूप से यह कहते देख रहा हूँ कि वह Copilot support की वजह से कोई library पसंद करता है। जज नहीं कर रहा, बस दिलचस्प लगा
      फिर भी Copilot repository के भीतर बहुत तेज़ी से सीखता है। मैं एक बेहद custom stack इस्तेमाल करता हूँ, जो TS-Plus नाम के TypeScript fork पर बना है, जिसे उसके author भी न इस्तेमाल करते हैं न recommend करते हैं, फिर भी Copilot काफ़ी अच्छा TS-Plus code निकाल लेता है
      कुछ examples देखने के बाद, यह कम करके नहीं आँकना चाहिए कि boilerplate वाले चरण में Copilot काफ़ी अच्छा हो सकता है
    • Copilot support एक chicken-and-egg problem है। उसे दूसरों के code पर train होना पड़ता है, लेकिन अगर लोग Copilot के बिना Polars code नहीं लिखेंगे, तो Copilot भी Polars code बेहतर लिखना नहीं सीखेगा
    • जब मैंने js की दूसरी dataframe library danfo.js इस्तेमाल की, तब भी कुछ ऐसा ही हुआ। Copilot features और method names को बस hallucinate कर देता था
      docs पढ़कर काम चल जाता था, इसलिए यह कोई बड़ी समस्या नहीं थी, लेकिन जो चाहिए वह Copilot तुरंत न दे पाए तो झुंझलाहट होती थी
    • अगर तुम मानते हो कि API ज़्यादा consistent और समझने में आसान है, फिर सिर्फ इसलिए Pandas पर टिके रहोगे कि Copilot उसे आसान बनाता है? तुम्हारे लिए भी, और open source innovation के लिए भी, वही tool इस्तेमाल करना बेहतर है जिसे तुम बेहतर मानते हो
      मैं Pandas API लंबे समय से इस्तेमाल करता रहा हूँ और मुझे वह पसंद नहीं था। सीखने, tools, mindset और skills को लगातार बेहतर करने के मामले में मैं काफ़ी proactive हूँ
    • Polars library तेज़ी से बदल रही है। मैं Copilot इस्तेमाल नहीं करता, लेकिन system instructions में यह जैसी ताज़ा जानकारी जोड़कर कि with_column बदलकर with_columns हो गया है, और docs की सामग्री भी जोड़कर, मुझे ChatGPT से काफ़ी अच्छे नतीजे मिले हैं
  • जब Deno ने Jupyter support लॉन्च किया था, तब nodejs-polars supported core data science libraries में से एक था
    https://blog.jupyter.org/bringing-modern-javascript-to-the-jupyter-notebook-fc998095081e
    मैं व्यक्तिगत रूप से data science का आदमी नहीं हूँ, लेकिन JS/Jupyter ecosystem अभी शुरुआती दौर में है, यह देखते हुए TypeScript में pola.rs-आधारित analysis शुरू करना हैरान करने वाली तेजी से संभव था
    JS bindings में निश्चित रूप से सुधार की गुंजाइश है, लेकिन accessibility बढ़ी है तो उम्मीद है कि इस पर लगातार iteration होगी

    • मैं हमेशा JS में Pandas जैसा कुछ चाहता था, यह अभी पता चला
  • Polars वाकई रोमांचक है और इसकी speed performance भी प्रभावशाली है, लेकिन vaex, modin, dask को उसी benchmark में compare करना खटकता है
    ये सभी libraries out-of-core data processing को target करती हैं, यानी जब data इतना बड़ा हो कि computation कई machines पर फैले। इन्हें single-machine dataframe library से compare करना अजीब है, और overhead ज़्यादा होने के कारण ये स्वाभाविक रूप से धीमी होंगी
    ऐसे libraries वाले context में Polars इस्तेमाल करने की नौबत कम ही आती है, इसलिए benchmark में इन्हें समकक्ष की तरह दिखाना थोड़ा हास्यास्पद है। ऊपर से DuckDB, जिसे Polars जैसे context में इस्तेमाल किया जा सकता है और जो कई मामलों में उससे तेज़ भी है, benchmark में है ही नहीं
    Polars की software engineering बेहतरीन काम है, और इसे ऐसे भ्रामक benchmarks की ज़रूरत नहीं है

    • बाकी का नहीं कह सकता, लेकिन Dask single machine पर भी इस्तेमाल किया जा सकता है, और वही Dask इस्तेमाल करने का सबसे आसान तरीका भी है। यह dataframe को partitions में बाँटकर हर core पर process करता है और operations को parallelize करता है
      बिना किसी configuration के Pandas के मुकाबले 2x performance improvement मिल सकता है, और कुछ operations में मैंने 5x तक देखा है
    • Pandas के creator द्वारा बनाया गया Python dataframe Ibis, DuckDB को default backend की तरह इस्तेमाल करता है, और कुछ query exceptions को छोड़कर आम तौर पर ऐसे benchmarks में Polars को हरा देता है
  • मैं Polars को सीधे इस्तेमाल नहीं करता, बल्कि DuckDB workflow में इसे materialization format के रूप में इस्तेमाल करता हूँ
    duckdb.query(sql).pl() , duckdb.query(sql).df() की तुलना में बहुत तेज़ है। Polars में यह zero-copy होने की वजह से लगभग तुरंत खत्म हो जाता है, लेकिन Pandas में DataFrame बड़ा हो तो काफी समय लगता है। और syntax थोड़ा अलग होने के अलावा इसे Pandas DataFrame की तरह manipulate भी किया जा सकता है
    बड़े dataset संभालने के लिए यह बहुत अच्छा है

  • लगता है Greenspun के दसवें नियम(https://en.wikipedia.org/wiki/Greenspun's_tenth_rule)) का कोई corollary होना चाहिए। कुछ ऐसा कि पर्याप्त रूप से जटिल data analysis library आखिरकार SQL का आधा हिस्सा ad-hoc, unofficial spec, bug-prone और slow तरीके से implement करने लगती है
    मैं कभी-कभी Pandas इस्तेमाल करता हूँ, और शायद इसे भी इस्तेमाल करूँगा, लेकिन हमेशा सोचता हूँ कि काश मैंने जिस data पर काम कर रहा हूँ उसे सीधे Postgres में डालकर शुरू किया होता
    मैं database expert भी नहीं हूँ और Python मुझे कहीं ज़्यादा सहज लगता है, फिर भी tabular data को select, sort, filter और join करने में SQL कहीं बेहतर है

    • DuckDB और duckdb-prql extension देखने की सलाह दूँगा
      DuckDB data की copy या duplication के बिना Polars, Pandas, और Arrow format के data को सीधे SQL से संभालने देता है
      duckdb-prql आपको PRQL(prql-lang.org) इस्तेमाल करने देता है, और मेरी नज़र में यह SQL की ताकत और सार्वभौमिकता को Polars या Pandas जैसी usability और developer experience के साथ जोड़ता है। बता दूँ कि मैं PRQL contributor हूँ
    • ऐसा किया जा सकता है, लेकिन अगर query “analytical” है, तो performance बहुत खराब हो सकती है और flexibility व expressiveness भी कम हो सकती है
      इसकी जगह DuckDB देखना बेहतर होगा। इसका SQL implementation न ad-hoc है, न bug से भरा, न slow, न अधूरा। spec कितना formal है, यह पक्का नहीं कह सकता, लेकिन यह Polars के साथ compatible है
    • मेरी राय में lazy dataframe syntax query engine के frontend के रूप में कहीं बेहतर है। Polars भी SQL support करता है, लेकिन bugs आमतौर पर frontend में नहीं बल्कि query engine में आते हैं
      इस तरह के engine से की जाने वाली queries में Postgres, OLAP query engine की तुलना में single-digit multiple से धीमा होगा
    • Pandas के creator ने इसी वजह से Postgres backend वाला Ibis बनाया: https://ibis-project.org/backends/postgresql
      Python dataframe और SQL को साथ इस्तेमाल करने का यह बेहतर तरीका है
  • कुछ महीने पहले मैंने एक बड़ा Pandas codebase Polars में migrate करने की कोशिश की थी। मुझे Python में analysis या data pipelining करना खास पसंद नहीं है, और complex transformations में Pandas, Julia या R(dataframes.jl, dplyr इस्तेमाल करते हुए) की तुलना में 2~5 गुना ज़्यादा समय लेता है
    दुर्भाग्य से Polars भी इसका जवाब नहीं निकला। standard operations में bugs बहुत थे, और Pandas के साथ interoperability अस्थिर थी। कई libraries input के रूप में Pandas DataFrame मांगती हैं, इसलिए यह समस्या है। API भी modern dataframe library के हिसाब से काफी verbose है, हालांकि फिर भी Pandas से बेहतर है
    उम्मीद है समय के साथ यह सुधरेगा, लेकिन अभी के लिए Pandas के ऊपर DuckDB इस्तेमाल करना सबसे बेहतर लगा। यह Polars जितना तेज़ है, लेकिन ज़्यादा stable है और interoperability भी बेहतर है
    उम्मीद है कि किसी दिन Python dataframe ecosystem भी R की तरह उस मुकाम पर पहुँचेगा जहाँ intuitive API वाली analysis-oriented dataframe library(dplyr) और high-performance dataframe library(data.table) को साथ में आसानी से इस्तेमाल किया जा सके

    • मुझे भी इसकी verbosity परेशान करती थी। Pandas भी data.table जैसी चीज़ों की तुलना में काफी verbose है, लेकिन Polars में “data manipulation tool” से ज़्यादा API इस्तेमाल करने जैसा एहसास होता है
      शायद मैं इसे exploratory data analysis या research के लिए इस्तेमाल न करूँ, लेकिन बेहतर performance की वजह से कुछ production scripts में इसका इस्तेमाल शुरू किया है
      R का dplyr + data.table संयोजन अब भी मुझे data manipulation का सबसे अच्छा अनुभव देता है। बस काश R में Matplotlib जैसी कोई चीज़ होती। ggplot बहुत high-level है और base graphics बहुत low-level। Scikit-Learn भी Caret की तुलना में कहीं ज़्यादा modular है, इसलिए Caret की कमी महसूस नहीं होती
    • PRQL(prql-lang.org) के बारे में आपकी क्या राय है, यह जानना चाहूँगा। इसका लक्ष्य SQL इस्तेमाल होने वाली हर जगह dplyr जैसा अनुभव देना है, और यह SQL में compile होता है
      मेरी नज़र में यह dplyr, Polars, Pandas के developer experience को SQL की ताकत और सार्वभौमिकता के साथ जोड़ता है। Queries को आप Polars, Pandas ही नहीं बल्कि DuckDB, ClickHouse, BigQuery, Redshift, Postgres, Trino/Presto, SQLite जैसे किसी भी SQL-compatible execution engine पर चला सकते हैं
      GitHub discussion(https://github.com/PRQL/prql/discussions) या Discord(https://discord.com/invite/XWxbCrWr) पर आपकी राय सुनना चाहूँगा। बता दूँ कि मैं PRQL contributor हूँ
    • अच्छा लगा कि आपने R, Python, और Julia के dataframes सभी इस्तेमाल किए हैं। जानना चाहूँगा कि इनमें से आपको सबसे ज़्यादा कौन सा पसंद आया। ecosystem की सीधी तुलना शायद न हो, लेकिन core operations जैसे कामों के हिसाब से कौन सबसे बेहतर लगा?
    • DuckDB backend वाला Ibis भी एक बार आज़माने लायक है। व्यक्तिगत रूप से मुझे Polars भी काफी पसंद है। developers आम तौर पर issues पर काफ़ी तेज़ी से प्रतिक्रिया देते हैं
  • हमारी data science टीम ने Polars का मूल्यांकन किया, लेकिन नतीजे मिले-जुले रहे। अगर कोई ऐसा हिस्सा है जहाँ performance बहुत महत्वपूर्ण है, तो इसे अपनाने पर विचार करेंगे, लेकिन इसके अलावा दर्जनों projects में Pandas को बदलने की लागत की वजह से रुख थोड़ा नकारात्मक था

    • मुझे लगता है यह आकलन सही है। अभी यह उस चरण से ज़्यादा प्रयोग करने का समय लगता है, न कि पहले से अच्छी तरह चल रहे Pandas को बदलने का
      API में अभी भी कुछ ऐसे breaking changes हैं जिनकी अपेक्षा की जा सकती है, और अगर यह कई projects में फैला हो तो maintenance का बोझ बन सकता है। फिर भी API पहले से ज़्यादा consistent लगती है, और कुल मिलाकर दिशा सही लगती है
    • पूरा codebase फिर से लिखना अच्छा विचार नहीं है। लेकिन नए code में इसे अपनाना या evaluate करना सार्थक हो सकता है
      खासकर क्योंकि Pandas interoperability की लागत बहुत कम है, और Arrow backend इस्तेमाल करने पर Pandas में zero-copy conversion भी काफ़ी आसानी से संभव है
    • आगे चलकर https://github.com/fugue-project/fugue भी है
    • यह जानने की उत्सुकता है कि क्या टीम pandasql इस्तेमाल करती है, या ज़्यादातर सीधे Pandas API का उपयोग करती है