Learn Python by running it. Every guide is a set of notebooks that open in Google Colab: read a little, run a cell, change it, run it again. Nothing to install and nothing to set up.
New to Python? Start with Python from the Start. The guides below are in reading order.
How a notebook works. A notebook opens in Google Colab and runs in your browser. It contains the explanation, worked examples you can edit, exercises to try, and a section on the errors that part of Python actually produces, with the real message shown.
The exercises are the point. Every notebook has a separate solutions file, so the answer is never sitting one scroll below the question.
The guides
Foundations teaches the language itself, and is best worked through in order: each guide depends on the one before it. The deep dives take one library apiece, grouped by what the library is for, and any of them can be read once you have the foundations it names. Projects puts everything to work on real problems.
| Foundations | |||
| 1 | Python from the StartThe language itself | 21 | Complete |
| 2 | Files, Paths and FormatsGetting data in and out | 10 | Complete |
| 3 | Object-Oriented PythonClasses, and when not to use them | 14 | Complete |
| 4 | APIs and JSONTalking to the rest of the internet | 18 | Complete |
| 5 | Testing and PackagingMaking it survive contact with other people | 10 | Complete |
| Relational and Document Databases | |||
| 6 | SQLAlchemy, Deep DiveSessions, models and the SQL underneath | 20 | Complete |
| 7 | SQLModel, Deep DiveOne model for the table and the API | 14 | Complete |
| 8 | Peewee, Deep DiveA small mapper, end to end | 12 | Complete |
| 9 | sqlite3, Deep DiveThe database already on your machine | 20 | Complete |
| 10 | asyncpg and psycopg3, Deep DivePostgreSQL, from Python | 17 | Complete |
| 11 | PyMongo and Beanie, Deep DiveDocuments instead of rows | 16 | Complete |
| Data Science and Machine Learning | |||
| 12 | NumPy, Deep DiveArrays, shapes and vectorization | 14 | Planned |
| 13 | Pandas, Deep DiveTabular data, properly | 18 | Planned |
| 14 | scikit-learn, Deep DiveEstimators, pipelines, evaluation | 14 | Planned |
| 15 | PyTorch and TensorFlow, Deep DiveTensors, gradients and training loops | Planned | |
| 16 | LightGBM and XGBoost, Deep DiveGradient boosting on tables | Planned | |
| 17 | GeoPandas, Deep DiveTables with geometry in them | Planned | |
| 18 | Shapely, Deep DivePoints, lines and polygons | Planned | |
| Data Engineering and Analytics | |||
| 19 | Polars, Deep DiveExpressions, and the query it plans | Planned | |
| 20 | DuckDB, Deep DiveSQL over files, with no server | Planned | |
| 21 | PyArrow, Deep DiveThe columnar format underneath | Planned | |
| 22 | PySpark, Deep DiveWhen the data outgrows the machine | Planned | |
| Statistics and Econometrics | |||
| 23 | SciPy, Deep DiveOptimization, signals and statistics | 12 | Planned |
| 24 | Statsmodels, Deep DiveRegression with a summary table | Planned | |
| 25 | PyMC, Deep DiveBayesian models you can sample | Planned | |
| 26 | Pingouin, Deep DiveTests that print a table | Planned | |
| AI Agents and Retrieval | |||
| 27 | LlamaIndex, Deep DiveYour documents, made retrievable | Planned | |
| 28 | Haystack, Deep DiveSearch pipelines that reach production | Planned | |
| 29 | DSPy, Deep DivePrompts written by a program | Planned | |
| 30 | LangChain and LangGraph, Deep DiveTools, state and the loop | Planned | |
| 31 | CrewAI, Deep DiveAgents with roles | Planned | |
| 32 | AutoGen, Deep DiveAgents that talk, and run code | Planned | |
| 33 | PydanticAI, Deep DiveAnswers your code can trust | Planned | |
| 34 | smolagents, Deep DiveAgents that write Python | Planned | |
| LLM Training, Fine-Tuning and Serving | |||
| 35 | Unsloth, Deep DiveFine-tuning that fits in your memory | Planned | |
| 36 | Axolotl, Deep DiveA training run from one file | Planned | |
| 37 | Torchtune, Deep DiveRecipes you can read | Planned | |
| 38 | LLaMA-Factory, Deep DiveMany models, many methods | Planned | |
| 39 | PEFT and TRL, Deep DiveAdapters, and training on preferences | Planned | |
| 40 | Accelerate, Deep DiveOne script, several cards | Planned | |
| 41 | DeepSpeed and Megatron-LM, Deep DiveTraining that will not fit | Planned | |
| 42 | PyTorch FSDP, Deep DiveSharding, in PyTorch itself | Planned | |
| 43 | vLLM, Deep DiveServing a model to many people | Planned | |
| 44 | llama-cpp-python and Ollama, Deep DiveModels on your own machine | Planned | |
| Computer Vision and Image Processing | |||
| 45 | OpenCV, Deep DiveFrames, filters and features | Planned | |
| 46 | Ultralytics YOLO, Deep DiveDetection, segmentation and tracking | Planned | |
| 47 | MediaPipe, Deep DiveFaces, hands and pose, in real time | Planned | |
| 48 | Pillow and Albumentations, Deep DiveLoading images, and changing them on purpose | Planned | |
| Voice, Speech and Audio | |||
| 49 | Whisper and faster-whisper, Deep DiveSpeech to text, offline | Planned | |
| 50 | Vosk, Deep DiveRecognition on a small machine | Planned | |
| 51 | SpeechRecognition, Deep DiveOne interface, several engines | Planned | |
| 52 | Coqui TTS and XTTS, Deep DiveSynthetic speech, and cloned voices | Planned | |
| 53 | edge-tts, Deep DiveHundreds of voices, over the network | Planned | |
| 54 | pyttsx3, Deep DiveThe voices already installed | Planned | |
| 55 | Librosa, Deep DiveWhat a sound looks like | Planned | |
| 56 | Pydub and PyAudio, Deep DiveEditing audio, and recording it | Planned | |
| Game Development | |||
| 57 | Pygame and Pygame CE, Deep DiveThe loop, the sprite and the clock | Planned | |
| 58 | Arcade, Deep Dive2D with the graphics card doing the work | Planned | |
| 59 | Pyglet, Deep DiveWindows, graphics and no dependencies | Planned | |
| 60 | Ursina, Deep Dive3D, quickly | Planned | |
| 61 | Panda3D, Deep DiveA 3D pipeline you control | Planned | |
| 62 | UPBGE, Deep DiveGames inside Blender | Planned | |
| 63 | Ren'Py, Deep DiveBranching stories, and saves | Planned | |
| 64 | Pymunk, Deep DivePhysics you can trust | Planned | |
| Web Frameworks and Networking | |||
| 65 | FastAPI, Deep DiveAsynchronous APIs, typed and documented | Planned | |
| 66 | Django, Deep DiveThe framework that brings everything | Planned | |
| 67 | Flask, Deep DiveSmall, until you decide otherwise | Planned | |
| 68 | Requests and httpx, Deep DiveSessions, timeouts and retries | Planned | |
| 69 | BeautifulSoup and Scrapy, Deep DiveReading a page, and crawling a site | Planned | |
| Interactive Apps and Visualization | |||
| 70 | Matplotlib, Deep DivePlots you can defend | 12 | Planned |
| 71 | Seaborn, Deep DiveStatistical plots in one line | Planned | |
| 72 | Plotly, Deep DiveCharts that answer back | Planned | |
| 73 | Streamlit, Deep DiveA script that becomes an app | Planned | |
| 74 | Gradio, Deep DiveA demo somebody else can try | Planned | |
| Workflow Orchestration and Background Work | |||
| 75 | Dagster and Prefect, Deep DivePipelines that know their dependencies | Planned | |
| 76 | Apache Airflow, Deep DiveSchedules, and filling in the past | Planned | |
| 77 | Celery, Deep DiveWork that happens later | Planned | |
| Developer Tooling and Quality | |||
| 78 | pytest, Deep DivePlugins, and testing hard things | Planned | |
| 79 | Pydantic, Deep DiveTypes checked while the program runs | Planned | |
| 80 | uv and Ruff, Deep DiveFast tools for the dull parts | Planned | |
| Finance and Quantitative Analysis | |||
| 81 | yfinance, Deep DiveMarket data, into a DataFrame | Planned | |
| 82 | Backtrader, Deep DiveA strategy, tested against the past | Planned | |
| 83 | TA-Lib, Deep DiveIndicators, computed correctly | Planned | |
| 84 | CCXT, Deep DiveOne client, many exchanges | Planned | |
| Documents and File Formats | |||
| 85 | pypdf and PyMuPDF, Deep DiveText out of a PDF, and pages back in | Planned | |
| 86 | openpyxl and XlsxWriter, Deep DiveSpreadsheets, written properly | Planned | |
| 87 | python-docx, Deep DiveWord documents from code | Planned | |
| Parallel Computing and Concurrency | |||
| 88 | Ray, Deep DivePython across a cluster | Planned | |
| 89 | Dask, Deep DiveNumPy and Pandas, in parallel | Planned | |
| 90 | Joblib, Deep DiveA parallel loop, and a cache | Planned | |
| Security and Networking | |||
| 91 | Scapy, Deep DivePackets, built and read | Planned | |
| 92 | Impacket, Deep DiveProtocols at the level attackers use | Planned | |
| Projects | |||
| 93 | Projects, End to EndEverything at once | 8 | Planned |