小さな差が大きく見えた
報告書の棒グラフを見た部長は、晴れの棒が雨の棒よりずっと高いことに気づきます。そこで、晴れの日には自転車を12倍用意しようと考えます。
本当の差は、ずっと小さいものでした。グラフの数は正しかったのです。間違っていたのは軸の始まりで、しかも別の問いに答えていました。
このレッスンのゴール
メモ
問いに答えるグラフを選べる。
キーワード
| ことば | いみ | れい |
|---|---|---|
| 棒グラフ | グループごとに1本の棒を立て、長さで値を表すグラフ | |
| 折れ線グラフ | 点を順に線でつないだグラフで、多くは時間の流れを表す | |
| ヒストグラム | 値がどの範囲にいくつ入るかを数える棒 | |
| ビン | ヒストグラムの1つの範囲 | 250〜299 |
| 散布図 | 1行を1つの点にし、2つの数で置いた図 | |
| 軸 | グラフの辺にそった目盛り |
学生が入力するセルは、このプレビューでは空白です。
問いがグラフを決める
グラフからではなく、問いから始めます。グループを比べるなら棒グラフです。時間による変化を見せるなら折れ線グラフです。
1つの数の散らばりを見るならヒストグラムです。2つの数が一緒に動くかを問うなら散布図です。
円グラフが最善になることは、あまりありません。人は角度より長さをずっと正確に読み取るからです。
例: 4つの問いと4つのグラフ
| 貸出についての問い | グラフ | pandas |
|---|---|---|
| どの天気がいちばん忙しいか | 棒グラフ | means.plot.bar() |
| 1年で台数はどう変わるか | 折れ線グラフ | by_month.plot.line() |
| 暇な日、ふつうの日、忙しい日は何日か | ヒストグラム | hires["hires"].plot.hist() |
| 暖かい日ほど忙しいか | 散布図 | hires.plot.scatter(x="temp_c", y="hires") |
学生が入力するセルは、このプレビューでは空白です。
月ごとの平均の台数
docker exec jupyter python3 steps/months.pyここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
ノートブックに入力: 折れ線グラフ
import pandas as pd
hires = pd.read_csv("hires.csv")
order = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
rain = hires.groupby("month")["rain_mm"].sum().reindex(order)
# 月は順に並ぶので、折れ線にします。
rain.plot.line(marker="o", title="Rain each month (mm)")
ヒストグラムは値をビンに数える
ヒストグラムは、数の並びを同じ幅のビンに切ります。どの値も、ちょうど1つのビンに入ります。棒の高さは、そのビンに入った値の個数です。
幅が50なら、268台の日は250から299のビンに入ります。幅で割って余りを捨てると、268 // 50 は 5 です。0から数えて6番目のビンです。
日をビンに数える
docker exec jupyter python3 steps/hist.pyここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
ビンを手で数える
# 毎日の台数を、幅100の区間に入れます。
days = [35, 95, 130, 145, 260, 268, 305, 470]
width = 100
counts = [0, 0, 0, 0, 0]
for one in days:
place = one // width
counts[place] = counts[place] + 1
print(counts)
# width を 50 に、counts を 0 が10個のリストに変えてください。
# いちばん多い区間はどこになりますか。
ノートブックに入力: 散布図
# 雨の量と台数は、一緒に動くでしょうか。
hires.plot.scatter(x="rain_mm", y="hires", alpha=0.5)
棒グラフは0から始める
読む人は、棒をその長さで判断します。だから棒グラフの値の軸は0から始めます。そうしないと、長さがうそをつきます。
axis.py は、天気ごとの平均の台数を2回描きます。左は0から、右は雨の平均のすぐ下の220から始めます。両方を axis.png に保存するので、JupyterLab のファイル一覧から開いてください。
同じグラフを2通りに描く
docker exec jupyter python3 steps/axis.pyここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
よくある間違い
注意
どのグラフでも、軸はどこから始めてもよいと考えがちです。棒グラフでは長さが値なので、0から始めます。折れ線グラフは大きさより変化を見せるので、目盛りがはっきり書いてあれば、データの近くから始めてもかまいません。
さらに挑戦: 2つのヒストグラム
ノートブックで、晴れの日の台数と雨の日の台数のヒストグラムを、同じビンで重ねて描いてください。ビンは range(0, 550, 50)、両方が見えるように alpha=0.5 にします。
店長が行動に移せる一文を書きましょう。次に、このレッスンのどのグラフなら、同じ問いにグループごとの1つの数で答えられるかを考えます。