Learn Python with Talk Python's 270 hours of courses

Awesome Jupyter Libraries and Extensions in 2022

Episode #394, published Thu, Dec 15, 2022, recorded Thu, Dec 1, 2022

Jupyter is an amazing environment for exploring data and generating executable reports with Python. But there are many external tools, extensions, and libraries to make it so much better and make you more productive. On this episode, we are going to cover a ton of them. We have Markus Schanta, the maintainer of the awesome-jupyter list on the show and we'll highlight a bunch of Jupyter gems.

Watch this episode on YouTube
Play on YouTube
Watch the live stream version

Episode Deep Dive

Guest Introduction and Background

Markus Schanta joins the show as the creator and maintainer of the awesome-jupyter GitHub list. He comes from a data analysis and quantitative finance background, having worked at Goldman Sachs, Man Group, and now his own firm, Blue Balance Capital. Throughout his career, Markus has relied extensively on Python and Jupyter notebooks for data exploration, visualization, and report generation. His passion for tooling and community-driven resources led him to curate the awesome-jupyter list, which helps developers and data scientists discover powerful Jupyter extensions and libraries.

What to Know If You're New to Python

If you’re relatively new to Python but want to follow along with the ideas in this episode, here are a few quick starting points:

  • Remember that Jupyter notebooks let you blend code, visual outputs, and text in a single environment.
  • Understanding basic Python syntax (variables, loops, imports) is enough to get started with Jupyter.
  • Libraries like pandas or simple data visualization packages (e.g., matplotlib) can help ground your learning in interesting notebook examples.

Key Points and Takeaways

1) Curated "Awesome-Jupyter" List Markus maintains a GitHub repository compiling a comprehensive set of Jupyter-related tools, extensions, and resources contributed by the community. It spans everything from visualization libraries to collaboration and version control utilities, offering a one-stop resource for power users and beginners alike.

2) Collaboration and Education Tools Jupyter notebooks are popular for classroom instruction and team-based data work. Tools like nbgrader let teachers automate assignment distribution and grading, while nbtutor visually explains Python code execution for students learning programming fundamentals.

3) Visualization Libraries Declarative plotting libraries in Python make it easier to build rich, interactive graphs directly inside notebooks. Altair stood out as a favorite, offering a concise syntax built on top of the Vega framework, while bokeh, matplotlib, and seaborn also remain popular.

4) Publishing and Converting Notebooks Jupyter notebooks can serve as the core of data reports, articles, or documentation. nbconvert transforms notebooks to HTML, PDF, or other formats, while Jupyter Book turns collections of notebooks into polished publications or course materials.

5) Version Control and Collaboration Storing notebook outputs directly in .ipynb files can lead to large diffs and merge conflicts. Solutions like nbdime (intelligent diffs), nbclean (removing saved outputs), or jupytext (syncing notebooks with Markdown or .py files) make collaborating through Git more manageable.

6) Reusable Notebook Workflows Papermill and other tools let you treat notebooks as functional pipelines: define parameters for inputs and produce versioned or parameterized outputs. This is especially useful for automating reporting or chaining computational steps at scale.

7) nbdev for “Literate Programming” nbdev transforms Jupyter notebooks into production-ready Python packages. It supports two-way syncing between notebooks and .py files, automated testing, documentation generation, and a robust build process for distributing libraries or sharing code.

8) Binder for Live Demos Binder makes a repository of notebooks instantly executable in the cloud. It automatically spins up Docker containers so anyone can run your notebook with one click—perfect for demos, reproducible research, or interactive documentation.

9) IPython Magic Commands Built into Jupyter’s IPython kernel, these magic commands simplify debugging (%debug), benchmarking (%time), workflow history (%history), and even external shell integration via !ls or !ping. They’re a powerful yet underutilized feature for everyday notebook users.

10) Deepnote and Hosted Notebook Solutions Deepnote is a cloud-based notebook platform with an emphasis on real-time collaboration, commenting, and easy setup. Hosted solutions like Deepnote or Google Colab reduce DevOps overhead, offering ready-to-go environments for teams, students, or data scientists.

Interesting Quotes and Stories

  • On Multi-Use Collaboration: “Having a shared setup in the cloud means I can pick up my analysis from wherever I am—just need a browser.”
  • On Teaching with Jupyter: “I can define how I want the assignment to be graded automatically, and students can see right away if they’re passing each test—everyone wins.”

Key Definitions and Terms

  • IPython Magic Commands: Special commands in Jupyter (e.g., %time, %debug) that simplify tasks like performance measurement or debugging right within a notebook cell.
  • Binder: A free cloud service that takes a GitHub repo of notebooks and creates a live, runnable environment with one click.
  • nbdev: A tool from fast.ai allowing you to create Python packages, tests, and documentation from a set of notebooks (literate programming approach).
  • nbdime: A library that helps you see meaningful diffs for Jupyter notebooks under version control.
  • Papermill: Parameterizes and executes notebooks programmatically for tasks like generating multiple reports from one notebook template.

Learning Resources

If you’d like to strengthen your Python foundation or learn more about data-focused workflows, here are some hand-picked courses from Talk Python Training:

Overall Takeaway

Jupyter notebooks remain a powerhouse for anyone working in Python—especially in data analysis, education, or collaborative settings. By adopting community-driven extensions such as nbgrader, nbdev, and nbdime, you can supercharge your workflow, seamlessly integrate version control, and polish notebooks for wide distribution and production use. The awesome-jupyter list curated by Markus is a testament to just how vibrant and fast-evolving this ecosystem is, offering newcomers and experts alike a springboard for discovering new ways to make Jupyter even more effective.

Links from the show

Markus Shanta: markus.schanta.at
Markus on Twitter: @markusschanta
awesome-jupyter list: github.com
Jupyter book: jupyterbook.org
Jupyter Desktop App: jupyter.org
Talk Python Episode on 60 Notebook Envs: talkpython.fm
nbdev: github.com
Python Tutor: pythontutor.com
Cell Magics: ipython.readthedocs.io
Watch this episode on YouTube: youtube.com
Episode transcripts: talkpython.fm

--- Stay in touch with us ---
Subscribe to Talk Python on YouTube: youtube.com
Talk Python on Bluesky: @talkpython.fm at bsky.app
Talk Python on Mastodon: talkpython
Michael on Bluesky: @mkennedy.codes at bsky.app
Michael on Mastodon: mkennedy

Talk Python's Mastodon Michael Kennedy's Mastodon