DuckDB in Python - The Next Pandas Killer?

Поделиться
HTML-код
  • Опубликовано: 24 ноя 2024

Комментарии • 56

  • @graymars1097
    @graymars1097 2 месяца назад +17

    I never tried duckdb but I'm convinced now thanks to you
    Pandas is great but "I can't query a DF like it's a DB using SQL" was one of my first compliants using pandas and "it needs its own process" is a huge deal breaker for data analysis specially in finance
    This solves all these problems 😮
    Great video 😊

  • @rsbenari
    @rsbenari 2 месяца назад +6

    Concise, complete, helpful. As usual. Thanks.

  • @jaybakerwork
    @jaybakerwork 2 месяца назад +4

    Big big fan of DuckDB. It is nice to be able to switch to SQL for some things. The engine is great. Pairing it with MotherDuck opens up some nice options.
    I like the relational api too.
    I switch between duckdb and polars.

  • @Andrew-ud3xl
    @Andrew-ud3xl 2 месяца назад +1

    For the speed this is very comparable to polars, I started using SQL within polars but have switched to using duckdb due to duck showing where errors come from and i dont think polars sql has all the functionality of duck.
    Being able to save as a dataframe is nice to change things such as date columns to UK format and the display options of the output table.

  • @pawjast
    @pawjast 2 месяца назад

    I would have never thought duckDB is so versatile and really cool replacement for Pandas even when working with local files!

  • @thenderaaa9252
    @thenderaaa9252 2 месяца назад +2

    Neat, but: Running the test with the DuckDB process second each time means possible skew due to OS caching. I would have run the test again with Pandas second. Would it have made a difference? One way to find out ....

  • @RobSeward7
    @RobSeward7 Месяц назад

    Love duckdb. I love this video. A comparison to polars would have been interesting too!

  • @vuongphaminh2293
    @vuongphaminh2293 2 месяца назад

    Love your videos, very helpful and informative! I have a suggestion that you could consider using AI completion tools like SuperMaven, Copilot, Tabnine, Cursor, etc., to speed up your typing. Watching you type long code lines slowly can be a bit tedious.

  • @nocturnomedieval
    @nocturnomedieval 2 месяца назад +13

    This time every new tool seems faster than pandas even after the 2.0 arrow-based upgrade

  • @carlmunkby6140
    @carlmunkby6140 2 месяца назад +6

    Any plans for making a video about airflow?

  • @ravlel1085
    @ravlel1085 2 месяца назад +1

    speed comparison has inefficient Pandas code. Try this approach: df.loc[df['C']

  • @InhumanBean
    @InhumanBean 2 месяца назад

    Really great intro, thank you for making this.

  • @apefu
    @apefu 2 месяца назад

    So if you don't need the sugar, just use a db already? I can't stress how much time this insight has saved me. Especially for live data.

  • @dandyexplorer4252
    @dandyexplorer4252 2 месяца назад +3

    Can you compare the speed of polars and duckdb?

  • @Jianfeng-ny7to
    @Jianfeng-ny7to 2 месяца назад +2

    when considering the speed, how about the use pd.read_csv, engine="pyarrow"? which is also very fastly load the big csv file

  • @andybecker5001
    @andybecker5001 2 месяца назад

    Duckdb is super convenient for one off analysis or those that don’t have extra hardware to run their own database server.

  • @nishantkumar9570
    @nishantkumar9570 2 месяца назад +1

    Can we do comparison between DuckDB vs Polars?

  • @joeingle1745
    @joeingle1745 2 месяца назад +10

    Those two queries are CTEs (Common Table Expressions) not sub-selects. Nit picking, but there is a difference.

    • @NeuralNine
      @NeuralNine  2 месяца назад +2

      Thanks for the clarification! :)

    • @marvinalone
      @marvinalone 2 месяца назад

      In my point of view, you can treat CTE as sub-selects, it's just more clear and better readibility as it can reuse in the query statement. But yes, they do have some differences. In the video, the author called them 'sub selects' or 'sub queryies' I think is okay.

    • @joeingle1745
      @joeingle1745 2 месяца назад

      @@marvinalone Apart from the fact that they're not sub-selects...

  • @MrBrannfjell
    @MrBrannfjell Месяц назад

    First impression with duckdb: They dont seem to support dictionary by default, so lets say you just want to dump a python dictionary to a flattened table in duckdb, no go (best workaround thus far is to turn it into a pyarrow/dataframe first). If you want to import json, you first have to save it to a file, and then load that file. Thats stupid if you are already carrying the json text from etc a web request response. I might just be stupid, but the documentation doesn't seem to give examples on how to just load data into duckdb without going through a stupid data proxy. I was hoping I could avoid all that if I used duckdb.

  • @rohitpammi
    @rohitpammi 2 месяца назад +1

    Really very informatic, thanks for sharing.

  • @lowkeygaming4716
    @lowkeygaming4716 2 месяца назад

    Thank you for another great video. I learned something new again.

  • @tmb8807
    @tmb8807 2 месяца назад

    I like this because anything that gives people more options is great.
    However an honest question - is the preference for SQL syntax an organic thing, or is it because of familiarity?
    I mean I totally get the dislike for the pandas API and I almost never use it myself now, unless I have to. But I find the cognitive load of both reading and writing SQL far greater than the expression syntax and method chaining of Polars. Is that just because I don't do enough SQL?

  • @timz2917
    @timz2917 2 месяца назад

    Is data transformation still better in Pandas or Polars? I appreciate that the analysis part is better in DuckDB.

  • @goodmanshawnhuang
    @goodmanshawnhuang 2 месяца назад +1

    Thanks for the video,i am considering querying a large set from bigquery then output to a csv file but better zip it, any suggestions please? Thanks

  • @togai-dev
    @togai-dev 28 дней назад

    Hi there, may I ask the theme name that you are using? Thanks

  • @BaronCorso
    @BaronCorso 2 месяца назад +1

    How about duckdb vs polars?

  • @xade8381
    @xade8381 2 месяца назад

    would be great if you could also cover cozo DB

  • @christopherc4526
    @christopherc4526 2 месяца назад

    Well done. Thank you

  • @jaybakerwork
    @jaybakerwork 2 месяца назад

    What is the go to screen capture that he is using that works on linux these days?

    • @nobiado484
      @nobiado484 2 месяца назад

      Same as rhe one for Windiws: OBS Studio.

  • @matheuspegorari1094
    @matheuspegorari1094 2 месяца назад

    Wtf. Now I can use csv files as tables and query them with sql. I’ve only heard about this. But never seen it being done so easily

  • @andreip9378
    @andreip9378 Месяц назад

    15:47 - results of aggregations are different btw.

  • @mapleigue
    @mapleigue 2 месяца назад

    Does anyone know how would this compare to a PySpark setup?

  • @egonkirchof
    @egonkirchof 2 месяца назад +4

    Fun fact: after all these pandas killers people still are using pandas.

    • @gs-e2d
      @gs-e2d 2 месяца назад

      Pandas is a different use case

    • @egonkirchof
      @egonkirchof 2 месяца назад

      @@gs-e2d So they should be called Pandas Killer but is a different use case.

  • @booster404
    @booster404 2 месяца назад +2

    This makes my thinking even more true "you master python then you master everything"

  • @AleksaMilic-d2e
    @AleksaMilic-d2e 2 месяца назад

    Interesting

  • @Rothbardo
    @Rothbardo 2 месяца назад

    Answer = yes

  • @philtoa334
    @philtoa334 2 месяца назад +1

    Thx_.

  • @ChristopherBruns-o7o
    @ChristopherBruns-o7o 2 месяца назад +2

    4:01 Lol he said INSERT INTO person.

  • @SuperLimeWorld
    @SuperLimeWorld 2 месяца назад

    Hi

  • @harikrishnanb7273
    @harikrishnanb7273 2 месяца назад

    not the next, it's the real killer

  • @iegorshevchenko8365
    @iegorshevchenko8365 2 месяца назад

    +++++++++

  • @HH-mw4sq
    @HH-mw4sq 2 месяца назад +1

    For the complex query, I have:
    query = """
    WITH filtered_data AS (
    SELECT job, AVG(age) as avg_age
    FROM personnel_df
    WHERE age > 25
    GROUP BY job
    ),
    job_counts AS (
    SELECT job, COUNT(*) as count
    FROM personnel_df
    GROUP BY job
    )
    SELECT fd.job, fd.avg_age, jc.count
    FROM filtered_data fd
    JOIN job_counts jc
    ON fd.job = jc.job
    WHERE jc,count > 1
    ORDER BY fd.avg_age DESC
    """
    print(conn.sql(query).df())
    I get the following error:
    Traceback (most recent call last):
    File "D:/python/DuckDB/foo1.py", line 60, in
    main()
    File "D:/python/DuckDB/foo1.py", line 55, in main
    print(conn.sql(query).df())
    duckdb.duckdb.ParserException: Parser Error: syntax error at or near ","
    I am running python3.12, using the IDLE interface. Can someone please explain how to correct this error?

    • @benrontol2010
      @benrontol2010 2 месяца назад +2

      probably this one "WHERE jc,count > 1", it should be "jc.count", period not comma.

    • @HH-mw4sq
      @HH-mw4sq 2 месяца назад +1

      @benrontol2010 - wow!!!! I looked that over about 100 times and missed that. Thank you very much.

    • @amalzulkipli2248
      @amalzulkipli2248 2 месяца назад

      @@benrontol2010 real chad!