データの可視化(data visualization)は、データを視覚的に表現することで、データの特徴やパターンを理解しやすくする手法である。Python では、主に matplotlib や seaborn といったライブラリを用いてデータの可視化を行う。
目的に応じたグラフを選択することで、伝えたい情報をより効果的に相手に伝えることができる。
ここでは、よく使われるグラフをいくつか紹介する。
折れ線グラフ
折れ線グラフ(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()
棒グラフ
棒グラフ(Bar Chart, or Bar Graph)は、棒の高さで数値を表現する。横軸に項目、縦軸に数値をとり、各項目の値を棒で示す。横棒グラフの場合は、縦軸に項目、横軸に数値をとる。棒グラフは、項目ごとの数値を比較するのに適している。
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()
箱ひげ図
箱ひげ図(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()
練習問題
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 を用いて読み込むことができる。