11  可視化

データの可視化(data visualization)は、データを視覚的に表現することで、データの特徴やパターンを理解しやすくする手法である。Python では、主に matplotlibseaborn といったライブラリを用いてデータの可視化を行う。

目的に応じたグラフを選択することで、伝えたい情報をより効果的に相手に伝えることができる。

ここでは、よく使われるグラフをいくつか紹介する。

11.1 折れ線グラフ

折れ線グラフ(Line Chart, or Line Graph)は、時系列データを表現するのに適している。横軸に時間、縦軸に数値をとり、各データポイントを直線で結ぶ。データの変化を視覚的に把握しやすく、傾向を示すのに適している。

以下は,日本の平均寿命を示す表である。

年度
2005年 78.56 85.52
2010年 79.55 86.3
2015年 80.75 86.99
2018年 81.25 87.32
2019年 81.41 87.45
import matplotlib.pyplot as plt
import numpy as np

years = [2005, 2010, 2015, 2018, 2019]
male = [78.56, 79.55, 80.75, 81.25, 81.41]
female = [85.52, 86.3, 86.99, 87.32, 87.45]

plt.plot(years, male, marker="o", label="Male")
plt.plot(years, female, marker="o", label="Female")
plt.xlabel("Year")
plt.ylabel("Life Expectancy")
plt.title("Life Expectancy in Japan")
plt.legend()
plt.show()

11.2 棒グラフ

棒グラフ(Bar Chart, or Bar Graph)は、棒の高さで数値を表現する。横軸に項目、縦軸に数値をとり、各項目の値を棒で示す。横棒グラフの場合は、縦軸に項目、横軸に数値をとる。棒グラフは、項目ごとの数値を比較するのに適している。

商品 売上
A 30
B 80
C 45
D 60
import matplotlib.pyplot as plt

items = ["A", "B", "C", "D"]
sales = [30, 80, 45, 60]

plt.bar(items, sales, color="skyblue")
plt.xlabel("Items")
plt.ylabel("Sales")
plt.title("Sales by Item")
plt.show()

11.3 箱ひげ図

箱ひげ図(Box Plot)は、データの分布を視覚的に示すのに適している。箱ひげ図は、下記の統計量をグラフで示すことができる。

  • 最小値
  • 第1四分位数 (Q1)
  • 中央値 (Median)
  • 第3四分位数 (Q3)
  • 最大値
import matplotlib.pyplot as plt
import numpy as np

peach_weights = np.random.normal(130, 10, size=100)
orange_weights = np.random.normal(125, 20, size=100)
tomato_weights = np.random.normal(120, 30, size=100)

data = [peach_weights, orange_weights, tomato_weights]
labels = ["Peach", "Orange", "Tomato"]

plt.boxplot(data, tick_labels=labels)
plt.ylabel("Weight (g)")
plt.title("Box Plot of Fruit Weights")
plt.grid()
plt.show()

11.4 練習問題

Exercise 11.1 以下のデータを用いて、折れ線グラフを作成せよ。

import matplotlib.pyplot as plt

years = [2010, 2011, 2012, 2013, 2014, 2015]
sales_A = [50, 55, 60, 65, 70, 75]
sales_B = [30, 35, 40, 45, 50, 55]
sales_C = [20, 25, 30, 35, 40, 45]

# ここにコードを記述する

Exercise 11.2 以下のデータを用いて、棒グラフを作成せよ。

日本FP協会 小学生『将来なりたい職業』ランキングより男子児童のデータは以下の通りである。

職業 票数
サッカー選手・監督など 70
野球選手・監督など 68
医師 33
ユーチューバー 28
教師 23
バスケットボール選手・コーチ 22
会社員・事務員 22
ゲーム制作関連 17
建築士 14
鉄道の運転士・鉄道関連 14
import matplotlib.pyplot as plt

jobs = [
    "Soccer",
    "Baseball",
    "Doctor",
    "YouTuber",
    "Teacher",
    "Basketball",
    "Office Worker",
    "Game Developer",
    "Architect",
    "Train Operator",
]
votes = [70, 68, 33, 28, 23, 22, 22, 17, 14, 14]

# ここにコードを記述する

Exercise 11.3 以下のデータを用いて、箱ひげ図を作成せよ。

A地点、B地点、C地点の1LDKの家賃をそれぞれ100件ずつランダムに生成したデータは以下の通りである。

import numpy as np
import matplotlib.pyplot as plt

location_A = np.random.normal(10, 2, size=100)
location_B = np.random.normal(12, 3, size=100)
location_C = np.random.normal(15, 5, size=100)

data = [location_A, location_B, location_C]
labels = ["Location A", "Location B", "Location C"]

# ここにコードを記述する

Exercise 11.4 興味のあるデータセットを見つけ、そのデータを用いて適切なグラフを作成し,そのグラフから得られる知見を述べよ。

Excel や csv ファイルなどは,Pandas を用いて読み込むことができる。