At some point, we all need to show our work. Most programming work is shared either as raw source code or as a compiled executable. The source code provides complete information, but in a way that’s more “tell” than “show.” The executable shows us what the software does, but even when shipped with the source code it can be difficult to grasp exactly how it works.

Imagine being able to view the code and execute it in the same UI, so that you could make changes to the code and view the results of those changes instantly, in real time? That’s just what Jupyter Notebook offers. 

Jupyter Notebook was created to make it easier to show one’s programming work, and to let others join in. Jupyter Notebook allows you to combine code, comments, multimedia, and visualizations in an interactive document — called a notebook, naturally — that can be shared, re-used, and re-worked. 

And because Jupyter Notebook runs via a web browser, the notebook itself could be hosted on your local machine or on a remote server. 

A Jupyter Notebook with text, code, and a visualization. Altering the code and re-running it live in the browser will change the output, and the new results can be saved to a new notebook.

Originally developed for data science applications written in Python, R, and Julia, Jupyter Notebook is useful in all kinds of ways for all kinds of projects:

Jupyter Notebooks can include several kinds of ingredients, each organized into discrete blocks:

The most common use cases for Jupyter Notebook are data science, mathematics, and other research projects that involve visualizations of data or formulas. Apart from those, though, there are plenty of other use cases:

A next-generation user interface for Jupyter Notebook, called JupyterLab, is now available and considered ready for production use.

As explained in the blog post announcing general availability, JupyterLab is more malleable than a conventional Jupyter Notebook, allowing users to drag-and-drop cells within and between notebooks and to arrange the workspace into separate tabs and subsections. Code can run directly from text files as well as Jupyter Notebook files, and many common file formats for both code and data can be rendered with live previews.

JupyterLab can also be customized with extensions to add support for new file formats, to enrich the interface, or to provide any number of other additional features, enabling a much broader range of notebook applications than Jupyter Notebook. The long-term plan is to replace the current Jupyter Notebook interface with JupyterLab, but only after JupyterLab has proved sufficiently stable and reliable.

JupyterLab is a totally re-engineered front-end for Jupyter Notebook. In addition to providing greater flexibility in arranging the workspace, JupyterLab is customizable through extensions. 

As powerful and useful as Jupyter Notebook can be, it does have some limitations that need to be taken into account.

This story, "What is Jupyter Notebook? Data analysis made easier" was originally published by InfoWorld.

IT World