
Rapid prototyping, exploratory data analysis (EDA), and creation of fast machine learning models to check basic business assumptions before investing the time and resources needed to develop a full data pipeline.To summarise the above, Jupyter Notebook is nothing but my canvas to explore data sets and rapid prototype. It's awesome that it's cell-based and there's immediate feedback loop. It's really very useful to be able to write out a block of code, then run it, and immediately see the black and yellow graphic below that shows an intricate plot. It helps me keep a flow state in my mind while in the midst of cleaning up messy dataset or tuning hyperparameters for a machine learning model. Other types of support include markdown — because it allows me to write our thought process, assumptions, and initial findings along with the live code, and that's a lot more user-friendly when passing prototypes along to our data engineering team. Review collected by and hosted on G2.com.
This is a fantastic idea for solo work, but not so SoS in the ordinary software development process. Version control is by far the biggest pain. Taking advantage of the fact that notebooks are saved as huge JSON files with various parts of the output and metadata, change-tracking via Git just becomes pain in the ass. One of the least favorite tasks for me in Jupyter is resolving merge conflicts. In addition, it does not possess the solid syntactic support of a complete IDE such as PyCharm or VS Code—feats such as sophisticated linting, in-depth debugging or refactoring need jumping through hoops with extensions. This makes it easy to run cells out of order so as to add hidden states, and can cause the very common "it works on my machine" bug when another user tries to run the notebook in sequence. Review collected by and hosted on G2.com.