Python packages for scientific research

This page lists some useful packages for scientific research with Python. If you are new to Python, start with the introductory tutorials of the reScipy lectures to learn how to use this programming language to perform data analysis.

Packages are divided into different categories, depending on the application domain, with a link to the relevant section of the lectures. Many of these packages are already included in the most common Python distributions, others can be installed as explained in their documentation or in the Packages installation appendix.

Environments

See Python language for a brief introduction to these packages.

  • jupyterlab | Extensible user interface for interactive and reproducible computing.

  • spyder | Integrated development environment for scientific data analysis.

Data structures

See Data handling for a brief introduction to these packages.

  • numpy | Multi-dimensional arrays and matrices, with a collection of high-level mathematical functions to operate on them.

  • pandas | Data structures and operations for manipulating columnar and tabular data, built on NumPy.

  • xarray | Labeled multi-dimensional NumPy-based arrays with dimensions, coordinates and attributes.

NeXus/HDF5

See Data handling for a brief introduction to these packages.

  • nexusformat | Python API to open, create, and manipulate NeXus data written in the HDF5 format.

  • nxarray | xarray extension for high-level NeXus file input and output.

Core plotting libraries

See Plotting for a brief introduction to these packages.

  • matplotlib | Core plotting library for Python and NumPy arrays.

  • bokeh | Plotting library for interactive visualization in web browsers.

High-level plotting

See Plotting for a brief introduction to these packages.

  • seaborn | High-level interface to make plotting with matplotlib quick and effective.

  • hvplot | High-level plotting library to quickly produce bokeh plots from pandas and xarray objects, based on holoviews.

  • holoviews | Descriptive data plotting built on top of matplotlib and bokeh.

Data analysis

See the related websites and the documentation links provided for an exhaustive description of these packages.

Visualization and dashboarding

If you are specifically interested in an overview of the packages for data visualization and dashboarding then pyviz.org is what you are looking for. In the following are listed some of these packages.

Multi-dimensional visualization

  • ipyvolume | Library to visualize 3d volumes and 3d scatter plots in jupyterlab.

  • mayavi | Visualization of scalar, vector and tensor data in 2d and 3d (as Python module or through graphical user interface).

Dashboarding

  • streamlit | Framework to quickly build shareable web apps from scripts.

  • panel | Library to create custom interactive web apps and dashboards with user-defined widgets.

  • voila | Conversion of Jupyter notebooks into shareable interactive dashboards.

  • ipywidgets | Widget library to build interactive user interfaces within jupyterlab.