店の壁に貼る1枚のグラフ
レンタル自転車の店長が言います。「いつ人手を増やせばいいか、1枚で分かるようにして。」
365行の表を見せても、誰も読みません。問いに合ったグラフを1枚作れば、一目で答えが伝わります。
このレッスンのゴール
メモ
問いに合うグラフを選んで、グループごとの合計から作ることができる。
キーワード
| ことば | いみ |
|---|---|
| 棒グラフ | グループの大きさを、棒の長さで比べるグラフ |
| 折れ線グラフ | 時間による変化を、線でつないで見せるグラフ |
| 散布図 | 2つの値の関係を、点で見せるグラフ |
| ヒストグラム | 値がどのあたりに多いかを、棒で見せるグラフ |
| 軸 | グラフの横と縦の、目もりのついた線 |
学生が入力するセルは、このプレビューでは空白です。
問いが決まれば、グラフも決まる
グラフは、先に問いを決めてから選びます。「どの月が忙しい?」はグループの比べなので、棒グラフです。
「日がたつとどう変わる?」は折れ線グラフ、「気温が高いと増える?」は散布図です。「台数はどのくらいが多い?」はヒストグラムが答えます。
例: 問いとグラフの組み合わせ
| 問い | グラフ | 自転車の店の例 |
|---|---|---|
| グループを比べたい | 棒グラフ | 月ごとの平均の台数 |
| 時間の変化を見たい | 折れ線グラフ | 1年を通した台数 |
| 2つの関係を見たい | 散布図 | 気温と台数 |
| 値の散らばりを見たい | ヒストグラム | 1日の台数の分かれ方 |
学生が入力するセルは、このプレビューでは空白です。
描く前に、グループごとに集計する
棒グラフの1本は、グループ1つの合計や平均です。365行をそのまま描くのではなく、先に集計します。
SQL では GROUP BY、pandas では groupby が同じ仕事をします。下の例は、貸出台数を足して、文字で棒を描きます。
試す: 合計を文字の棒にする
# 1日ごとの貸出台数を、平日か週末かでまとめます。
rows = [("平日", 210), ("週末", 330), ("平日", 190), ("週末", 310)]
totals = {}
for row in rows:
group = row[0]
if group not in totals:
totals[group] = 0
totals[group] = totals[group] + row[1]
# 100台を # 1つにして、文字の棒グラフにします。
for group in totals:
print(group, "#" * (totals[group] // 100), totals[group])
# 100 を 50 に変えて、棒がどう変わるか見ましょう。
平日と週末の台数を比べる
docker exec jupyter python3 steps/weekend.pyここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
月ごとの平均の台数
docker exec jupyter python3 steps/months.pyここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
縦の軸は0から始める
棒グラフでは、棒の長さが大きさを表します。縦の軸を途中から始めると、差が実際より大きく見えてしまいます。
下の Run は、同じデータを2つの軸で描き、見かけの差を数えて表示します。
同じデータを2つの軸で描く
docker exec jupyter python3 steps/axis.pyここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
よくある間違い
注意
目立つグラフのほうが伝わると考えて、縦の軸を途中から始めがちです。差が何倍にも見えて、見た人をだますことになります。棒グラフの軸は0から始め、題と軸の名前を必ず書きます。
ヒストグラムは分かれ方を見せる
1日の台数を50台ずつの区間に分け、各区間に何日あるかを数えると、ヒストグラムになります。
どのあたりの台数が多いかが、1枚で分かります。区間の幅を変えると、形も変わります。
台数の分かれ方を数える
docker exec jupyter python3 steps/hist.pyここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
さらに挑戦: 自分の問いでグラフ
JupyterLab のノートブックで、hires.csv に自分の問いを1つ立てましょう。たとえば「雨の日は、土日でも台数が減る?」です。
問いに合うグラフを選び、題と軸の名前を付けてください。ノートブックはダウンロードして提出できます。