Pivot tables with Pandas

Sdílet
Vložit
  • čas přidán 5. 09. 2024
  • What are pivot tables? How do they work? And how can you create them using Pandas? In this video, I explain why they're such useful tools in data analytics, and how we can easily create them with Pandas.
    As usual, the Jupyter notebooks for my videos are on GitHub: github.com/reu...
    Don't forget to subscribe to my free, weekly "Better developers" newsletter, at BetterDevelope...!

Komentáře • 93

  • @Maleficent_Method973
    @Maleficent_Method973 Před měsícem +1

    Just started learning python a few days ago, it's my first programming language as well.....very confusing so far...You have helped a lot even with a pretty short video. Thanks so much!

    • @ReuvenLerner
      @ReuvenLerner  Před měsícem

      I'm glad that the video helped -- keep at it, I promise that it'll get easier over time.

  • @reygaji4001
    @reygaji4001 Před rokem +2

    Omg, you are a godsend. Where have you been all this time when I was just starting to learn this stuff T_T Your videos are better than many python tutorials out there with millions of views damn

    • @ReuvenLerner
      @ReuvenLerner  Před rokem

      I'm delighted to hear that you enjoyed it! Thanks so much for your kind words.

  • @mosama22
    @mosama22 Před 6 měsíci +1

    Thank you so much for the beautiful videos, I just wish you had a direct link to the data please, so we can follow up with you.
    Thanks again though for the beautiful videos 🙂

    • @ReuvenLerner
      @ReuvenLerner  Před 6 měsíci

      Glad you are enjoying them! most of the data is (should be!) available from files.lerner.co.il/ .

  • @naimahrehman5997
    @naimahrehman5997 Před měsícem +1

    I believe that we can also achieve the outcome of the pivot table through groupby function

    • @ReuvenLerner
      @ReuvenLerner  Před měsícem +1

      You will indeed get a similar result by using groupby and specifying that you want to use two columns. However, the result will be a series with a multi-index, rather than a data frame with rows vs. columns. You can switch between such a series and a pivot table with stack and unstack.

  • @Kaelthas_Sunstrider
    @Kaelthas_Sunstrider Před 2 lety +2

    You’re an amazing teacher! I’m enjoying your book Python Workout :)

    • @ReuvenLerner
      @ReuvenLerner  Před 2 lety +1

      Thanks so much for your kind words, and for your support! (And hey, if you have a few moments to review the book on Amazon, that's always highly appreciated...) More is coming soon, BTW, with Pandas Workout!

    • @Kaelthas_Sunstrider
      @Kaelthas_Sunstrider Před 2 lety +1

      @@ReuvenLerner I’m glad you mentioned. Just got it via early access!

  • @33samogo
    @33samogo Před rokem +2

    Great explained! .pivot() is amazing, it's exactly what I was looking for, it's like y axes in "xy coordinate table", fantastic!

    • @ReuvenLerner
      @ReuvenLerner  Před rokem

      Delighted it helped!

    • @33samogo
      @33samogo Před rokem +1

      @@ReuvenLerner Thanks Reuven, I have one more question, how to create a list of lists from pivot table? Is there a function like DataFrame.iterrows() for pivot table?

    • @ReuvenLerner
      @ReuvenLerner  Před rokem +1

      @@33samogo A pivot table is a data frame, so all of the methods you know and love from data frames will also work there. So yes, you can use iterrows, but remember that when you turn a data frame into a list of lists, you're moving data from NumPy's compact and efficient storage to regular Python objects, which are neither compact nor efficient.

    • @33samogo
      @33samogo Před rokem +1

      @@ReuvenLerner Thank you! I struggle with data-frames for whole day, especially with multiindexing, I am trying to interpolate pivot table rows, that's why I need a list of row values to create a new interpolated one, but for sure there is a way to interpolate a whole pivot data-frame in to a tubular data data-frame also?!

    • @33samogo
      @33samogo Před rokem +1

      Pandas documentation : "Please note that only method='linear' is supported for DataFrame/Series with a MultiIndex." I need to apply quadratic interpolation, so pivot table is useful for me just to reshape the data-frame values, also I am not sure if data-frame length can be automatically adjusted during interpolation operation according to number of output values (from 20-->~1000). So, I know how to retrieve a row values from pivot table, change a type of values, apply interpolation and save values in list variable, now I need to automate the process for all rows in the pivot/data-frame table and save all list variables as data frame using for loop or comprehension. What are the steps to perform this operation in a "clean" way or what functions should I consider? I started with Pandas a week ago just for fun but now I'm fell in love with it, thank you.

  • @mario1ua
    @mario1ua Před 7 měsíci +1

    Hey Reuven, great tutorial, thanks! I've also watched your pivot and **kwargs videos and they were awesome too

    • @ReuvenLerner
      @ReuvenLerner  Před 7 měsíci +1

      I'm delighted to hear you enjoyed them! More are (hopefully) coming soon.

  • @YossiSoberano
    @YossiSoberano Před 2 lety +2

    Thanks Reuven, for another informative and educational video 👍

  • @Darkev77
    @Darkev77 Před rokem +4

    Great, thanks for explaining it so concisely. However, why would I use a pivot table when I can also group by multiple columns (group by year and team: `groupby(["Year", "Team"], observed=True)`)?

    • @ReuvenLerner
      @ReuvenLerner  Před 9 měsíci +1

      Good question! When you group by multiple columns, you get a multi-index as the result. A pivot table takes one dimension of the multi-index and turns it into columns. So instead of a single column of results with a multi-index on the rows, you get a single column of results with a simple index on the rows *and* a simple index on the columns. Same information, presented differently, which can be easier to understand and process.

    • @Darkev77
      @Darkev77 Před 9 měsíci +1

      @@ReuvenLerner brilliant, thanks a lot!

  • @angelhanna2917
    @angelhanna2917 Před rokem +1

    Easy to understand, thanks!

  • @jingchun21
    @jingchun21 Před 8 měsíci +1

    Thank you so much! I am curious that can we just show a few columns we want? For example, for the sports, I just want to show baseball, badminton. Thanks.

    • @ReuvenLerner
      @ReuvenLerner  Před 8 měsíci

      If you only want a few columns, then you have at least two choices: (1) filter the rows before you create the pivot table, or (2) filter the column after the pivot table is created with [[ ]] . I would recommend doing the first, since it reduces the amount of time and memory needed to create the pivot table in the first place.

  • @pramishprakash
    @pramishprakash Před rokem +1

    very helpful sir

  • @joseluisbeltramone599
    @joseluisbeltramone599 Před rokem +1

    Very cool explanation. Thanks a lot!

  • @thomasgyting3251
    @thomasgyting3251 Před 7 měsíci +1

    I was having a difficult time understanding pivot tables and what exactly they are vs regular tables, and your example at the end that included multiple agg functions made the lightbulb go off! Love your content!

  • @KonradTamas
    @KonradTamas Před rokem +1

    One question, do I always need Categorical data to use pivot tables ? Thanks!

    • @ReuvenLerner
      @ReuvenLerner  Před rokem

      The answer, of course, is "yes and no."
      You don't *need* categorical data to do a pivot table, just as you don't *need* categorical table to do a groupby. But think about what's happening in such cases: Every unique value in the column will be a separate row (or column) in the pivot table. If you have only a handful of integers or floats, then that's fine. But if you have several hundred, or several thousand, then you'll end up with a pivot table that doesn't serve anyone well.
      So as a general rule, we say that you should only create pivot tables with categorical data, even though you could well have numeric data that's so limited in the distinct values that it'll work just fine.

  • @user-uu5sc1hf9p
    @user-uu5sc1hf9p Před rokem +1

    thanks Reuven

  • @kaiserkonok
    @kaiserkonok Před rokem +1

    Thank you so much🖤. You are doing amazing for us. We would be more happy if you post videos on machine learning with python. 🙏

    • @ReuvenLerner
      @ReuvenLerner  Před rokem +2

      I'll try to do some machine learning stuff when I can, but I've got a backlog of other ideas already...

    • @kaiserkonok
      @kaiserkonok Před rokem +1

      @@ReuvenLerner Thank you so much

  • @mcllen
    @mcllen Před rokem +1

    There was a great class, Thanks!

  • @rafaelsantana5808
    @rafaelsantana5808 Před 3 měsíci

    Hello, I would like to know how I can make it count in a column at the end all columns that have values. example:
    count = ID1 + ID2+ ID3

  • @joshux3210
    @joshux3210 Před rokem +1

    In the pivot_table method, you don't specify you want to calculate the mean. It auto assumes that? Can I use other calculation such as median or max?

    • @joshux3210
      @joshux3210 Před rokem +1

      Ok I watched to the end: it's by using the 'aggfunc' parameter

    • @ReuvenLerner
      @ReuvenLerner  Před rokem +1

      ​@@joshux3210 Yup! Pretty amazing, right?

  • @real.samad_
    @real.samad_ Před 3 měsíci +1

    Hello Reuven, can I use smally portion of this video for an instagram reel I am working on?

    • @ReuvenLerner
      @ReuvenLerner  Před 3 měsíci

      Maybe -- it depends on the context and what you're using it for. Feel free to e-mail me (reuven@lerner.co.il) to discuss this further.

  • @AnjanBasumatary
    @AnjanBasumatary Před rokem +1

    How to display the all the rows and column cobination even values are missing in those combination?

    • @ReuvenLerner
      @ReuvenLerner  Před rokem

      If values are missing from that row-column combination, you'll get a NaN value.

    • @AnjanBasumatary
      @AnjanBasumatary Před rokem

      @@ReuvenLerner Actually, in my case both rows and columns doesnot appear if those rows and columns combination doesnot have any value... tried usi g dropna parameter but no use

  • @selim.vidangos
    @selim.vidangos Před 11 měsíci +1

    Thank you! Useful video

  • @helloworld2740
    @helloworld2740 Před 2 lety +1

    great video sir

  • @AlexKashie
    @AlexKashie Před 9 měsíci +1

    Thank you

  • @twocentswithdeb
    @twocentswithdeb Před 5 měsíci +1

    How can I rename the aggregated columns?

    • @ReuvenLerner
      @ReuvenLerner  Před 5 měsíci

      It's a data frame, so you can use the "rename" method to change the column names.

  • @proud_indian0161
    @proud_indian0161 Před 4 měsíci +1

    From where can i get this athlete dataset?

    • @ReuvenLerner
      @ReuvenLerner  Před 4 měsíci

      It's in the data set for my book, Pandas Workout, at files.lerner.co.il/pandas-workout-data.zip

  • @hieuthuan1999
    @hieuthuan1999 Před rokem +1

    Thanks @Reuven. I wonder if it is possible to create pivot table with more than one index (row field), and more than 1 value, such as height and weight in average. Excel can do it easily :)

    • @ReuvenLerner
      @ReuvenLerner  Před rokem

      Yup, you can definitely do that! Instead of passing a string for the index or column, pass a list of strings. That'll create a pivot table with a multi-index on one or both axes. It's pretty straightforward - give it a shot!

  • @aakashniture
    @aakashniture Před 7 měsíci +1

    Hi Reuven, amazing video. After pivoting a column when you get that column's distinct values as new columns. I want to select those columns or save them in a new df but i can't. I am simply just using names of new columns e.g., df['Afghanistan'] but it gives error even though in df.shape() it says Afghanistan as a column.
    Kindly help.

    • @ReuvenLerner
      @ReuvenLerner  Před 7 měsíci +1

      Hmm, I'm not sure. The result of pivot_table is a new data frame, so you should be able to say pivot_df = df.pivot_table(...) and then retrieve whichever columns you want. I'm guessing there's a syntax bug somewhere.

    • @aakashniture
      @aakashniture Před 7 měsíci +1

      @@ReuvenLerner my column names were numeric.. i pivoted Years column so new column names were 2019,2020,2021.
      I was selecting them like table['2022'] and was getting a Key error for 2022. I removed apostrophe and tried df22 = table[2022]. And that worked.
      I did not know that if the column name is in numeric ' ' is not used.
      Thanks for the reply Reuven

    • @ReuvenLerner
      @ReuvenLerner  Před 7 měsíci +1

      @@aakashniture Right, if your column names are integers, then you can't use quotes around their names. I'm glad that you were able to figure it out!

  • @rajeshn5006
    @rajeshn5006 Před rokem +1

    excellent

  • @Amber-rh8dh
    @Amber-rh8dh Před 2 měsíci +1

    Please share the datasource too, if possible...

    • @ReuvenLerner
      @ReuvenLerner  Před 2 měsíci

      Data for most of my demos are from files for Pandas Workout, at files.lerner.co.il/pandas-workout-data.zip .

    • @Amber-rh8dh
      @Amber-rh8dh Před 2 měsíci +1

      @@ReuvenLerner Thanks!!!
      Btw I needed some practice questions... Could you recommend any source for that ... :)

    • @ReuvenLerner
      @ReuvenLerner  Před 2 měsíci

      @@Amber-rh8dh Of course! Check out Bamboo Weekly (BambooWeekly.com) for new Pandas problems/questions every week, based on public data sets and current events. And Pandas Workout (PandasWorkout.com/) for 200+ exercises in Pandas. If you liked this video, you'll love both of those!

    • @Amber-rh8dh
      @Amber-rh8dh Před 2 měsíci +1

      ​@@ReuvenLerner TYSM 😭

  • @izzy8655
    @izzy8655 Před 9 měsíci +1

    Thanks

  • @inderjeetchandnani302
    @inderjeetchandnani302 Před 3 měsíci

    At time 3:59 if we have a date data, will it work?

  • @marvinlomo5845
    @marvinlomo5845 Před 2 lety +1

    Thanks Reuven. Is this covered in the Book?

    • @ReuvenLerner
      @ReuvenLerner  Před 2 lety +2

      Yes, one exercise looks at pivot tables specifically, and a few ask you to create them based on different data sets.

  • @bhargavkongara2003
    @bhargavkongara2003 Před rokem +1

    Thank u Sir

  • @ravindrareddy5478
    @ravindrareddy5478 Před rokem

    is there any way to merge empty cells using python in a pivot table

    • @ReuvenLerner
      @ReuvenLerner  Před rokem

      I'm not quite sure what you mean by this. Can you give me a short example?

    • @ravindrareddy5478
      @ravindrareddy5478 Před rokem

      @@ReuvenLerner like I'm having a pivot table in which some cells I'm between the rows are empty, so I want merge those cells with nearest value

  • @guillegonzalez6146
    @guillegonzalez6146 Před 11 měsíci +1

    blud i love ya

    • @ReuvenLerner
      @ReuvenLerner  Před 11 měsíci

      Thanks so much! Delighted to have you here with me.

  • @hakangrss
    @hakangrss Před 2 měsíci

    someone have might asked, we can do the same thing by creating ''' df.groupby( [ 'year' , 'team' ] ).agg({ 'height' : [ 'mean' , 'count' ]} ) ''' can't we. if so what makes the distinguish between them? Thank you so much ☺ ...

  • @mohemmedkamal
    @mohemmedkamal Před 2 lety +1

    thank you