クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

問いに答えるグラフを選ぶ(可視化)

このレッスンのあとで: 問いに答えるグラフを選べる。

50分のレッスンコマンド3件JupyterLab データサイエンスラボ:pandas、Matplotlib、scikit-learn をブラウザーで

小さな差が大きく見えた

報告書の棒グラフを見た部長は、晴れの棒が雨の棒よりずっと高いことに気づきます。そこで、晴れの日には自転車を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

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

ノートブックに入力: 折れ線グラフ

コード: python
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

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

ビンを手で数える

コード: python
# 毎日の台数を、幅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個のリストに変えてください。
# いちばん多い区間はどこになりますか。

ノートブックに入力: 散布図

コード: python
# 雨の量と台数は、一緒に動くでしょうか。
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つの数で答えられるかを考えます。

このラボとソースについて: JupyterLab データサイエンスラボ:pandas、Matplotlib、scikit-learn をブラウザーで

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。