LEVEL 7 ・ Excel / Lesson 17

棒グラフ・折れ線グラフを描く

部署別の比較は棒グラフ、時間の変化は折れ線グラフ。タイトル・軸・色の付け方も学びます。

目安 20分 ・ インストール不要

このレッスンが終わったら

「plt.bar で棒グラフ、plt.plot で折れ線グラフが描ける。何を横に並べ、何を高さにするかを、渡せばよい」と言える。

STEP 1

できることを見る

数字の表を眺めるより、グラフにしたほうが、一目で違いが分かります。ExcelのグラフをPythonで作ることもできます。

部署別の売上を、棒グラフにしてみましょう。使うのは、matplotlib(マットプロットリブ)という、グラフを描くための道具です。

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_excel("sales.xlsx")
summary = df.groupby("部署")["金額"].sum()

plt.bar(summary.index, summary.values)
plt.title("部署別の売上合計")
plt.show()
STEP 2

動かしてみる

部署別の売上を、棒グラフにするグラフ・pandas・サンプルファイル付き
Ctrl / ⌘ + Enter でも実行

この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。

結果
▶ 実行を押すと、ここに結果が出ます

結果の下に、グラフが表示されましたか。営業が一番高く、総務が一番低いことが、数字を読まなくても、すぐ分かります。

STEP 3

1行ずつ読む

1行ずつ日本語にしてみる
import matplotlib.pyplot as pltグラフを描く道具を使う。呼ぶときは、短く「plt」と呼ぶ
summary = df.groupby("部署")["金額"].sum()部署ごとの、金額の合計を求める(Lesson 16 と同じ)
plt.bar(summary.index, summary.values)棒グラフを描く。横に並べるもの(部署名)と、棒の高さ(合計)を渡す
plt.title("部署別の売上合計")グラフのタイトルを付ける
plt.show()グラフを表示する

日本語にすると

部署ごとの売上の合計を求めて、部署名を横に、合計を高さにして、棒グラフを描き、タイトルを付けて、表示してください。

summary.index は、集計結果の「見出し」(部署名)、summary.values は「中身」(合計の数字)です。**「何を横に並べ、何を高さにするか」**を、plt.bar(横, 高さ) の形で渡すだけです。

STEP 4

1か所だけ変える

① 折れ線グラフにする。 推移(時間の変化)を見るときは、折れ線グラフが向いています。日付ごとの売上を、plt.plot で描きます。(marker="o" は、点の印を付ける指定です)

日ごとの売上を、折れ線グラフにするグラフ・pandas・サンプルファイル付き
Ctrl / ⌘ + Enter でも実行

この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。

結果
▶ 実行を押すと、ここに結果が出ます

plt.xticks(rotation=45) は、横軸の文字を、45度に傾けて、重ならないようにする指定です。

② 軸に名前を付ける。 何の数字か分かるように、横軸・縦軸に名前を付けます。

軸の名前を付けるグラフ・pandas・サンプルファイル付き
Ctrl / ⌘ + Enter でも実行

この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。

結果
▶ 実行を押すと、ここに結果が出ます

③ 色を変える。 color で、棒の色を指定します。

棒の色を変えるグラフ・pandas・サンプルファイル付き
Ctrl / ⌘ + Enter でも実行

この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。

結果
▶ 実行を押すと、ここに結果が出ます

④ 横棒グラフにする。 項目名が長いときは、bar の代わりに barh を使います。

横棒グラフにするグラフ・pandas・サンプルファイル付き
Ctrl / ⌘ + Enter でも実行

この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。

結果
▶ 実行を押すと、ここに結果が出ます

⑤ pandas の機能で、もっと短く描く。 pandas の表には、グラフを描く機能が、最初から付いています。1行で描けます。

pandas の plot で、1行で描くグラフ・pandas・サンプルファイル付き
Ctrl / ⌘ + Enter でも実行

この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。

結果
▶ 実行を押すと、ここに結果が出ます

kind="bar"(棒)、kind="line"(折れ線)、kind="barh"(横棒)のように、種類を文字で選ぶだけです。

STEP 5

自分で書く

グラフは、見た目を、画面で確かめるものです。ここでは、「確認用の行」が、最初から書いてあります。タイトルや種類を指定する行を、書き足してください。

お題① 商品別の売上合計の棒グラフに、タイトル「商品別売上」を付けてください。

お題①:タイトルを付けるグラフ・pandas・サンプルファイル付き
Ctrl / ⌘ + Enter でも実行

この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。

結果
▶ 実行を押すと、ここに結果が出ます
ヒントを見る

plt.title("商品別売上") と書きます。最後の print の行は、タイトルが付いたかを、確かめる行です。

答えの例を見る
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_excel("sales.xlsx")
summary = df.groupby("商品")["金額"].sum()

plt.bar(summary.index, summary.values)
plt.title("商品別売上")

print(plt.gca().get_title())

お題② 担当者別の売上合計の棒グラフを描いてください。5人なので、棒は5本になります。

お題②:担当者別の棒グラフグラフ・pandas・サンプルファイル付き
Ctrl / ⌘ + Enter でも実行

この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。

結果
▶ 実行を押すと、ここに結果が出ます
ヒントを見る

summary = df.groupby("担当")["金額"].sum() で合計を求め、plt.bar(summary.index, summary.values) で描きます。

答えの例を見る
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_excel("sales.xlsx")
summary = df.groupby("担当")["金額"].sum()
plt.bar(summary.index, summary.values)

print(len(plt.gca().patches), "本")
STEP 6

仕事ならどう使う?