
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Learn to analyze, visualize, and share data with Python, covering fundamentals and libraries like pandas, NumPy, polars, matplotlib, Seaborn, Yfinance, git, and Streamlit.
Check if python is installed and learn how to install it on Windows, macOS, and Linux, using python.org downloads, homebrew, apt-get, or from source, and try the interactive mode (REPL).
Explore three popular Python editors—PyCharm, Visual Studio Code, and Jupyter Notebook—and learn installation, setup, and features like debugging tools, project management, and interactive coding for data science.
Learn to manage multiple Python versions with Pyenv and virtual environments, create and activate isolated virtual environments, switch between versions, and install or uninstall Python versions on macOS and Ubuntu.
Explore pep guidelines that shape Python syntax, including indentation rules, pep8 style, and considerations. Learn about Python 3 syntax, variables, operators, expressions, concatenation, and naming conventions like snake_case and CamelCase.
Master python's numeric types—integers, floats, and complex—covering unbounded integers, type conversions from strings, decimal precision, rounding, and complex numbers in physics and engineering.
Discover python’s reference and atomic object types, including lists, dictionaries, and tuples, and understand how mutable and immutable objects differ in copying and memory behavior.
Learn the string data type in Python, covering indexing, slicing, immutability, and common methods such as strip, replace, find, split, join, and modern formatting with f-strings.
Explore the Python list data type, a mutable, ordered collection that can hold mixed data types, be created from square brackets, the range function, or the list function.
Explore the Python tuple data type as an ordered, immutable container for mixed data types; learn indexing, slicing, concatenation, repetition, membership testing with in, and unpacking with asterisk.
Learn boolean data types in Python, using true and false with comparison operators, and combine with and, or, not, while mastering parentheses grouping and operator precedence.
Explore dictionaries in Python as an ordered, mutable collection of unique key-value pairs. Create with curly braces or dict; access by keys or get; modify with update, del, or pop.
Explore sets and frozensets in Python, storing unique, unordered elements and performing operations such as union, intersection, difference, and symmetric difference. Learn creation, mutation rules, and membership tests.
Explore binary sequence types in Python by using bytes and bytearray, learn encoding with UTF-8 and ASCII, how to create, modify, slice, decode, and compare immutable versus mutable byte data.
Master Python conditional flow with if-else and the ternary operator, then loop over sequences using for and while and explore range iterations.
Learn break and continue in Python to control the flow of for and while loops; use break to end a loop early and continue to skip iterations.
Explore nested loops and conditional statements by generating all animal-habitat combinations with a for loop and an inner loop, using nested conditions and while loops to model a grid.
Explore nested data structures with nested lists, dictionaries, and a three by three grid, and use for loops to access, print, and format the data.
Learn list comprehensions in Python to replace loops with concise, readable one-liners. Build, filter, and transform lists with range, conditions, and if-else expressions in nested structures.
Learn how the input function gathers user data and uses prompts, with input treated as strings by default. Convert inputs to int, float, or bool for interactive Python programs.
Learn to create and call Python functions with def, parentheses, and indentation, accept arguments, and use return values to build modular, reusable code.
Master packing and unpacking function arguments in Python using *args and **kwargs to accept a variable number of positional arguments and unpack dictionaries as keyword arguments.
Explore lambda functions in Python, tiny anonymous one-expression functions used with map and filter to transform data. See how they are callable first-class objects stored in variables, enabling functional-style code.
Explore Python variable scope, from local scope and enclosing scope to global scope and built-in scope, and how the Leitgeb rule resolves variables.
Master error handling in Python by using the try and accept construct, handling zero division and type errors with multiple accept blocks, and leveraging else and finally for user-friendly messages.
Explore Python modules, imports, and aliases by building a Space Wars app with gaming stats, player utils, and main, using calculate_score, get_rank, and formatted statistics.
Explore how decorators in Python modify function behavior by wrapping functions with wrappers, using @ syntax, and timing executions with a timer decorator and the time module.
Learn to generate a qr code in Python using the qr code library, specifying data, error correction levels, box size, and saving the image for a resource link.
Learn how object-oriented programming in Python uses classes as blueprints to create object instances with attributes and methods, including constructors, dot notation, class vs instance attributes, and reusable code.
Explore instance, class, and static methods in Python, showing how instance methods use self and instance attributes, class methods use CLS for class data, and static methods serve as utilities.
Explore how Python defines object as the root, and how single and multiple inheritance with animal, dog, and pet use MRO to resolve eat, bark, and play.
Learn multi-level inheritance, where a class derives from another that derives from a base. Explore hierarchical inheritance, where multiple subclasses share a base, and examine method resolution order and code reuse.
Learn how object-oriented programming uses composition to build objects from other classes, not by inheritance. See delegation and the single responsibility principle enhance flexibility and maintainability.
Explore polymorphism in Python by using a single sound method across animal subclasses; leveraging dynamic typing, inheritance, and method overriding to produce dog, cat, and generic animal sounds.
Explore encapsulation in Python by building classes, using public, protected, and private members, and applying name mangling to protect data.
Learn how encapsulation uses getters and setters to protect private attributes in Python, and explore property decorators for clean, validated access and modification of data.
Explore aggregation in python with a library that contains book objects but does not own them. Contrast aggregation with composition, noting that contained objects survive container deletion.
Explore abstraction in Python by defining abstract classes and methods with the ABC module, creating blueprints for subclasses. See saving and checking accounts implement deposit and withdrawal, illustrating polymorphism.
Master NumPy, the foundation for data manipulation and numerical computing in Python, powering pandas, matplotlib, and scikit-learn for data science and machine learning.
Discover NumPy, the foundation for libraries like pandas, matplotlib, seaborn, SciPy, and scikit-learn, enabling fast numerical operations, memory-efficient arrays, and powerful indexing for analysis and visualization.
Install and verify NumPy in your Python environment, use the NP alias, and create arrays from Python lists; understand NumPy's basics, axes, dimensions, dtypes, and how it differs from lists.
Explore NumPy array fundamentals by slicing and indexing, creating arrays with arange, zeros, ones, and specifying dtype, to manipulate data efficiently.
Explore numpy arrays beyond two dimensions using shape, ndim, and size to inspect dimensions. Learn to create with the full function, index into arrays, use negative indices, and slice subarrays.
Learn to create and transform numpy arrays using the empty function, linspace, and absolute values, then build diagonal and triangular matrices with diag and diagflat for data analysis.
Investigate numpy array manipulation: use view vs copy, reshape and flatten, and the ravel function to explore how shape changes alter references and memory.
Explore numpy array operations on 1d and 3x3 arrays, using sum, mean, max, min with axis, and apply sqrt, exp, sin, cos, log, round, abs, argmax, argmin.
Learn to generate reproducible random arrays with numpy, using seed and permutation, and to manipulate arrays with append, insert, delete, concatenate, and vstack/hstack across dimensions.
Create 1d arrays from iterators with dtype and count, use range, and demonstrate stacking from column stack and row stack (vstack, hstack) as well as splitting and reshaping.
Learn to load and save numpy arrays with genfromtxt, load, save, and text formats, and use argwhere to locate elements greater than 30 in a 2d array.
Learn pandas for data analysis in Python, installing Anaconda and Jupyter, creating and manipulating data frames, cleaning and transforming data, using multi indexing, pivot tables, visualization, and SQL in pandas.
Learn how to install and configure pandas with Anaconda, manage environments with conda, and start Jupyter notebooks on macOS and Ubuntu for data analysis.
Explore Pandas series and data frames, their indexing and relation to NumPy arrays. Create series from lists or dictionaries, then perform element-wise operations with aligned indices and handle missing values.
Create a data frame with random data, assign index and column labels, access, modify, and perform conditional filtering with iloc.
Explore pandas hierarchical indexing with multi-index structures, creating from frame and from tuples, applying names for levels, and querying unit and worker data to access salaries and hours.
Explore pandas data frame operations such as building, filtering, and sorting data. Group by and aggregation techniques reveal mean and other statistics for Titanic passengers.
Explore real datasets from Kaggle, Data.world, and UNICEF, download and load them with pandas, and integrate with SQL databases using SQLAlchemy and SQLite for querying.
Clean raw data with pandas using isnull, fillna, dropna, and standardized column names, then build pivot tables to summarize sales by city, address, and property type.
Explore data visualization with pandas and matplotlib, creating line charts, histograms, scatter plots, pie charts, box plots, area plots, hexbin plots, and scatter plot matrices to uncover patterns and insights.
Explore Polars, a fast data processing library designed for large datasets with parallel processing and lazy evaluation, compare it to pandas, and learn about chunk processing, memory, and visualization.
Explore Polars, a fast data frame library for large datasets, using lazy evaluation, multithreading, memory mapping, and Apache Arrow support with a Rust backend and pandas-like API.
Install Polars and load large dataframes efficiently, compare Polars with pandas, and master accessing columns via name, get column, and select methods for fast data analysis.
Explore polars arithmetic on series, including addition, multiplication, and subtraction, and use sum, mean, and boolean comparisons to filter data and manage columns immutably.
Access and slice Polars data frames by position, returning new frames for rows. Describe statistics, memory, duplicates, emptiness, and uniqueness; compute mean, min, max, product, var, and std.
Explore polars dataframe methods for flags, is_unique, columns, schema, width, glimpse, chunks, and conversions to arrow, numpy, pandas, and torch.
Learn advanced polars data manipulation with group by, aggregation, and sorting, then use map_groups to compute the arrest percentage per primary type and inspect first or last rows per group.
Master advanced Polars data operations, including inner, left, full, cross, semijoin, and antijoin joins, pivot tables, and aggregations like first, sum, mean, and median, plus save to csv.
Compare eager and lazy execution in Polars, highlighting immediate versus deferred computation, query optimization, and memory efficiency for large datasets when benchmarking against Pandas with scan CSV and collect.
Explore data visualization in Polars, including built-in plotting, pandas conversions, and Hvplot, matplotlib, and seaborn options, and compare advantages and limitations.
Master matplotlib for Python data visualization by building plots and animations, using numpy for fake data and yfinance to visualize Google and Apple stock movements.
Learn to visualize data with matplotlib and pandas by creating line and scatter plots in Jupyter, including setup, customization, labels, legends, and basic plotting workflow.
Build and customize bar charts in matplotlib, exploring label, title, axis labeling, and color styling; then visualize multidimensional data with scatter plots, markers, and transparency to reveal relationships.
explore 3d plots for three variables with matplotlib axis 3d and a scatter of x, y, and z data. practice creating 3d plots and histograms.
Learn to create a pie chart in Matplotlib with sizes, labels, colors, and startangle, save plots as png, jpg, or pdf, and build real-time animations using funcanimation.
Fetch historical stock data for Apple and Google with Yahoo Finance, and plot their closing prices to compare which stock is more profitable over time.
Explore seaborn, a powerful Python library for beautiful, insightful data visualizations, and learn to integrate it with pandas and matplotlib to tell clear data stories.
Explore seaborn, a python library built on matplotlib that integrates with pandas to create heatmaps, bar plots, scatter plots, and time series, via pip install Seaborn or conda install Seaborn.
Explore Seaborn built-in datasets, load them with the load dataset function, and visualize distributions with histplot and relationships with scatterplot, using hue, size, and kernel density estimate.
Explore advanced seaborn visuals with box plots and cat plots, using hue by sex, smoker subplots, and options like palette, width, nudge, and confidence intervals to compare tips data.
Learn to visualize distributions with seaborn violin plots by day and gender, then use strip plots with jitter and joint plots for total bill and tips.
Explore seaborn pairgrid techniques to customize plots across variable pairs, including diagonal visuals, hue, aspect, and palette; then build a pivot table heatmap with annotated Titanic survival data.
Master git basics and essential commands, including commit, create branches, merge, and revert changes. Collaborate efficiently with teams on GitHub, resolve conflicts, and practice hands-on to solidify your understanding.
Explore git as a version control system, install and configure global and local settings, manage repositories with commands, and handle line endings using Visual Studio Code integration and GUI tools.
Learn git fundamentals for data analysis: initialize repositories, track changes across the working directory, staging area, and repository, and use global ignore rules to exclude macOS store files.
Master renaming and deleting files with git by staging and committing changes, using git rm for deletions and git mv for renames, and preserving file history in commits.
Create a project-specific .gitignore to define untracked files and directories git should ignore, using patterns and extensions, and configure a local user name and email for commits.
Learn to create, delete, and clone GitHub repositories and configure SSH keys for secure communication, including generating an SSH key and adding it to GitHub.
Set up the GitHub CLI with SSH, manage remotes, push and pull to main, and delete a repository while uploading a local project to GitHub.
Install the Git Graph extension in VS Code and explore git branching. Create and switch between main, feature one, and feature two branches, committing changes to readme.txt and app.py.
Learn to merge feature branches into main using git merge, view commits with git log and git graph, and compare branches with git diff to understand merge outcomes.
Learn to resolve merge conflicts in git by reviewing uncommitted changes with git diff, staging changes, merging feature branches into main, and resolving conflicts in the merge editor or manually.
Learn how to use git reflog to recover commits and undo merges with git reset --hard and --soft, noting local reflog and the effects on working directory and history.
Learn to amend the last git commit and adjust messages, staging changes to rewrite history. Master squash merges, feature branch management, and safely force deleting unmerged branches.
Master viewing recent commits with git log options, stats, pretty formats, and graph, and create aliases like st and br to speed up common git tasks.
Move commits onto the latest main to preserve a linear history with git rebase. Resolve conflicts, rewrite commit hashes, and replay a feature branch for cleaner merges.
This course is designed to teach you the most in-demand Python libraries and tools used by data professionals, making it ideal for aspiring data scientists, analysts, and developers.
What you’ll learn:
Python Basics to Advanced: Starting from the fundamentals, we'll build a solid foundation in Python, guiding you through key programming concepts and progressing to advanced topics like Object-Oriented Programming (OOP).
NumPy & Pandas: Master the core libraries for fast and efficient data wrangling, manipulation, and analysis. Learn how to work with large datasets, handle missing values, and perform advanced calculations.
Polars: Explore Polars, a fast, scalable DataFrame library. We'll compare it with Pandas to show how Polars offers faster performance for data manipulation, especially with large datasets.
Data Visualization with Seaborn & Matplotlib: Learn how to visualize data like a pro. From creating simple plots to designing beautiful, interactive charts, you’ll understand how to tell compelling stories with data. We’ll cover everything from basic visualizations to advanced techniques like heatmaps, histograms, and scatter plots.
Git: Master version control with Git. Learn how to track and manage changes in your code, collaborate on projects, and keep your work organized.
Building Dashboards with Streamlit: Learn how to create interactive dashboards using Streamlit and Matplotlib. You’ll build a live project from scratch using real-world data and deploy it for free, showcasing your work to others.
As part of this course, you’ll complete numerous hands-on assignments to practice and reinforce your learning. By the end, you’ll have a complete, deployable dashboard project that you can demonstrate to potential employers or clients.