A panda, attempting to make sense of a data science task.MidJourney 5
We have now covered every step of the ten-step workflow.
Tomorrow and Friday your team will build a workflow of your own, in a notebook that takes a dataset you pick out this afternoon, works it through all ten steps, and ends with a figure and a claim about your data. You will work in teams of two or three, and on Friday afternoon each team will present their project to the rest of the class.
Thursday and Friday will go a lot more smoothly if you leave the room today with a dataset you have already opened and a question you have already written down, which is the whole job of this session. We will cover no new Python in this session.
By the end of the session, your team should have:
a team, of two or three people
a dataset, loaded into a DataFrame, with its shape, its dtypes and its nulls printed
three candidate questions, written down in complete sentences
one figure, however ugly, made from your data
one sentence naming the step of the ten you expect to be hardest on this dataset
a written record of all of the above, in a notebook, saved
Getting Started
We make one notebook per team this afternoon, rather than one per person, so wait until you have a team before you create the file.
Create the file. In the Explorer, hover over the EDS217 heading and click New Fileโฆ, then type the name in full, extension included: Project_<your team name>.ipynb
Check the kernel. The Kernel Selector in the notebookโs action bar should read Python 3.11.15 (Conda: eds217). If it reads anything else, click it, choose Change Kernel, and pick the eds217 entry.
Add a title cell. Click + Markdown in the action bar, and give it this content, with every team memberโs name in it:
# EDS 217 Final Project: <team name>Members: <names>[Session Webpage](https://eds-217-essential-python.github.io/course-materials/interactive-sessions/7d_project_kickoff.html)Date: 09/09/2026
Save with Ctrl + S (Cmd + S on macOS), and keep saving as you go.
Your team will still be working in this same file on Friday morning, so decide now whose machine it lives on, and get it into a shared folder or a repository (or both!) before you leave today.
The ten steps, one last time
Your project notebook should be built around the ten-step workflow, and every one of the steps should appear in it under a markdown heading, even if the content of a step is one line long. The checklist on the final project page is what we mean by โfinishedโ.
#
Step
Taught
1
Import
Day 2
2
Explore
Day 2
3
Clean
Day 4
4
Filter
Day 3
5
Sort
Day 3
6
Transform
Day 4
7
Group
Day 5
8
Aggregate
Day 5
9
Join / Reshape
Day 6
10
Visualize
Day 7
A one-line step still counts, and writing that one line down is the point of the exercise. A project where the Clean step reads โthis file arrived clean; .isnull().sum() is zero in every column and there are no duplicate rowsโ has done the Clean step properly. A project that quietly skips the heading altogether leaves you, and anybody reading your notebook later, unable to tell whether the file needed no cleaning or whether nobody ever looked.
Step 1: Form a team
Teams of two or three, please. Three works well, but four is too many, because on a two-day project the fourth person usually ends up watching over somebodyโs shoulder.
We will take about five minutes for this. Once you have a team, open one shared notebook, name it after your team, and put everybodyโs name in the first markdown cell.
Step 2: Find a dataset
You are looking for a CSV file: not a database, not an API, not a shapefile, and not a zip archive of forty files.
What makes a dataset workable in two days
Check all five of these before you commit to a dataset:
It is a single CSV file, and you can get its download URL.
It has more than a couple of hundred rows. With fewer rows than that, every group you make will have only three or four rows in it, and a mean computed from three rows tells you very little.
It has at least two numeric columns. You need two to make a scatter plot.
It has at least one categorical column with a handful of repeated values: species, region, year, type, country. A categorical column is what you will group by and what you will pass to hue=, so without one, a good deal of what we have learned this week has nothing to work on.
You can say where it came from and what one row is. If you cannot answer โwhat does one row of this file representโ in a sentence, keep looking.
It does not have to be environmental data! Be curious. A dataset you genuinely want to know the answer about will keep you going on Friday morning far better than a worthier one you find dull. If your team is stuck between two candidates, or cannot find one at all, grab Cella or Kelly and we will look at them with you.
If your file is not already at a public URL, put it in a Google Drive folder in your UCSB account and use the loading recipe at the bottom of the final project page.
Step 3: The twenty-minute smoke test
Do not spend the afternoon reading a datasetโs documentation. Load it and look at it. Everything below is Day 2 vocabulary, and it takes four cells:
import pandas as pdurl ='...'# your filedf = pd.read_csv(url)print(df.shape)print(df.dtypes)
df.head()
df.isnull().sum()
df.describe()
Here are two of those cells run on the penguins data, which we have all seen before, so you can see what the output should look like:
Code
import pandas as pdurl ='https://eds-217-essential-python.github.io/data/penguins.csv'df = pd.read_csv(url)print(df.shape)print(df.dtypes)
(344, 7)
species object
island object
bill_length_mm float64
bill_depth_mm float64
flipper_length_mm float64
body_mass_g float64
sex object
dtype: object
Code
df.isnull().sum()
species 0
island 0
bill_length_mm 2
bill_depth_mm 2
flipper_length_mm 2
body_mass_g 2
sex 11
dtype: int64
If the smoke test turns up a file with 30 rows, or 400 columns, or only one usable numeric column, set it aside now and go find another one. Twenty minutes of looking today can save you two days of coping!
Step 4: Write three questions
A good project question tends to follow one of three patterns, and we have been building all three of them all week:
For each <category>, how does <measurement> compare?
Does the relationship between <measurement> and <measurement> differ by <category>?
Has <measurement> changed between <time> and <time>, and is the change the same everywhere?
The ten steps are built to answer questions in those three patterns. Write three questions about your own dataset following the patterns above, in complete sentences, with your actual column names in them.
Write three rather than one, because the first question you write about a new dataset is often a question the data cannot actually answer, and you may not discover that until Thursday afternoon.
Note
๐ Questions to avoid, and why:
โCan we predict X from Y?โ Prediction belongs to a different course. We have not taught you a model, and nobody expects you to fit one this week.
โIs X significantly higher in group A?โ We have not covered hypothesis testing. You can say a difference looks large or small, and show the counts it rests on, which is an honest thing to say. Do not use the word significant.
โWhat are all the interesting patterns in this data?โ The question is too broad to answer in two days, and you will end up with a pile of figures and no claim!
Step 5: Make one figure
Before you leave, make one. Any of the three seaborn plots from this morning, on any two columns, with hue= on your categorical column if it fits.
It does not have to be good. It just has to exist! A figure is the fastest way to find out that your categorical column has 340 distinct values, or that your numeric column is stored as text, or that the last rows of your file are a footer that pandas read in as data.
What to save
By the end of the session, your team notebook should contain:
A title cell with your teamโs names and the date.
The datasetโs name, its URL, and one sentence saying what one row represents.
The output of .shape, .dtypes and .isnull().sum().
Three candidate questions, in markdown, in complete sentences.
One figure, with axis labels.
A markdown cell naming which of the ten steps you expect to be the hard one for this dataset.
Save it! Tomorrow morning your team starts from this file.
Note for the instructor: if Day 7 has run long
The kickoff session is the designated buffer for Day 7. If 7A, 7B and 7C have run over, or if the class is visibly running out of time, convert the slot to review and questions and move the kickoff to Day 8 morning.
If you do, still take five minutes at the end of today to form the teams, so that tomorrow starts with people sitting together rather than with a negotiation. Forming teams is the part of this session that cannot be compressed, while dataset browsing and question drafting can both happen on Day 8 morning.
Key points
Teams of two or three, one shared notebook.
A workable dataset is one CSV, a few hundred rows, two numeric columns, one categorical column, and you can say what one row is.
Load it before you commit to it. The smoke test is four cells and it can save you days.
Write three questions, not one, following the patterns the workflow answers.
Make one figure today, however rough.
Every one of the ten steps should appear in your final notebook, under its own heading, even if the content of a step is a single sentence.