Home

Awesome

Python for Scientists

A curated list of recommended Python frameworks, libraries, software and resources, all particularly useful for scientific Python users.

Intended for students and researchers in the sciences who want to get the most out of the open-source Python ecosystem. Aims to provide a list of tools useful for common tasks for scientists, without mentioning things which they are unlikely ever to need (e.g. authentication, databases, networking, NLP).

There is a section of must-haves for beginners.

List inspired by awesome-python, which is a great similar resource for anything else you might want to do with Python!

Some libraries appear multiple times where they are useful in multiple ways.


Algebra

Libraries for manipulation of symbolic algebra, analytic integration etc.

Animations

Bayesian Analysis

Better Scientific Software

Code Quality

Tools to help you write neat and error-free python code

Data Storage

Debugging

Development Environments

Programs to write code into. The main choice is between a software-engineering style IDE, and one intended specifically for scientific users.

Documentation

Domain-Specific Tools

Libraries of tools developed for python users in various fields of science.

Error Handling

Forecasting

Gotchas

GPU Acceleration

Graphical Interfaces

Job Scheduling

Labelled Data

Mathematical Library Functions

Numerical Data

Optimisation Problems

Package Management

Keep track of module dependencies, python versions, and virtual environments.

Paper Writing

Parallelization

Use all the cores of your machine, and scale up to clusters!

Physical Units

Keep track of which physical units your numbers are written in.

Plotting

Producing static plots of publication quality. (For 3D plots see the Visualisation section)

Presentations and Sharing Work

Profiling and benchmarking

Scripting

Tools which are likely to be useful when writing python scripts to automate common tasks.

Speed

Python inevitably sacrifices some speed to gain increased clarity. Scientific programs usually have one or two functions which do 90% of the work, and there are various ways to dramatically speed these up. Use in conjunction with parallelization through dask if you want as much speed as possible.

Statistics

Testing

Check that your code actually does what you think it will do!

Visualisation

There are currently many competing visualisation libraries in python.

Workflow

Don't just write and run python scripts. Tools to make your workflow faster, clearer, and easier to come back to later.

Beginner Recommendations


Data visualisation tips