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

無料レッスン

データからグラフを作る

このレッスンのあとで: 問いに合うグラフを選んで、グループごとの合計から作ることができる。

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

店の壁に貼る1枚のグラフ

レンタル自転車の店長が言います。「いつ人手を増やせばいいか、1枚で分かるようにして。」

365行の表を見せても、誰も読みません。問いに合ったグラフを1枚作れば、一目で答えが伝わります。

このレッスンのゴール

メモ

問いに合うグラフを選んで、グループごとの合計から作ることができる。

キーワード

ことばいみ
棒グラフグループの大きさを、棒の長さで比べるグラフ
折れ線グラフ時間による変化を、線でつないで見せるグラフ
散布図2つの値の関係を、点で見せるグラフ
ヒストグラム値がどのあたりに多いかを、棒で見せるグラフ
軸グラフの横と縦の、目もりのついた線

学生が入力するセルは、このプレビューでは空白です。

問いが決まれば、グラフも決まる

グラフは、先に問いを決めてから選びます。「どの月が忙しい?」はグループの比べなので、棒グラフです。

「日がたつとどう変わる?」は折れ線グラフ、「気温が高いと増える?」は散布図です。「台数はどのくらいが多い?」はヒストグラムが答えます。

例: 問いとグラフの組み合わせ

問いグラフ自転車の店の例
グループを比べたい棒グラフ月ごとの平均の台数
時間の変化を見たい折れ線グラフ1年を通した台数
2つの関係を見たい散布図気温と台数
値の散らばりを見たいヒストグラム1日の台数の分かれ方

学生が入力するセルは、このプレビューでは空白です。

描く前に、グループごとに集計する

棒グラフの1本は、グループ1つの合計や平均です。365行をそのまま描くのではなく、先に集計します。

SQL では GROUP BY、pandas では groupby が同じ仕事をします。下の例は、貸出台数を足して、文字で棒を描きます。

試す: 合計を文字の棒にする

コード: python
# 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つ立てましょう。たとえば「雨の日は、土日でも台数が減る?」です。

問いに合うグラフを選び、題と軸の名前を付けてください。ノートブックはダウンロードして提出できます。

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

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