【データ分析】データを可視化するmatplotlibの基本を解説!

2023-07-12

Pocket

こんにちは、爽です。皆さん、いかがお過ごしでしょうか?

今回はデータ分析でよく用いられるライブラリであるmatplotlibについて確認します。
matplotlibもnumpyとpandasと同様にデータ分析、統計、機械学習、及びディープラーニングなどで用いられる頻度の高い重要なライプラリとなります。この記事では基本を紹介しています。
なお、numpyとpandasの基本については以下の記事でまとめていますのでこちらも合わせてご参考ください。

・numpy

・pandas

■この記事の対象読者
・matplotlibの基本を確認したい方
・データ分析に興味のある方

なお、私はPythonをAnacondaをインストールしてJupyterで実行しています。MacのAnacondaのインストール方法とJupyterの使い方は下記記事にまとめているので良かったらご参考ください。
また、Anacondaをインストールするとインストールの時点でmatplotlibも同梱されるので便利です。

それではどうぞ!

matplotlibとは

matplotlibとはデータ可視化の為のライブラリで、numpyとpandasと同様にデータ分析、統計、機械学習、及びディープラーニングなどの科学計算の場面でよく用いられるライブラリです。具体的にExcelで簡単に作れるような線グラフ、散布図、ヒストグラムなどのチャートを作成することができます。読み方は「マットプロットリブ」です。

numpyやpandasを駆使してデータを計算し、データを表データにまとめたとしても実際にそのデータがどのような分布をしているかを直感的に把握することは難しいですよね。
従って、そのような場合はmatplotlibを使うことでデータをグラフとして描画することでデータに対する理解を深められる為、こちらもnumpyとpandasと同様に非常に重要なライブラリです。

線グラフ

線グラフの描画はplot()メソッドを用いて、plot(x, y)の形式で非常にシンプルに実装できます。
なお、1行目に記載していますが、Jupyterを使用している場合、グラフを描画する為には、
%matplotlib inline
というマジックコマンドが必要なので忘れないように記述しましょう。

#Jupterを使用している場合、こちらのマジックコマンドが必要
%matplotlib inline

import numpy as np
#matplotlibのpyplotをimport
import matplotlib.pyplot as plt

#x軸とy軸を作成
x = np.linspace(-5, 5)
y = 2 * x

#線グラフの描画
plt.plot(x, y)
plt.show()

上記のコードを利用するとこのように簡単に線グラフを描画することができました。
なお、最後の行のshow()メソッドは私のJupyterの環境の場合、記述しないとグラフの上に以下のような記述が出ますが特に問題なくグラフ描画できましたので記述しなくてもいいかもしれませんが、念の為、このブログでは今後も記述するようにします。

散布図

散布図の描画もscatter()メソッドを用いて、scatter(x, y)の形式で非常にシンプルに実装できます。

%matplotlib inline

import numpy as np
import matplotlib.pyplot as plt

#xとyについて0.0以上、1.0未満の乱数の配列を生成
x = np.random.rand(100)
y = np.random.rand(100)

#散布図の描画
plt.scatter(x, y)
plt.show()

棒グラフ

棒グラフの描画はbar()メソッドを用いて、非常にシンプルに実装できます。

%matplotlib inline

import numpy as np
import matplotlib.pyplot as plt

#x軸とy軸を作成
objects = ['a', 'b', 'c', 'd', 'e', 'f']
x = np.arange(len(objects))
y = [1, 2, 3, 4, 5, 6]

#棒グラフを描画
plt.bar(objects, value, alpha=0.5)
#横軸の名前をobjectsに置き換える
plt.xticks(x, objects)
plt.show()

円グラフ

円グラフの描画はpie()メソッドを用いて、非常にシンプルに実装できます。
円グラフはシェアを表すときによく用いられます。

%matplotlib inline

import numpy as np
import matplotlib.pyplot as plt

#ラベルとシェア、及び色を作成
labels = ['Python', 'JavaScript', 'Java', 'SQL']
sizes = [10, 20, 30, 40]
colors = ['red', 'green', 'yellow', 'blue']

#円グラフを描画
plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%'#小数点第一位まで%付きで表示する)
#グラフをきれいに描画する
plt.axis('equal')
plt.show()

ヒストグラム

ヒストグラムとはデータの区間を区切ってそれぞれを集計した値を可視化したグラフです。
ヒストグラムの描画もhist()メソッドを用いて、hist(対象データ)の形式で非常にシンプルに実装できます。

%matplotlib inline

import numpy as np
import matplotlib.pyplot as plt

#正規分布の配列を生成
plt.hist(np.random.randn(1000))
plt.show()

なお、hist()メソッドにbinsパラメータを指定するとデータの区間の数(山の数)を指定できます。
上記はデータの区間の数は10ありますが例えば下記のように20に区切ることもできます。

%matplotlib inline

import numpy as np
import matplotlib.pyplot as plt

#binsを指定
plt.hist(np.random.randn(1000), bins=20)
plt.show()

配列を画像で表示する

matplotlibのimshow()メソッドで配列を画像で表示することが可能です。
下記のサンプルコードでは黒が0、白が15を表しており、その間の数字は黒と白の中間色で表現されています。

%matplotlib inline

import numpy as np
import matplotlib.pyplot as plt

#配列の作成
img = np.arange(16).reshape(4, 4)

#グレースケールで表示
plt.imshow(img, "gray")
#カラーバーの表示
plt.colorbar()
plt.show()

グラフの装飾

グラフのタイトルをつけたり、軸に名前をつけたり、凡例をつけたり、といったことも簡単にできます。
タイトルはtitle()メソッド、ラベルはxlabel()メソッドとylabel()メソッド、凡例はlegend()メソッドで反映、axis()メソッドでxとyをどこまで表示するかの設定ができます。

%matplotlib inline

import numpy as np
import matplotlib.pyplot as plt

#x軸とy軸の作成
x = np.linspace(-100, 100)
y_1 = 1 * x
y_2 = 2 * x
y_3 = 3 * x

#グラフのタイトル
plt.title('Simple Grah')

#軸のラベル
plt.xlabel('x value')
plt.ylabel('x value')

#プロットと凡例設定
plt.plot(x, y_1, label='y1')
plt.plot(x, y_2, label='y2', linestyle='dashed')
plt.plot(x, y_3, label='y3', linestyle='dotted', alpha=0.3)

#凡例の反映
plt.legend()

#軸の表示設定
plt.axis([-10, 10, -20, 20])

plt.show()

参考資料

この記事はUdemyの以下4つの講座を参考に作成しました。

現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル
【データサイエンス×ビジネスコミュニケーション】現役データサイエンティストが教える「伝えて動かすデータ分析」
【キカガク流】人工知能・機械学習 脱ブラックボックス講座 – 初級編 –及び【キカガク流】人工知能・機械学習 脱ブラックボックス講座 – 中級編 –
自然言語処理とチャットボット: AIによる文章生成と会話エンジン開発

現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル

画像に alt 属性が指定されていません。ファイル名: a1ee3d048d6aa860662b6f58c4aa167f-1024x328.png
Udemyより抜粋

当講座はPythonの基礎から応用まで幅広く学べる講座なのでおすすめです。
この講座の講師はとにかくPythonについての知識が豊富ですし、話も適度な速さで聞き取りやすいです。さすがのシリコンバレーです。
また、最後の方に機械学習で使うライブラリについても解説があるので、データサイエンス・AIについても多少知ることができます。

当講座のおすすめポイントを以下にまとめておきます。

当講座のおすすめポイント

シリコンバレーで働いているということもあり、講師のPythonの知識が豊富

話も適度な速さで聞き取りやすい

コードの意味だけでなく、それをどう応用するかまで解説してくれる

【データサイエンス×ビジネスコミュニケーション】現役データサイエンティストが教える「伝えて動かすデータ分析」

Udemyより抜粋

当講座のおすすめポイントを以下にまとめておきます。

当講座のおすすめポイント

Pythonを知らなくても講座の中で学ぶことが可能なので初学者でもOK

データサイエンスの手法だけでなく、それをどのようにビジネスに活かすかまで学べる

この講座の最大の特徴は、データサイエンスを実務でどのように活かすかまで言及されている点です。
他の講座だとデー分析の手法や機械学習の実装方法だけ伝えるものもあるのですが、この講座はデータサイエンスの習得を目的とせず、その先を見据えた講義になっているので、実務での使用イメージが湧きやすいです。

【キカガク流】人工知能・機械学習 脱ブラックボックス講座 – 初級編 –

【キカガク流】人工知能・機械学習 脱ブラックボックス講座 – 中級編 –

Udemyより抜粋
Udemyより抜粋

株式会社キカガクが作成している【キカガク流】人工知能・機械学習 脱ブラックボックス講座 – 初級編 –及び【キカガク流】人工知能・機械学習 脱ブラックボックス講座 – 中級編 –のシリーズもわかりやすいです。こちらも購入済みです。

当講座のおすすめポイント

初球では単回帰を中級では重回帰の原理を数式を用いて丁寧に解説

Pythonを知らなくても講座の中で学ぶことが可能なので初学者でもOK

それぞれの講座の時間が短いので手軽に学べる

脱ブラックボックスと銘打っているだけあって、機械学習の基礎である、回帰の原理を数式を使いながらステップバイステップで丁寧に説明してくれます。もちろん、解説だけでなくて講義の中で実装もします。
上級はまだ出ていないようなのですが、出たとしたらすぐでも買いたいと思えるシリーズです。

自然言語処理とチャットボット: AIによる文章生成と会話エンジン開発

Udemyより抜粋

当講座は講座名の通り、技術の発展がめざましいAIによる文章生成と会話エンジン開発を体験できる講座です。

当講座のおすすめポイント

Pythonを知らなくても講座の中で学ぶことが可能なので初学者でもOK

説明に使用しているマテリアルが綺麗

ホットな自然言語処理を短時間で学べる

この講座の講師である我妻さんは他にもデータサイエンスに関連するたくさんの講座を出しており、いずれの講座もレビュー評価が高いです。話し方が少しマテリアルを棒読みになってしまっている点が惜しいところですが、内容自体は綺麗にまとまっています。内容的に自然言語処理だけでなく、Pythonの基礎と数学の基礎にも触れられているので、データサイエンスそのものに興味がある方にもおすすめです。

なお、Udemyについては以下の記事でまとめていますのでご参考ください。

まとめ

ということで、今回はデータ分析でよく用いられるライブラリであるmatplotlibについて解説しました。
この記事では基本しか紹介できていませんが、データ分析中にデータを可視化し、データの特性を把握することは後続の作業に繋がる重要なステップとなるので、ぜひ使いながら使い方を覚えていきましょう!
では、今回はここまでとさせていただきます。