Tutorial 2: exercise

(c) 2018 Justin Bois. With the exception of pasted graphics, where the source is noted, this work is licensed under a Creative Commons Attribution License CC-BY 4.0. All code contained herein is licensed under an MIT license.

This document was prepared at Caltech with financial support from the Donna and Benjamin M. Rosen Bioengineering Center.

This tutorial exercise was generated from an Jupyter notebook. You can download the notebook here. Use this downloaded Jupyter notebook to fill out your responses.

Exercise 1

The Anderson-Fisher iris data set is a classic data set used in statistical and machine learning applications. Edgar Anderson carefully measured the lengths and widths of the petals and sepals of 50 irises in each of three species, I. setosa, I. versicolor, and I. virginica. Ronald Fisher then used this data set to distinguish the three species from each other.

a) Load the data set, which you can download here into a Pandas DataFrame called df. Be sure to check out the structure of the data set before loading. You will need to use the header=[0,1] kwarg of pd.read_csv() to load the data set in properly.

b) Take a look df. Is it tidy? Why or why not?

c) Perform the following operations to make a new DataFrame from the original one you loaded in exercise 1 to generate a new DataFrame. Do these operations one-by-one and explain what you are doing to the DataFrame in each one. The Pandas documentation might help.

In [ ]:
df_tidy = df.stack(level=0)
In [ ]:
df_tidy = df_tidy.sort_index(level=1)
In [ ]:
df_tidy = df_tidy.reset_index(level=1)
In [ ]:
df_tidy = df_tidy.rename(columns={'level_1': 'species'})

d) Is the resulting DataFrame tidy? Why or why not?

e) Using df_tidy, slice out all of the sepal lengths for I. versicolor as a Numpy array.


Exercise 2

a) Make a scatter plot of sepal width versus petal length with the glyphs colored by species.

b) Make a plot comparing the petal widths of the respective species. Comment on why you chose the plot you chose.