Unit 5 · Data · Lesson 5.11 · Lessons 5.11–5.12 · Mini-Project

Mini-Project 4: Data Story

Two days. One page. One question, one computed answer, one chart — and, worth the most, an honest paragraph on what your data does not prove. Anyone can find a number. This project grades knowing what the number is allowed to mean.

Big Idea 2 — DataCED 2.3, 2.4 · Mini-Project 4 · 20 pts

Before this lesson — read on Runestone

Optional warm-up if you finish early: more questions answered from one dataset. Enrolled in our Runestone course? Open it from there so your progress counts.

1

The Task

Ask a dataset one question. Answer it honestly. Your deliverable is a one-page data story: the question, what you did to the data, the answer, one chart, how many rows you actually used — and the limits paragraph, which is worth more than the code and the chart combined.
DayTarget by the bell
Day 1 (5.11)Question approved in the first 15 minutes. Data loaded. Cleaning rules written. No chart yet.
Day 2 (5.12)Compute, chart, and protect the last 25 minutes for the limits paragraph.
2

Pick a Dataset

OptionGood for
club-signups.csvSafe choice. You know it from Labs 5.5 and 5.8 — go deeper rather than starting over.
Your Mini-Project 3 outputYour Unit 4 simulation produced trial results. That’s a dataset you generated yourself.
A provided public datasetIn the class folder. Pre-vetted, real, and messier than anything so far.
Your own findNeeds approval on Day 1. A CSV, under ~5,000 rows, and no personal information about real, identifiable people.
Name the columns your question needs — before you write code. “Does screen time hurt grades?” dies instantly on a dataset with no grades column. If you can’t name the columns, the question isn’t ready.

Answerable

“Which club has the longest average commute?”
“Does club participation vary by city?”
“In my simulation, how often did the line exceed 10 people?”

Not answerable from the data

“Are students happier in sports clubs?” (no happiness column)
“Why do some students join two clubs?” (data shows what, never why)
3

Requirements — all four

  1. Load and clean. State your cleaning rules specifically, as in Lab 5.8. “Removed rows where the value was 999 because that’s a placeholder” beats “cleaned the data.”
  2. A procedure with a parameter computes your answer — average_by(rows, column), count_where(rows, field, value). Call it at least twice with different arguments.
  3. One chart that supports your answer, with a y-axis starting at zero unless you explain why not.
  4. The limits paragraph. Most points live here.
Scope check: one question answered well beats four questions answered thinly. You have two days.
4

The Model

A procedure with a parameter, called twice. The parameter has to change what the procedure does — a parameter the procedure ignores earns nothing.

Python

def average_where(rows, field, value, measure):
    total = 0
    count = 0
    for row in rows:
        if row[field] == value:
            total = total + float(row[measure])
            count = count + 1
    return total / count
 
print(average_where(rows, "club", "Soccer", "commute_min"))
print(average_where(rows, "club", "Debate", "commute_min"))

AP Pseudocode

PROCEDURE averageWhere(cats, nums, value)
{ total ← 0
  count ← 0
  i ← 1
  REPEAT LENGTH(cats) TIMES
  { IF (cats[i] = value)
    { total ← total + nums[i]
      count ← count + 1 }
    i ← i + 1 }
  RETURN(total / count) }
 
DISPLAY(averageWhere(clubs, mins, "Soccer"))
DISPLAY(averageWhere(clubs, mins, "Debate"))

Hover or tap a line to light its twin. A list, a procedure with a parameter, selection, and iteration: this is the Create PT checklist, again. (If a group might have zero rows, guard the division.)

5

Try It — Weak or Strong?

Seven sentences from limits paragraphs. S = strong (names something specific the data can’t show, or who’s missing) · W = weak (vague, or just restates the finding).

6

The Writing — graded hardest

The limits paragraph is worth 8 of 20 points. Answer all four:

  1. What does your answer NOT prove? Name a conclusion someone might jump to that your data can’t support.
  2. What’s missing from the dataset? A column that isn’t there and would change your interpretation.
  3. Who or what is not represented? Whose rows are absent, or which situations never made it into the data?
  4. If someone made a real decision from your chart, how could it go wrong?

Weak

“My data might not be perfectly accurate and more research is needed.”

Strong (a different dataset, so you can’t copy it)

“I found 9th graders checked out 3.1 library books a month and seniors 1.4. This doesn’t show students read less as they get older — it’s one year, so I’m comparing different people, not the same people over time. The data has no column for e-books or a public-library card, either of which could explain the gap. Fourteen students left the question blank; if they’re the lightest readers, my numbers are too high. If the school cut the seniors’ library period because of my chart, it would be acting on a gap I can’t explain.”
“More research is needed” earns zero. So does restating your finding. Every sentence in the limits paragraph has to name something specific.
7

How the 20 Points Split

CriteriaPts
Question is clear, specific, and answerable from the dataset2
Cleaning rules stated specifically and applied consistently3
Procedure with a parameter computes the answer; called 2+ times3
Answer is correct and stated in a sentence, not just a number2
Chart suits the question; axis honest or justified2
Row accounting complete (started / used / dropped)2
Limits paragraph: names a conclusion the data does NOT support3
Limits paragraph: identifies missing data or who isn’t represented3
Total20
8

If You’re Stuck — and If You’re Done

Question rejected? — list the columns. Pick two. Ask “does X differ by Y?” That’s a question.
Code crashes on a value? — that’s a cleaning rule you haven’t written yet. Write it, apply it, record it (5.6).
Parameter feels decorative? — call the procedure with two different arguments. If both calls print the same thing, it is decorative.
Done early? — find a second variable and test whether your relationship still holds within each group. Then add a sentence to your limits paragraph about what you found.
9

Connections

Came from Mini-Project 3 — the abstraction paragraph — what your model left out. Here, the data left things out and you didn’t get to choose.
Came from 5.6–5.10 — cleaning rules, filter + group, one honest chart, correlation, and who’s missing — all in one page.
Next in 5.13 — rebuild the map and review for the test.
Returns in Unit 8 — question 3 of the limits paragraph is algorithmic bias, minus the vocabulary.
← 5.10 Bias in Data, and What’s Missing