# Complementary, in-depth lessons from other groups

There are **many** free Python tutorials online; a quick search will produce a very long list. For example, [Python Basics: Introduction to Python](https://realpython.com/learning-paths/python-basics/) features many detailed lessons from [https://realpython.com](https://realpython.com), which are a great source for Python in-depth learning. [Project Pythia Foundations](https://foundations.projectpythia.org) has a great collection of more advanced tutorials especially geared for the earth sciences, including Oceanography.

In addition to the [Project Pythia Foundations tutorials](https://foundations.projectpythia.org) we've covered, a more general and comprehensive set of learning materials are available from [The Carpentries](https://carpentries.org), "a global community teaching foundational computational and data science skills to researchers in academia, industry and government." Carpentries tutorials and lessons are openly accessible.

Specifically, we recommend the [Plotting and Programming in Python](https://swcarpentry.github.io/python-novice-gapminder/) lesson from The Carpentries: "This lesson is an introduction to programming in Python for people with little or no previous programming experience." It's also referred to as the "gapminder" lesson, based on the dataset it uses.

```{note}
Another, similar Carpentries lesson that you may find helpful is [Programming with Python](https://swcarpentry.github.io/python-novice-inflammation/): "The best way to learn how to program is to do something useful, so this introduction to Python is built around a common scientific task: data analysis."
```

## Getting the Data

The data used in this subset of Software Carpentry lessons is taken from the [gapminder](https://en.wikipedia.org/wiki/Gapminder_Foundation) dataset. To obtain it, download and unzip the file [python-novice-gapminder-data.zip](https://swcarpentry.github.io/python-novice-gapminder/files/python-novice-gapminder-data.zip). To execute the lesson materials, launch JupyterLab in the folder that contains the unzipped data file. (see [Starting JupyterLab](https://swcarpentry.github.io/python-novice-gapminder/01-run-quit.html#starting-jupyterlab)).

## Lesson episodes

The *Plotting and Programming in Python* lesson is intended as a workshop that takes a full day. The *subset* of materials (referred to as "episodes") listed below are a good sequence for learning Python.

### The basics

- [1. Running and Quitting](https://swcarpentry.github.io/python-novice-gapminder/01-run-quit.html)
- [2. Variables and Assignment](https://swcarpentry.github.io/python-novice-gapminder/02-variables.html)
- [3. Data Types and Type Conversion](https://swcarpentry.github.io/python-novice-gapminder/03-types-conversion.html)
- [4. Built-in Functions and Help](https://swcarpentry.github.io/python-novice-gapminder/04-built-in.html)
- [11. Lists](https://swcarpentry.github.io/python-novice-gapminder/11-lists.html)
    - Other core Python data structures: tuples, dictionaries, sets
- [12. For Loops](https://swcarpentry.github.io/python-novice-gapminder/12-for-loops.html)
- [13. Conditionals](https://swcarpentry.github.io/python-novice-gapminder/13-conditionals.html)

### More advanced topics

- [6. Libraries](https://swcarpentry.github.io/python-novice-gapminder/06-libraries.html)
- [7. Reading Tabular Data into DataFrames](https://swcarpentry.github.io/python-novice-gapminder/07-reading-tabular.html)
- [8. Pandas DataFrames](https://swcarpentry.github.io/python-novice-gapminder/08-data-frames.html)
- [9. Plotting](https://swcarpentry.github.io/python-novice-gapminder/09-plotting.html)
- [16. Writing Functions](https://swcarpentry.github.io/python-novice-gapminder/16-writing-functions.html)

The key points from each episode are [summarized here](https://swcarpentry.github.io/python-novice-gapminder/instructor/key-points.html)
