Python Data Analysis & Visualization Masterclass
Welcome to (what I think is) the web's best course on Pandas, Matplotlib, Seaborn, and more! This course will level up your data skills to help you grow your career in Data Science, Machine Learning, Finance, Web Development, or any tech-adjacent field. This is a tightly structured course that covers a ton, but it's all broken down into human-sized pieces rather than an overwhelming reference manual that throws everything at you at once.
More
After each and every new topic, you'll have the chance to practice what you're learning and challenge yourself with exercises and projects.
We work with dozens of fun and real-world datasets including Amazon bestsellers, Rivian stock prices, Presidential Tweets, Bitcoin historic data, and UFO sightings.
If you're still reading, let me tell you a little about the curriculum.. In the course, you'll learn how to:
Work with Jupyter Notebooks
Use Pandas to read and manipulate datasets
Work with DataFrames and Series objects
Organize, filter, clean, aggregate, and analyze DataFrames
Extract and manipulate date, time, and textual information from data
Master Hierarchical Indexing
Merge datasets together in Pandas
Create complex visualizations with Matplotlib
Use Seaborn to craft stunning and meaningful visualizations
Create line, bar, box, scatter, pie, violin, rug, swarm, strip, and other plots!
What makes this course different from other courses on the same topics? First and foremost, this course integrates visualizations as soon as possible rather than tacking it on at the end, as many other courses do. You'll be creating your first plots within the first couple of sections! Additionally, we start using real datasets from the get go, unlike most other courses which spend hours working with dull, fake data (colors, animals, etc) before you ever see your first real dataset. With all of that said, I feel bad trash talking my competitors, as there are quite a few great courses on the platform :)
I think that about wraps it up! The topics in this courses are extremely visual and immediate, which makes them a joy to teach (and hopefully for you to learn). If you have even a passing interest in these topics, you'll likely enjoy the course and tear through it quickly. This stuff might seem intimidating, but it's actually really approachable and fun! I'm not kidding when I say this is my favorite course I've ever made. I hope you enjoy it too.
Watch Online Python Data Analysis & Visualization Masterclass
# | Title | Duration |
---|---|---|
1 | Course Welcome & Curriculum Walkthrough | 08:24 |
2 | What Do You Need To Know To Take This Course? | 01:50 |
3 | Downloading The Course Materials IMPORTANT!! | 02:39 |
4 | How The Exercises Work | 02:15 |
5 | Introducing Jupyter Notebook! | 05:33 |
6 | Mac Installation Walkthrough | 06:21 |
7 | Windows Installation Walkthrough | 06:39 |
8 | "Installing" Pandas & Matplotlib (Mac & Windows) | 04:08 |
9 | Creating Notebooks & Running Cells | 06:39 |
10 | Shutting Down The Notebook Server | 05:09 |
11 | How Cell Output Works | 02:32 |
12 | Command Mode Shortcuts | 06:21 |
13 | Cell Types: Markdown Time! | 04:57 |
14 | Restarting The Kernel | 06:48 |
15 | Viewing The Docs Inside A Notebook | 02:48 |
16 | EXERCISE: Jupyter Notebook | 02:43 |
17 | SOLUTION: Jupyter Notebook | 06:03 |
18 | Datasets & CSV | 05:32 |
19 | pd.read_csv & DataFrames | 06:43 |
20 | Inspecting DataFrames: head(), tail(), etc. | 07:18 |
21 | DataTypes and info() | 04:48 |
22 | The House Sales Dataset Walkthrough | 05:14 |
23 | The Titanic Passenger Dataset Walkthrough | 08:28 |
24 | Non-comma Separators: Netflix Dataset | 08:18 |
25 | Overriding Headers: Country Population Dataset | 04:19 |
26 | EXERCISE: DataFrames & Datasets | 03:11 |
27 | SOLUTION: DataFrames & Datasets | 08:49 |
28 | Min & Max | 05:25 |
29 | Sum & Count | 09:01 |
30 | Mean, Median, & Mode | 05:36 |
31 | Describe With Numeric Values | 04:24 |
32 | Describe With Objects (Text) Values | 07:48 |
33 | EXERCISE: Basic DataFrame Methods | 01:46 |
34 | SOLUTION: Basic DataFrame Methods | 04:36 |
35 | Selecting A Single Column | 07:22 |
36 | A Closer Look At Series | 08:32 |
37 | Important Series Methods | 05:11 |
38 | unique & nunique | 05:16 |
39 | nlargest & nsmallest | 07:16 |
40 | Selecting Multiple Columns | 03:43 |
41 | The powerful value_counts() method | 08:14 |
42 | Using plot() to visualize! | 10:51 |
43 | EXERCISE: Series & Plotting | 02:57 |
44 | SOLUTION: Series & Plotting | 08:50 |
45 | Set_Index Basics | 09:34 |
46 | set_index: The World Happiness Index Dataset | 05:07 |
47 | setting index with read_csv | 02:40 |
48 | sort_values intro | 03:55 |
49 | sorting by multiple columns | 03:06 |
50 | sorting text columns | 03:38 |
51 | sort_index | 02:22 |
52 | Sorting and Plotting! | 05:02 |
53 | loc | 07:51 |
54 | iloc | 04:19 |
55 | loc & iloc with Series | 05:52 |
56 | EXERCISE: Indexes & Sorting | 04:22 |
57 | SOLUTION: Indexes & Sorting | 09:56 |
58 | Filtering DataFrames With A Boolean Series | 08:49 |
59 | Filtering With Comparison Operators | 08:16 |
60 | The Between Method | 03:06 |
61 | The isin() Method | 04:08 |
62 | Combining Conditions Using AND (&) | 11:53 |
63 | Combining Conditions Using OR (|) | 11:09 |
64 | Bitwise Negation | 06:57 |
65 | isna() and notna() Methods | 03:37 |
66 | Filtering + Plotting Examples | 06:02 |
67 | EXERCISE: Filtering | 01:45 |
68 | SOLUTION: Filtering Exercise | 10:38 |
69 | Dropping Columns | 06:03 |
70 | Dropping Rows | 06:26 |
71 | Adding Static Columns | 06:00 |
72 | Creating New "Dynamic" Columns | 06:55 |
73 | Finding The Highest price/sqft homes | 04:02 |
74 | Finding Largest Bitcoin Price Changes | 05:15 |
75 | EXERCISE: Adding/Removing Columns & Rows | 03:19 |
76 | SOLUTION: Adding/Removing Columns & Rows | 05:11 |
77 | Renaming Columns and Index Labels | 04:51 |
78 | The replace() method | 07:32 |
79 | Updating Values Using loc[] | 08:00 |
80 | Updating Multiple Values Using loc[] | 04:12 |
81 | Making Updates With loc[] and Boolean Masks | 07:55 |
82 | EXERCISE: Updating Values | 02:21 |
83 | SOLUTION: Updating Values Exercise | 08:22 |
84 | Casting Types With astype() | 07:15 |
85 | Introducing the Category Type | 04:46 |
86 | Casting With pd.to_numeric() | 04:44 |
87 | dropna() and isna() | 08:39 |
88 | fillna() | 05:38 |
89 | EXERCISE: Dealing With NA Values | 01:22 |
90 | SOLUTION: Dealing With NA Values | 05:09 |
91 | Why Dates Matter | 03:43 |
92 | Converting With pd.to_datetime() | 08:07 |
93 | Specifying Fancy Formats With pd.to_datetime() | 09:06 |
94 | Dates and DataFrames | 07:08 |
95 | The Useful dt Properties | 08:50 |
96 | Comparing Dates | 06:15 |
97 | Finding StarLink Flybys In UFO Dataset | 08:44 |
98 | Date Math & TimeDeltas | 08:48 |
99 | Billboard Charts Dataset Exploration | 11:30 |
100 | EXERCISE: Dates & Times | 04:52 |
101 | SOLUTION: Dates & Times | 15:04 |
102 | Intro to Matplotlib | 04:25 |
103 | Our First Matplotlib Plots! | 07:05 |
104 | Do We Need plt.show() ? | 02:34 |
105 | Anatomy of Plots | 09:07 |
106 | Figsize & Plot Dimensions | 04:26 |
107 | Changing Matplotlib Stylesheets | 04:12 |
108 | Line Styles, Colors, Widths, and More! | 07:10 |
109 | Plot Labels & Titles | 06:01 |
110 | Changing X & Y Ticks | 07:07 |
111 | Adding Legends To Plots | 05:11 |
112 | EXERCISE: Matplotlib Challenge #1 | 04:46 |
113 | Creating Bar Plots | 09:40 |
114 | Creating Histograms | 10:29 |
115 | EXERCISE: Matplotlib Challenge #2 | 04:07 |
116 | Creating Scatter Plots | 04:42 |
117 | Creating Pie Charts | 05:43 |
118 | EXERCISE: Matplotlib Challenge #3 | 04:28 |
119 | Working With Subplots | 10:54 |
120 | Putting It All Together | 05:55 |
121 | EXERCISE: Matplotlib Challenge #4 | 09:37 |
122 | A Pandas Plotting Recap | 05:14 |
123 | Changing Pandas Plot Styles | 02:30 |
124 | Adding Labels and Titles to Pandas Plots | 07:47 |
125 | Using rename() When Plotting | 03:12 |
126 | Closer Look at Pandas Bar Plots | 07:30 |
127 | EXERCISE: Pandas Plotting Challenge #1 | 08:02 |
128 | Pandas Histograms | 03:12 |
129 | Box Plots | 05:09 |
130 | Pandas Line Plots | 05:35 |
131 | EXERCISE: Pandas Plotting Challenge #2 | 04:06 |
132 | Pandas Scatter Plots | 03:00 |
133 | Multiple Plots On The Same Axes | 05:12 |
134 | UFOS Plotting Challenge! | 07:14 |
135 | EXERCISE: Pandas Plotting Challenge #3 | 03:57 |
136 | Pandas Automatic Subplots | 07:40 |
137 | Manual Subplots With Pandas | 06:27 |
138 | EXERCISE: Pandas Plotting Challenge #4 | 11:23 |
139 | EXERCISE: Pandas Plotting Challenge #5 | 10:35 |
140 | Exporting Figures With savefig() | 02:38 |
141 | Introducing Groupby | 05:42 |
142 | Exploring Groups | 09:42 |
143 | Split-Apply-Combine | 09:36 |
144 | Using The Agg Method | 07:42 |
145 | Agg with Custom Functions | 05:29 |
146 | Named Aggregation | 04:26 |
147 | Groupby With Multiple Columns | 07:13 |
148 | Creating a MultiIndex With set_index | 06:03 |
149 | Sorting A MultiIndex | 08:29 |
150 | Using .loc[] With A MultiIndex | 10:13 |
151 | Cross Sections With The XS Method | 02:31 |
152 | get_level_values() | 08:11 |
153 | Hierarchical Columns | 05:07 |
154 | Stack() and Unstack() | 03:49 |
155 | Plotting With Unstack() | 07:59 |
156 | Grouping By Index | 05:08 |
157 | The String Datatype Vs. Object Datatype | 07:04 |
158 | Upper(), Lower(), and Capitalize() | 04:10 |
159 | Indexing String Series With [] | 05:54 |
160 | Stripping Whitespace With Strip() | 03:59 |
161 | Splitting Text Values With Split() | 06:58 |
162 | Replacing Portions of Strings With Replace() | 07:01 |
163 | Testing Strings With Contains() | 04:01 |
164 | Applying Functions To Series | 07:56 |
165 | Apply() With Lambdas & Arguments | 04:53 |
166 | Apply() w/ DataFrames: Columns | 04:13 |
167 | Apply() w/ DataFrames: Rows | 06:47 |
168 | The Series Map() Method | 02:57 |
169 | The ApplyMap() Method | 03:52 |
170 | Concatenating Series | 05:20 |
171 | Concatenating Series By Index | 04:10 |
172 | Inner vs. Outer Joins | 03:46 |
173 | Concatenating DataFrames By Columns | 04:48 |
174 | Concatenating DataFrames By Index | 03:04 |
175 | The DataFrame Merge() Method | 04:35 |
176 | Merge() w/ Left, Right, Inner, & Outer Joins | 06:12 |
177 | Merge() On and Suffixes Arguments | 09:42 |
178 | Intro to Seaborn | 08:15 |
179 | The Helpful load_dataset() method | 04:19 |
180 | Seaborn Scatterplots | 10:18 |
181 | Seaborn Lineplots | 12:27 |
182 | The relplot() Method | 09:19 |
183 | Resizing Seaborn Plots: Aspect & Height | 07:05 |
184 | Seaborn Histograms | 06:19 |
185 | KDE Plots | 02:45 |
186 | Bivariate Distribution Plots | 05:44 |
187 | Rugplots | 05:56 |
188 | The Amazing displot() Method | 06:59 |
189 | Countplot | 04:01 |
190 | Strip & Swarm Plots | 09:17 |
191 | Boxplots | 09:30 |
192 | Boxenplots | 02:24 |
193 | Violinplots | 04:48 |
194 | Barplots | 08:56 |
195 | The Big Boy Catplot Method | 08:30 |
196 | Changing Seaborn Themes | 04:29 |
197 | Customizing Styles with set_style() | 05:45 |
198 | Altering Spines With despine() | 02:53 |
199 | Changing Color Palettes | 09:15 |