2. データ可視化 (1)¶
第 2 回では Python のライブラリ Matplotlib を用いたデータ可視化について学びます。
2.1 データ可視化の重要性¶
データ可視化は、複雑なデータを直感的に理解するために重要なプロセスです。文字や数値だけで表現されたデータは、そのままでは意味を捉えにくいことがありますが、グラフやチャートを用いて適切に可視化することにより、データの傾向やパターンを迅速に把握することが可能となります。さらには、高精度な分析や、意思決定の効果的なサポートにも繋がります。
2.1.1 Python によるデータ可視化¶
Python には、データ可視化を行うためなツールがさまざま提供されています。特に、オープンソースのライブラリである Matplotlib や Seaborn は、柔軟で詳細なカスタマイズが可能なグラフ作成を強力にサポートしてくれます。これらのライブラリを使用することで、簡単な散布図から複雑なヒートマップや 3D プロットまで、多種多様な可視化を容易に実現できます。
今回学ぶ Matplotlib は、Python で最も広く使われている定番の可視化ライブラリです。細かいカスタマイズが自由自在にできる反面、最初は少し面倒に感じるところもあるかもしれませんが、Python によるデータ可視化を学ぶうえで欠かせません。
ライブラリのインストールについて
通常、このような可視化ライブラリは pip コマンドでインストールする必要がありますが、CHIKUWA Editor には予めインストール済みですので、特別な操作は不要です。外部の開発環境を利用する場合は、必要に応じて各自でインストールしてください。
2.2 Matplotlib の基本¶
2.2.1 Matplotlib のインポート¶
Matplotlib による可視化は、pyplot というサブモジュールを通して行われます。インポートは以下のようにして行います。ソースコードの冒頭で一度だけ書くようにしましょう。
以下で紹介するコードは、matplotlib.pyplot モジュールがインポートされ、plt という省略表記で利用できる状態であることを前提としています。
2.3 基本的なグラフの描画¶
2.3.1 折れ線グラフ¶
データをプロットして折れ線グラフを表示するには、以下のように pyplot.plot() 関数と pyplot.show() 関数を用います。
# x の値(横軸)
x = [0, 1, 2, 3, 4]
# y の値(縦軸)
y = [0, 1, 4, 9, 16]
# データをプロット
plt.plot(x, y)
# グラフの表示
plt.show()
以下のように 1 行に収めることもできます。
plt.show() の省略について
本来の Python では、plt.plot() 関数のあとに plt.show() 関数を用いてグラフを表示する必要があります。しかし、Google Colab は plot() を見つけると、「グラフを出力したいんだ」と解釈し、裏で自動的に show() 相当のことをしてくれるため、記述を省略することができます。
2.3.2 棒グラフ¶
棒グラフを表示するには、pyplot.bar() 関数を用います。
横向きの棒グラフを表示する場合は、pyplot.barh() 関数を用います。
2.3.3 散布図¶
散布図を表示するには、pyplot.scatter() 関数を用います。
2.3.4 円グラフ¶
円グラフを表示するには、pyplot.pie() 関数を用います。各要素にラベルをつける場合は、以下のように labels オプションを指定します。
デフォルトでは上の図のように、時計の 3 時の位置から反時計回りに円グラフが描かれます。これを、時計の 12 時の位置から時計回りに描きたい場合は、以下のように startangle オプションを 90 に、counterclock オプションを False に指定します。
2.3.5 ヒストグラム¶
ヒストグラムを表示するには、pyplot.hist() 関数を用います。ヒストグラムではデータの他に、区間(ビン)の数(bins)やビンの色(color, edgecolor)を指定することができます。
import numpy as np
import matplotlib.pyplot as plt
# 標準正規分布のデータを 300 個生成
data = np.random.randn(300)
# ヒストグラムを描画
plt.hist(
data,
bins=20,
color="skyblue",
edgecolor="black"
)
plt.xlabel("Value")
plt.ylabel("Frequency")
plt.show()
2.3.6 グラフの基本要素¶
グラフの基本要素として、次のものがあります。
それぞれ以下のようにして使うことができます。
plt.plot(
[1, 2, 3], [1, 4, 9],
label="Sugoi Sen" # 凡例のラベル
)
plt.title("Kakkoii Graph") # グラフタイトル
plt.xlabel("Yoko Label") # 横軸ラベル
plt.ylabel("Tate Label") # 縦軸ラベル
plt.grid(True) # グリッド線の表示
plt.legend() # 凡例の表示
2.3.7 日本語フォントの利用¶
Matplotlib はデフォルトで日本語フォントに対応していないため、グラフのタイトルや軸ラベルなどに日本語を使うと、文字化け(「□□□」のような表示)が発生することがあります。これを解消する最も手軽な方法は、japanize-matplotlib というライブラリを利用することです。
次に、プログラムの冒頭でこのライブラリをインポートします:
これで、Matplotlib のグラフで日本語が正しく表示されるようになります。以下は使用例です。
import matplotlib.pyplot as plt
import japanize_matplotlib
# 日本語を含むグラフの作成
plt.plot([1, 2, 3], [1, 4, 9], label="すごい線")
plt.title("かっこいいグラフ")
plt.xlabel("横ラベル")
plt.ylabel("縦ラベル")
plt.grid(True)
plt.legend()
plt.show()
CHIKUWA Editor における日本語対応
CHIKUWA Editor では japanize_matplotlib が予め組み込まれているため、特に何も書かなくても日本語をそのまま使うことができます。Google Colab やその他の環境を利用する場合は、上記のインストールおよび import の対応が必要です。
好みのフォントを使いたい場合¶
japanize_matplotlib を使わずに、好みのフォントを指定して日本語を表示することもできます。その場合は、お使いの環境にインストール済みのフォント名を確認したうえで、rcParams["font.family"] にそのフォント名を指定します。たとえば、Windows 環境であれば Meiryo などが利用可能です。
2.4 NumPy の関数¶
データ可視化の練習をするうえで知っておくと便利な NumPy の関数をいくつか紹介します。必要に応じて NumPy 公式 のドキュメントを参照するようにしてください。
2.4.1 データ生成系¶
np.linspace(start, stop, num): 指定範囲内で等間隔な値の配列を生成np.arange(start, stop, step): 指定範囲内でステップ幅を持つ配列を生成np.random.rand(): 一様分布の乱数を生成np.random.randn(): 標準正規分布の乱数を生成np.random.normal(): 正規分布の乱数を生成np.random.seed(): 乱数のシード値を設定(再現性のある乱数を生成したい場合)np.zeros(): 0 で満たされた配列を作成np.ones(): 1 で満たされた配列を作成
2.4.2 数学・統計系¶
np.sin(),np.cos(),np.exp():さまざまな数学関数np.mean(),np.median(),np.std():基本統計量の計算np.min(),np.max():最小値・最大値の取得np.pi:円周率 π
演習¶
演習 2-1
Matplotlib を使って月別売上データの折れ線グラフを描画してください。








