The Jupyter Project#

Today, if you use more than one programming language for data science, you probably also use different programs to edit and interact with those programs. R users, for example, often use RStudio, while Python users use Spyder, and Julia users use Juno.

But in recent years, an amazing effort has been underway to provide a single set of tools that work with nearly any underlying programming language: Jupyter (as in Ju (Julia) - py (Python) - teR (R)).

The idea of Jupyter is to separate the interface you are working with from the underlying programming language doing your analysis. This makes it possible to create one interface (a text editor, a window where results are displayed, etc.) that can be used to run your analyses in any number of different programs. In the Jupyter ecosystem, the program being used to actually run your analysis (i.e., Python, R) is referred to as a kernel.

Jupyter was originally focused on unifying Julia, Python, and R, but it actually now supports dozens and dozens of different kernels including JavaScript, Go, Haskell, Matlab, Stata, bash, Scala, and so much more.

(Note: Jupyter Notebooks used to be called IPython Notebooks before they expanded to support more languages, so if you see people talking about IPython Notebooks, just think of that as an early, Python-specific version of Jupyter Notebooks.)

Jupyter Notebooks#

Jupyter Notebooks are a tool for easily integrating text, code, and code output into a single document. This not only makes them incredibly useful for instructional materials (this entire site is actually built with Jupyter Notebooks), but it also makes them useful as a method of sharing analyses. Using Jupyter Notebooks, you can not only share the conclusions of your analysis with colleagues, but also the code that generated those analyses, making it easy for others to see how you reached your conclusions, and, crucially, play with that code to see what happens if the analysis is changed slightly. Indeed, Notebooks are so useful for sharing analyses that they’ve become the de facto standard for sharing information at many companies, including Netflix.

In addition to Notebooks, the Jupyter project is also responsible for another tool we’ll see more: the IPython Console. This is a terminal interface for working with Python—designed to replace the basic black-and-white plaintext-only default Python terminal—that supports syntax highlighting, plot rendering, and more.

OK, I know, that all sounds really abstract. What makes Jupyter Notebooks special is their interactivity, so it’s hard to understand their value without seeing them in action.

Jupyter Notebooks and IPython Console Tutorials#

To learn the basics of using Jupyter Tools in VS Code, watch this tutorial.