Skip to learning content

DATA SCIENCE PYTHON PLAYGROUND

Data Foundations · A little practice goes a long way.

← Visualise lessonsTINY TABLES · REAL PYTHON · YOUR PACE
Make a useful report · V29 · 8 MIN

Exact precomputed bars

Draw numbers that have already been calculated.

Exercises within this concept

  1. FollowFollow the techniqueCurrent exercise
  2. ChangeAdapt a requirement
  3. TransferChoose and combine

Understand the idea

ax.bar draws supplied heights exactly. Calculate the intended mean or total first; the drawing call does not summarize raw records.

Concept sketch: precomputed totals → exact bar heightsTotal (sum)06A9B3Cprecomputed totals → exact bar heights
Illustration · not the exercise output

A small example

For group A values [2, 6], use height 4 for an average or height 8 for a total.

Follow the code

Apply the idea to the supplied table. Read from top to bottom; the final line displays the result.

import matplotlib.pyplot as plt
import seaborn as sns

fig, ax = plt.subplots(figsize=(6, 4))
means = df.groupby("flavour")["price"].mean()
ax.bar(means.index, means.values)
ax.set(title="Candy shop", xlabel="flavour", ylabel="Mean price")
fig.tight_layout()
plt.show()

What each part does

df.groupby("flavour")["price"].mean()
Compute one average price per flavour before drawing bars.
means.index
Use the flavour labels as bar positions.
means.values
Use the already computed averages as bar heights.
ax.bar(means.index, means.values)
Draw those exact heights; bar does not calculate an average for you.
Other choices for later exercises
.sum()
Compute group totals instead when the question asks for totals.

Your inputs

The editable setup on the right creates df. Run executes the setup and your work from top to bottom.

Candy shop · 6 synthetic rows
candyflavourpriceratingshelf
Gummy Bearfruity1.24.1A
Choco Popchocolate2.14.6B
Mint Bitemint1.53.8A
Berry Loopfruity2.84.4B
Cocoa Cubechocolate3.44.9A
Lemon Dropfruity1.84B

Your task · Follow

  1. Using df, calculate mean price by flavour, then draw those exact values as bars.
  2. This compares catalogue prices, not sales revenue.
  3. Chart: title "Candy shop"; x "flavour"; y "Mean price".
Hint

Choose the observations first, then map the requested measurements to the chart.

Reveal solution

One way to do it. Keep any supplied setup in the editor and use this in the Your work section.

import matplotlib.pyplot as plt
import seaborn as sns

fig, ax = plt.subplots(figsize=(6, 4))
means = df.groupby("flavour")["price"].mean()
ax.bar(means.index, means.values)
ax.set(title="Candy shop", xlabel="flavour", ylabel="Mean price")
fig.tight_layout()
plt.show()
Your task · Follow
  1. Using df, calculate mean price by flavour, then draw those exact values as bars.
  2. This compares catalogue prices, not sales revenue.
  3. Chart: title "Candy shop"; x "flavour"; y "Mean price".

Tab: indent · Shift+Tab: outdent · Esc, then Tab: leave editor

Edit Python. Control or Command plus Enter runs it. Tab indents by four spaces. Shift plus Tab outdents. Press Escape, then Tab or Shift plus Tab to leave the editor.

Each run executes all editor code in a fresh Python session. Display charts with plt.show().

Python starts when you open a lesson.

Output

Run your code to see what Python returns.