このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Python入門】データを可視化する(Matplotlibライブラリ)

【Python入門】データを可視化する(Matplotlibライブラリ)
大規模データの分析や機械学習の前処理では、まず「可視化」を行い、データの分布や傾向を把握しておくことが重要です。単に数値の羅列を眺めるより、グラフや図表で表現したほうがデータの特徴を直感的に捉えやすく、異常値や分布の偏りなどにいち早く気付けます。Pythonには、可視化用のライブラリとしてMatplotlibが広く利用されています。ここでは、Matplotlibを用いてPandasデータフレームの内容を図示する方法を例に紹介します。

プログラムのダウンロード
「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。
1.Matplotlibの概要
1.1.Matplotlibとは
Matplotlib(マットプロットリブ)は、Pythonでデータを可視化するためのライブラリです。折れ線グラフ、棒グラフ、散布図、ヒストグラムなど、さまざまな図を作成できる機能を備えています。機械学習や統計解析で利用するNumPyやPandasとも親和性が高く、データの探索やプレゼンテーション資料の作成に欠かせないツールとなっています。
1.2.インストール方法
Matplotlibは標準ライブラリではないため、Anaconda NavigatorのGUI以外の環境で使用する場合は以下のようにしてインストールを行います。
環境 | インストールコマンド | 備考 |
---|---|---|
CPython(通常のPython) | pip install matplotlib | pip実行時に管理者権限が必要になる場合あり。 |
Anaconda / Miniconda | conda install -y matplotlib | Anacondaには最初から含まれていることも多い。 |
インストール完了後、PythonスクリプトやJupyterLabのセルで次のようにインポートできます。
from matplotlib import pyplot
# または
import matplotlib.pyplot as plt
2.サンプルデータの準備
今回使用するサンプルデータは、「science_scores.csv」という名前のCSVファイルで、合計200行のデータが含まれています。先頭行には列名として「Physics, Biology, Chemistry」が定義されており、以下の200行それぞれに数値スコアが書き込まれています(例として先頭数行を示しますが、実際には200行分あります)。
Physics,Biology,Chemistry
65,70,85
72,63,90
81,59,74
93,88,66
56,78,82
... (200行)
カレントディレクトリに配置し、Pandasのread_csv()
で読み込めるようにしておいてください。
3.Pandas + Matplotlibでヒストグラムを作成する
3.1.pyplotモジュールを使った可視化
Matplotlibには「pyplot」モジュールがあり、これを使うと図の作成や軸ラベルの設定、グラフの保存などが簡単に行えます。ヒストグラムはhist()
関数で描画可能です。
- figure: 新しい図(Figureオブジェクト)を生成
- xlabel / ylabel: 横軸名・縦軸名を設定
- hist: ヒストグラムを描画
- savefig: ファイルへ出力
- show: ウィンドウにグラフを表示
次のコードをJupyterLabのセルに貼り付け、実行してください。
import pandas as pd
from matplotlib import pyplot
def plot_histogram(csv_file="science_scores.csv", column_name="Physics", output_name="hist1.png"):
"""
指定したCSVファイルから列(column_name)を読み込んで、
そのヒストグラムを作成し、PNGファイル(output_name)に保存するサンプル関数。
さらに作成したヒストグラムを画面にも表示する。
"""
# CSVデータをPandasで読み込み
df = pd.read_csv(csv_file, encoding="utf_8")
# Figureを生成(タイトルとサイズを任意で指定可能)
pyplot.figure(column_name, figsize=(6, 4))
# 軸ラベルの設定
pyplot.xlabel("Score")
pyplot.ylabel("Count")
# ヒストグラムを作成
pyplot.hist(df[column_name])
# ファイルに保存
pyplot.savefig(output_name)
# 画面に表示
pyplot.show()
# 実行例: 物理(Physics)のスコアに対するヒストグラムを"hist1.png"で作成
plot_histogram("science_scores.csv", "Physics", "hist1.png")
実行結果

解説
pd.read_csv(csv_file)
: CSVファイルを読み込み、DataFrameを生成。pyplot.figure(column_name, figsize=(6, 4))
: タイトルとサイズ(インチ)を指定して新しい図を準備。pyplot.xlabel("Score"), pyplot.ylabel("Count")
: X軸・Y軸にラベルを設定。pyplot.hist(df[column_name])
: 指定列の値に基づいて度数分布(ヒストグラム)を描画。pyplot.savefig(output_name)
: 作成した図をPNGファイルに保存。pyplot.show()
: 作成した図をGUIウィンドウやJupyterLab上に表示。
3.2.Pandasが提供する簡易hist()メソッドを活用する
PandasのDataFrameにもhist()
メソッドがあり、全列に対するヒストグラムを一気に作ることが可能です。細かいカスタマイズは後から加える必要がありますが、データ全体の把握や一括チェックに便利です。
import pandas as pd
from matplotlib import pyplot
def plot_all_histograms(csv_file="science_scores.csv", output_name="hist2.png"):
"""
指定したCSVファイルのすべての列に対してヒストグラムを描画し、
指定したPNGファイル(output_name)に保存するサンプル関数。
"""
# CSVデータをPandasで読み込み
df = pd.read_csv(csv_file, encoding="utf_8")
# 全列に対してヒストグラムを作成
df.hist()
# ファイルに保存
pyplot.savefig(output_name)
# 画面表示
pyplot.show()
# 実行例: "science_scores.csv"の全列にヒストグラムを作成して"hist2.png"に保存
plot_all_histograms("science_scores.csv", "hist2.png")
実行結果

df.hist()
: 各列が数値型であれば自動的にヒストグラムを生成。- 画面を閉じるには、プロットウィンドウが出ている場合は[Q]キーを押すか、JupyterLabであれば図がJupyterLab上に表示されます。
まとめ
Matplotlibを使うと、ヒストグラムのほかにも折れ線グラフや棒グラフ、散布図など様々な図を作成できます。さらにPandasと組み合わせると、CSVファイルからスコアデータを読み込んで簡単に可視化できるため、機械学習やデータ解析の最初のステップとして非常に便利です。
特にヒストグラムは、データの分布(どの値が多いか、ばらつきの度合いなど)を直感的に把握するのに向いており、クラスタリングや回帰分析、分類タスクなどで「データの偏り」を見抜く際にも大いに役立ちます。
このようにMatplotlibとPandasを組み合わせることで、データ可視化の幅がさらに広がります。後は色やラベル、凡例などを詳細に設定することで、見やすく情報量の多いグラフを作成できますので、ぜひ試してみてください。