Matplotlib Tutorial (Part 2): Bar Charts and Analyzing Data from CSVs

Поділитися
Вставка
  • Опубліковано 14 лип 2024
  • In this video, we will be learning how to create bar charts in Matplotlib.
    This video is sponsored by Brilliant. Go to brilliant.org/cms to sign up for free. Be one of the first 200 people to sign up with this link and get 20% off your premium subscription.
    In this Python Programming video, we will be learning how to create bar charts in Matplotlib. Bar charts are great for visualizing your data in a way where you can clearly see the total values for each category. We'll learn how to create basic bar charts, bar charts with side-by-side bars, and also horizontal bar charts. We will also learn how to load our data from a CSV file instead of having it directly in our script. Let's get started...
    The code from this video (with added logging) can be found at:
    bit.ly/Matplotlib-02
    CSV Tutorial - • Python Tutorial: CSV M...
    ✅ Support My Channel Through Patreon:
    / coreyms
    ✅ Become a Channel Member:
    / @coreyms
    ✅ One-Time Contribution Through PayPal:
    goo.gl/649HFY
    ✅ Cryptocurrency Donations:
    Bitcoin Wallet - 3MPH8oY2EAgbLVy7RBMinwcBntggi7qeG3
    Ethereum Wallet - 0x151649418616068fB46C3598083817101d3bCD33
    Litecoin Wallet - MPvEBY5fxGkmPQgocfJbxP6EmTo5UUXMot
    ✅ Corey's Public Amazon Wishlist
    a.co/inIyro1
    ✅ Equipment I Use and Books I Recommend:
    www.amazon.com/shop/coreyschafer
    ▶️ You Can Find Me On:
    My Website - coreyms.com/
    My Second Channel - / coreymschafer
    Facebook - / coreymschafer
    Twitter - / coreymschafer
    Instagram - / coreymschafer
    #Python #Matplotlib

КОМЕНТАРІ • 348

  • @Sharmapawan98
    @Sharmapawan98 5 років тому +322

    Who needs python docs when you have such an amazing teacher

  • @coreyms
    @coreyms  5 років тому +115

    I hope everyone finds this video helpful. The next video of the series will be posted tomorrow at the same time. The next video will cover how to create pie charts.
    I'd like to thank Brilliant for sponsoring this series. If you'd like to check them out then you can sign up with this link and get 20% off your premium subscription:
    brilliant.org/cms

    • @dhananjaykansal8097
      @dhananjaykansal8097 5 років тому

      As usual lovely!!!!!!!

    • @tamasasztalos7484
      @tamasasztalos7484 4 роки тому

      It's a great tutorial; the only thing I was missing is to add total values on the top of each bar charts (can be trickier for stacked bar chart)

    • @ishanpand3y
      @ishanpand3y 4 роки тому

      Thank you, sir, for providing top-class tutorials for free.

    • @JuniorDIEKA
      @JuniorDIEKA 4 роки тому

      Hello Corey!
      Please can you advise:
      1. how did you the clean the data within the column " LanguageWorkedWith" so that you can generate this clear data?
      2. After I have split it and save it to another csv file a part from the main, the is the output: [(" 'JavaScript'", 53020), (" 'HTML/CSS'", 39761), (" 'Java'", 29863), ("['Bash/Shell/PowerShell'", 28340), (" 'SQL']", 28178), (" 'Python'", 26185), (" 'PHP'", 20394), (" 'SQL'", 19094), (" 'TypeScript']", 16091), ("['HTML/CSS'", 15322)]
      [Finished in 33.6s]
      3. According the below output , how will I do so that it can bring the sum exact of the occurrence of the languages as it look like not doing it?
      Thank you,

    • @JoshKonoff1
      @JoshKonoff1 3 роки тому

      Where is the CSV for this? I don't see it in the description. Thank you!

  • @ishanpand3y
    @ishanpand3y 4 роки тому +72

    In case you don't know, the shortcut for 8:13 in jupyter notebook is *Ctrl + left mouse click* on the different lines one by one. You can write at different lines at the same time.

  • @MrBuion
    @MrBuion 4 роки тому +83

    These series is much better than the curses in Udemy I paid for. Thank you very much.

    • @DendrocnideMoroides
      @DendrocnideMoroides 2 роки тому +1

      what "curses"

    • @iscoto4914
      @iscoto4914 2 роки тому

      @@DendrocnideMoroides wannabe savage

    • @theman1860
      @theman1860 Рік тому +2

      @@DendrocnideMoroides I vote we call them curses from now on

  • @bmwmhamam
    @bmwmhamam 4 роки тому +5

    No body teaches like you. You are the best. Amazing delivery of information, truly useful tutorials. Thank you so much.

  • @sunshadow9704
    @sunshadow9704 2 роки тому +3

    Corey, you are great teacher. You have rare ability to explain calmly. Much appreciating your efforts.

  • @TheShubham67
    @TheShubham67 4 роки тому +9

    This series with pandas one has taken my skills to a new level.

  • @lalu225
    @lalu225 5 років тому +5

    Excellent tutorial Corey! Real life stuff and practical, including the use of Counter. It's important to show these data preparation steps. Very helpful indeed, thank you.

  • @KienDoanTrung168
    @KienDoanTrung168 5 років тому +5

    such a great Python instructor with an angelic voice. Thank you so much 😊

  • @abhishek_raj
    @abhishek_raj 3 роки тому +1

    Right from reading data from a csv file to plotting it, you helped a lot of people.

  • @Ghasakable
    @Ghasakable 5 років тому +15

    Man, you are awesome, everything I have learned about python started from your channel, I wish you the very best all success, as you make everyone happy, keep up the excellent work, we all heavily rely on you.

    • @coreyms
      @coreyms  5 років тому +5

      Thanks! That's very kind of you.

  • @ahmedskasmani
    @ahmedskasmani 4 роки тому +4

    Amazing content Corey. The way you simplify the material and explain is awesome, many thanks. Can you please also do a video showing your setup and how you make video's. Thanks !!!

  • @storiesshubham4145
    @storiesshubham4145 2 роки тому +1

    I can't express how amazing this video is. What a great teacher you are. 🔥🔥

  • @ItzSenaCrazy
    @ItzSenaCrazy 5 років тому +3

    What I really like is your videos, Corey. I can learn Python and English ;D
    Thanks!!

  • @fangshizhu9383
    @fangshizhu9383 3 роки тому +1

    At 8:12, when you selected multiple locations and simultaneously type the same code to multiple lines, my world just expanded!

  • @LashaGoch
    @LashaGoch 3 роки тому +1

    This is gold! Thank you very much for doing this, you have incredible talent to explain complicated stuff in an easy manner, keep up good work :)))

  • @djadamkent
    @djadamkent 5 років тому +14

    Another great video, thank-you. A Pandas series of videos would be awesome!

  • @apoorvwatsky
    @apoorvwatsky 5 років тому +81

    23:40 here's that one liner if anybody's interested. Personally, I like this more.
    languages, popularity = map(list, zip(*language_counter.most_common(15)))

    • @costasvas341
      @costasvas341 4 роки тому +1

      Really nice! Could you please explain what the "*" symbol does?

    • @paklong2556
      @paklong2556 4 роки тому

      nice

    • @jg9193
      @jg9193 4 роки тому

      Or just: list(zip(*language_counter.most_common(15))). Map is unnecessary as list() automatically maps over an Iterable

    • @corben3348
      @corben3348 4 роки тому +3

      @@jg9193 but if you don't use map(list, iterable) then languages and popularity will be tuples so you cannot use reverve() for the rest of the tutorial. Or languages, popularity = [list(e) for e in zip(*language_counter.most_common(15))] without map

    • @jg9193
      @jg9193 4 роки тому +2

      @@corben3348 Fair point, I didn't think of that. That said, he could just do languages[::-1] instead of languages.reverse() to reverse a tuple
      Then again, using list() would even be unnecessary if he did that

  • @rnytpl
    @rnytpl 3 роки тому

    Thank you man, appreciate the effort and time you've put in creating such amazing content as these.

  • @randiarisman2419
    @randiarisman2419 4 роки тому

    Another great video form you, Corey. Thank you, you made my day everyday!!

  • @redferne01
    @redferne01 5 років тому +3

    Thank you for your work. I enjoy every lesson.

  • @shazkingdom1702
    @shazkingdom1702 5 років тому +2

    This is the best Corey; Thank you very much from my 🧠 and ❣

  • @fourdaysdead
    @fourdaysdead 5 років тому +1

    thank you very much, very clear and straight to the point!

  • @shadowmasked7188
    @shadowmasked7188 Рік тому +1

    Thank you very much bro, Greetings from Azerbaijan.

  • @androkranjcevic1988
    @androkranjcevic1988 3 роки тому

    Really nice work over here, the most important man on youtube for me.

  • @dgh25
    @dgh25 Рік тому

    Your videos are just sprinkled with little golden nuggets! I love it ❤

  • @58_yesilgul
    @58_yesilgul 6 місяців тому

    What a perfect lesson, fast and insightful pieces of knowledge...

  • @miosz952
    @miosz952 4 роки тому +4

    The great thing about your tutorials is that despite main topic, you learn a lot useful tricks, modules etc.

  • @dalanxd
    @dalanxd 3 роки тому

    Corey Schafer saves my life once again...
    Deep gratitude for your work, man!

  • @minghaotao6259
    @minghaotao6259 5 років тому +2

    Thank you for sharing your knowledge!

  • @luiggitello8546
    @luiggitello8546 7 місяців тому

    This is the best content on UA-cam, thank you for so much

  • @dhairyaoza5422
    @dhairyaoza5422 3 роки тому

    thank you so much sir,really glad i found ur playlist and didn't waste time on other platforms

  • @pratikarai8115
    @pratikarai8115 4 роки тому

    Your explanation is awesome...thank you so much ...A great teacher for a lifetime...

  • @gamengine1176
    @gamengine1176 4 роки тому

    Very helpful video. The pandas method is much simpler and easier to understand. Thanks Corey!

  • @mohammedismail308
    @mohammedismail308 5 років тому

    Thanks a lot Corey. Really your videos are endless treasure.
    Just a way for plotting bar charts for more than one dataset on the same plot without need to numpy. Just use built-in map function.
    width = 0.25 #Width of bar
    plt.bar(list(map(lambda x: x-width/2, age_x)), salaries1, color = 'k', width = width)
    plt.bar(list(map(lambda x: x+width/2, age_x)), salaries2, color = 'r', width = width)

  • @borhansiddiki7079
    @borhansiddiki7079 4 роки тому +2

    I think your videos are more understandable than rest of the youtube channels

  • @brumarul7481
    @brumarul7481 3 роки тому +1

    This is pure Gold .

  • @alexanderten5497
    @alexanderten5497 5 років тому +2

    Thank you very much.its a great tutorial as always

  • @tongliu1076
    @tongliu1076 4 роки тому

    Great video as always! Really helpful for detailed explanation.

  • @muzaianghanem5644
    @muzaianghanem5644 4 роки тому +1

    That's true......you are an amazing teacher. This was very helpful

  • @giuseppeceravolo93
    @giuseppeceravolo93 4 роки тому

    Thank you so much for your hard work! You are a great teacher and your video tutorial represent a valuable resource :)

  • @abhishek_raj
    @abhishek_raj 3 роки тому

    You explain things really well, kudos!

  • @Linshark
    @Linshark 2 роки тому

    I just came across this series of videos. They are extremely good :-)

  • @dhssb999
    @dhssb999 Рік тому

    best matplotlib tutorial ever!

  • @lillyclive2641
    @lillyclive2641 4 роки тому +1

    Such a great help, thankyou so much!

  • @Anon282828
    @Anon282828 2 роки тому

    thank you for always showing the clear code before abbreviating

  • @DidaKusAlex
    @DidaKusAlex 2 роки тому

    great tutorial! the best!! thanks for teaching us!

  • @akashdeepchauhan5
    @akashdeepchauhan5 3 роки тому

    You're making machine learning interesting, thank you

  • @SahilKhan-rv9xb
    @SahilKhan-rv9xb 3 роки тому +9

    for those wondering how to obtain the CSV file, once you've clicked on it and you see all of the data in your web browser, just right click and say save as

  • @SandeepChaudhary-vx9zy
    @SandeepChaudhary-vx9zy 4 роки тому +1

    Great explanation...thanks a lot Corey sir

  • @emmanueljimawo5595
    @emmanueljimawo5595 5 років тому +1

    Great videos. I'm so grateful...

  • @MagnusAnand
    @MagnusAnand 2 роки тому

    I can't believe we need this hack to make a bar chart.
    Great video.

  • @shuklarahul17
    @shuklarahul17 4 роки тому +1

    As you mentioned Zip can also be used
    language = cnt.most_common(10)
    language.reverse()
    language_X, language_Y = list(zip(*language))
    plt.barh(language_X, language_Y)

  • @introduction_official6547
    @introduction_official6547 4 місяці тому +1

    Very informative video, good job Mr Corey

  • @franklinlima2571
    @franklinlima2571 4 роки тому +1

    Great video! Thank you man

  • @brucegwon
    @brucegwon 3 роки тому

    This is the best fantastic lecture for the relation of Python and Pandas I've ever seen!!!!!!!!!!!!!!
    Xie Xie!!!

  • @cooldudesjce
    @cooldudesjce 4 роки тому

    Amazing Tutorials Thanks soo much !

  • @thebuggser2752
    @thebuggser2752 7 місяців тому

    Another great video. Thanks!!

  • @PaoloCondo
    @PaoloCondo Рік тому

    Thank you for the series of video! :)

  • @DeepakKumar-uz4xy
    @DeepakKumar-uz4xy 5 років тому +1

    thank you professor. love from india. u know what i dont like to read those documentation. when i saw your videos.

  • @Coney_island23
    @Coney_island23 2 роки тому

    thank you!!!! you ar an excellent teacher

  • @nicholasmaloof8378
    @nicholasmaloof8378 5 років тому +4

    2 weeks later and still not a single dislike on this video

  • @eliesawan9513
    @eliesawan9513 3 роки тому +1

    you are amazing, waiting for your data science ( ML, AI ) course...... THANKS A LOT!

  • @mallusreddy
    @mallusreddy 5 років тому +1

    Thank you so much.. It's a great vedio....

  • @ericfricke4512
    @ericfricke4512 4 роки тому +2

    Programming is so fun.

  • @AbubakerMahmoudshangab
    @AbubakerMahmoudshangab 2 роки тому

    Corey. Million thanks bro

  • @akunnaemeka395
    @akunnaemeka395 2 роки тому

    thank you Brilliant for supporting Corey

  • @luiscesar_agais
    @luiscesar_agais 2 роки тому

    Very nice your explanations. Congratulations.

  • @markkennedy9767
    @markkennedy9767 8 місяців тому

    Thanks for this. Great lesson. As you say, creating multiple bars seems extraordinarily hacky. I would have thought this would be easily dealt with by a plotting library

  • @ondereren5003
    @ondereren5003 3 роки тому

    Amazing video !

  • @Martin-ij2fp
    @Martin-ij2fp 3 роки тому

    Great video!

  • @rahil1575
    @rahil1575 Рік тому

    you are a life saviour for people like me

  • @michaelren2821
    @michaelren2821 3 роки тому

    great tutorial, thanks

  • @karishmakaris7165
    @karishmakaris7165 4 роки тому +1

    ty soo much .. yu are the best ..

  • @rotrose7531
    @rotrose7531 2 роки тому

    Thank you very much. Please, please come back!

  • @noway4715
    @noway4715 4 роки тому

    Best of the best!

  • @mindbodysoulsculpt6479
    @mindbodysoulsculpt6479 4 роки тому

    Great Matplotlib tutorial. But I feel like this is where Pandas also really comes to play, we can use sep = ; inside of the read_csv function instead of creating a custom function. Also, using iloc and loc for indexes and many more awesome built in functions

  • @SM-vu6fm
    @SM-vu6fm 2 роки тому

    Counter() is the best thing I learned today

  • @veenak108
    @veenak108 4 роки тому +1

    @Corey Schafer .. I came up with below function which will handle the bar widths for multiple bar plots by itself. Just in case anybody wants to use it :
    ages_x = np.asarray([25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35])
    count = 5
    width = 0.8/count
    def width_cal(position):
    shift = np.array([])
    if count < 2:
    return ages_x
    if count % 2 == 0:
    for i in range(1, count, 2):
    shift = np.append(shift, (width/2 * i))
    shift = np.sort(np.append(shift, np.negative(shift)))
    else:
    for i in range(0, count, 2):
    shift = np.append(shift, (width/2 * i))
    shift = np.unique(np.sort(np.append(shift, np.negative(shift))))
    shift = np.around(shift, decimals=3)
    return ages_x + shift[position]
    plt.bar(width_cal(0), dev_y, width=width, color='#444444', label="All Devs")

  • @hayetchekired462
    @hayetchekired462 3 роки тому

    great instructor

  • @VishalSharma-rn7mt
    @VishalSharma-rn7mt 4 роки тому +1

    Great, amazing video

  • @KC-rl8ub
    @KC-rl8ub 5 років тому +8

    hi Corey....god bless you

  • @rajivswargiary1536
    @rajivswargiary1536 5 років тому +1

    Great tutorial sir

  • @johnjones5659
    @johnjones5659 4 роки тому

    Thanks you and Brilliant

  • @manosmakris8308
    @manosmakris8308 Рік тому +1

    You can also do this for geting the languages and popularity lists.
    languages = list(map(lambda x: x[0], language_counter.most_common(15)))
    print(languages)
    popularity = list(map(lambda x: x[1], language_counter.most_common(15)))
    print(popularity)

  • @FerdinandCoding
    @FerdinandCoding 4 роки тому +1

    thank you for python tutorial

  • @gurukirans266
    @gurukirans266 4 роки тому +1

    Thank you lot sir 😃

  • @edcoughlan5742
    @edcoughlan5742 5 років тому +5

    These videos are great! Coming from R (and ggplot) I was a tad skeptical that Python could emulate R when it came to data viz, but I stand corrected.

  • @gurukirans266
    @gurukirans266 4 роки тому +1

    Tq sir
    This is for u sir
    while 2 < 3:
    print('thank you soo much')

  • @oscarkiamba7690
    @oscarkiamba7690 Рік тому

    The best in you tube .👏

  • @abhinav9561
    @abhinav9561 3 роки тому

    Thanks man!!

  • @mamathakavety6529
    @mamathakavety6529 Рік тому +1

    Please do a tutorial on numpy as well, it would be super helpful, by the way awesome content😁

  • @shreddersengupta7384
    @shreddersengupta7384 3 роки тому

    we can also use the dictionary's keys() and values() for getting x and y axis. x_axis = list(dict.keys())

  • @eduardosiqueirabonfim98
    @eduardosiqueirabonfim98 3 роки тому

    Thanks!

  • @timeforrice
    @timeforrice 4 роки тому

    could you do more videos about data cleaning? Thank you and I love your blog.

  • @nowyouknow2249
    @nowyouknow2249 5 років тому

    Wonderful!
    Thanks a lot CMS

    • @chrisray1567
      @chrisray1567 5 років тому

      collins anele That probably won’t work because value_counts() won’t split the data at the semicolons, so “Python;JavaScript” would be one value instead of two.

    • @nowyouknow2249
      @nowyouknow2249 5 років тому

      You are right. I just realised that.

  • @harshman11
    @harshman11 5 років тому +1

    I love Corey's videos*(infinite).

  • @KumarGauravhi
    @KumarGauravhi 3 роки тому

    Hi Corey, thank you for the wonderful session , I have stuck at this point with the last example :-import csv
    import numpy as np
    import pandas as pd
    from collections import Counter
    from matplotlib import pyplot as plt
    plt.style.use("fivethirtyeight")
    data = pd.read_csv('data.csv')
    ids = data['Responder_id']
    lang_responses = data['LanguagesWorkedWith']
    language_counter = Counter()
    for response in lang_responses:
    language_counter.update(response.split(';'))
    languages = []
    popularity = []
    for item in language_counter.most_common(15):
    languages.append(item[0])
    popularity.append(item[1])
    languages.reverse()
    popularity.reverse()
    plt.barh(languages, popularity)
    plt.title("Most Popular Languages")
    # plt.ylabel("Programming Languages")
    plt.xlabel("Number of People Who Use")
    plt.tight_layout()
    plt.show()
    ### I am getting an error like AttributeError: 'float' object has no attribute 'split' ...Please explain..

  • @VNnimbs
    @VNnimbs 4 роки тому

    Thx a lot for this...

  • @Kralnor
    @Kralnor 2 роки тому

    Fantastic video. Exactly the type of content that I was looking for to create beautiful bar graphs.