---
# System prepended metadata

title: '2021-04-26 <br> SWD1a: Introduction to Python'

---

# 2021-04-26 <br> SWD1a: Introduction to Python

Welcome to the hack pad for SWD1a course from Research Computing at the University of Leeds!

You can edit this document using [Markdown syntax](https://guides.github.com/features/mastering-markdown/).

## Contents

1. [Links to resource](#Links-to-resources)
2. [Agenda Day 1](#Agenda-Day-1)
3. [Agenda Day 2](#Agenda-Day-2)
4. [Agenda Day 3](#Agenda-Day-3)
5. [Agenda Day 4](#Agenda-Day-4)
6. [What's your name and where do you come from?](#What’s-your-name-and-where-do-you-come-from)
7. [Further reading](#Further-reading)
8. [Extra code snippets](#Misc-code-snippets)

## Links to resources

- **Contact Research Computing** - https://bit.ly/arc-help
- **Workshop Slides** - https://arctraining.github.io/python-2021-04/
- **Github repository** - https://github.com/ARCTraining/python-2021-04
- **Research Computing website** - https://arc.leeds.ac.uk/


## Agenda Day 1


| Time     | Agenda                                     |
| -------- | ------------------------------------------ |
| 0900     | Intro, using Google Colab, What is Python? |
| 0950     | Break                                      |
| 1000     | Python basics, Handling data               |
| 1050     | Break                           |
| 1100     | Python packages and Pandas                 |
| 1150     | Questions                                  |
| 1200     | Close                                      |



## Agenda Day 2


| Time     | Agenda                                          |
| -------- | ----------------------------------------------- |
| 0900     | Mount google drive onto colab, using pandas     |
| 0950     | Break                                           |
| 1000     | Indexing and subsetting, Data types and formats |
| 1050     | Break                                           |
| 1100     | Combining dataframes                            |
| 1150     | Questions                                       |
| 1200     | Close                                           |



## Agenda Day 3

| Time     | Agenda                                          |
| -------- | ----------------------------------------------- |
| 0900     | Indexing and subsetting, Data types and formats |
| 0950     | Break                                           |
| 1000     | Merging dataframes                              |
| 1050     | Break                                           |
| 1100     | Loops and functions                             |
| 1150     | Questions                                       |
| 1200     | Close                                           |




## Agenda Day 4

| Time     | Agenda                                          |
| -------- | ----------------------------------------------- |
| 0900     | Finishing off merging, loops and functions      |
| 0950     | Break                                           |
| 1000     | loops and functions cont., plotting with plotnine|
| 1050     | Break                                           |
| 1100     | Bringing it all together                        |
| 1150     | Questions                                       |
| 1200     | Close                                           |


## What's your name and where do you come from? 

- Alex Coleman, Research Software Engineer, my research has previously been in natural language processing and clustering event descriptions data and simulating crime rates using historic data.
- Martin Callaghan - Research Computing Consultant. Bit of a 'jack of all trades' but my research area is Natural Language Processing focussing on text summarisation. 
- Nick Rhodes - Research Software Engineer, background in software and systems development and support; generalist.
- Ramona Behravan - Post Doc, school of Design. I work with python on Machine Learning projects but never had the basics to build upon, just jumped right in.
- Les Arkless, technician Civil Engineering. design and coding for data loggers and image capture for expt work using Raspberry Pi's.
- Omar - just finished my PhD. Going to do some publications on my research field
- James Padgett, Systems Librarian working in IT App Support looking after Library systems including the Library Management System. I have an unnatural obsession with Python....that's why I'm here, and I like to link systems together using APIs etc.
- Sarah - PhD student, want to learn python
- Amy Turner - PhD researcher hoping to learn a bit more about how to use computational power to answer biological questions
- Will Grant - PhD student looking to learn more about programming in general, and python seemed like a good place to start.
- Thomas Watson - PhD student, looking to use Python creatively in practice-based research
- Lydia H - PhD student in ITS, i want to learn python to help me with my research as it need lots of repetitive calculation   
- Alex B - Final year PhD student, which has used Python before (not very well) to automate data analysis and want to learn how to do it more efficiently.
- Raeesa - PhD student in mech eng wanting to widen skill sets to be more applicable for wider engineering applications 
- Nouf - PhD student, looking to learn how to use Python before I start my project
- Amir - a PhD student of school of Electronic and Electrical Engineering.

- Charlotte, I'm just interested in learning how it works
- Sophie, Masters by Research student studying Geogrpahy. Hoping to learn some coding and see how it all works.
- Sumitra S - Postdoc, School of Biological Sciences, hoping to learn some coding to implement in my work. 
- Elton Vasconcelos - Bioinformatics Research Officer @LeedsOmics
- Kristine - PhD in Mechanical Engineering just want to learn how to do programming
- Sibo-PhD student in School of Biology, hoping to learn some coding to use in my research work 
- Yousef, PhD student in school of Medicine
- Muyang Zhang, PhD student in school of Maths
- Mazin Nasralla, PhD student in School of Physics and Astronomy.  I want to use Python for data processing, and graphing results. 
- Shradhanjali Sahu, PhD student

## Further reading

- Python notebook magic commands - https://ipython.readthedocs.io/en/stable/interactive/magics.html
- Pandas documentation - https://pandas.pydata.org/docs/


## Misc code snippets

### Using `os` to check if something is a file or folder

```python
os.path.isdir("string/file/path")
```

This returns a boolean value based on the string file path passed. True, if the file path points to a directory. False if the path points to something that isn't a directory.

```python
os.path.isfile("string/file/path") 
```
Does the same for checking something is a file.

### Including LaTeX for plot text

You can use LaTeX rendering for plot text features. To do this you need to tell `matplotlib` (which `plotnine` is using) that you are using LaTeX syntax in the text elements. You can do this with the line:

```python=
from matplotlib import rc
rc('text', usetex=True)
```
A full example is:

```python=
import plotnine as p9
import pandas as pd
import numpy as np

from matplotlib import rc
rc('text', usetex=True)

df = pd.DataFrame({"x": np.random.uniform(size=10),
                   "y": np.random.uniform(size=10)})

(p9.ggplot(df, aes("x", "y")) +
    p9.geom_point() +
    p9.labs(x="$\\sum_{i = 1}^n{x_i^2}$",
            y="$\\alpha + \\beta + \\frac{\\delta}{\\theta}$")
)

```
![](https://i.imgur.com/f6mBqEI.png)
