Python

Python:可視化(ヒストグラム)

スポンサーリンク

はじめに

ヒストグラムはデータの分布状況を可視化するときに使うグラフとなります。データを見るだけではなかなか把握しにくい、ばらつきを可視化することができます。ヒストグラムは横軸に階級、縦軸に度数をとり、各階級の度数を長方形の柱で表します。ここで、階級とは度数を集計するためにグループ分けした区間のことです。また、度数とは各階級に属するデータの数を表します。

サンプルデータの準備

今回は、ライブラリに用意されたデータセットを利用するのではなく、サンプルデータを作ってみることにしましょう。

# ライブラリのインポート
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(font='IPAexGothic')

# サンプルデータの作成
data1=stats.norm(0,5).rvs(100)
data2=np.concatenate([stats.gamma(5).rvs(50)-1,-1*stats.gamma(5).rvs(50)])

stats.norm は正規分布を作ります。norm(0,5)は、平均0, 標準偏差5の正規分布を指定したことになります。ここで指定した分布からrvsで確率変数を取得しています。通常、norm.rvs(loc=XX, scale=YY, size=ZZ)を指定します。locは平均値、scaleは標準偏差、sizeは個数を表します。今回は、normの中で平均値、標準偏差を指定しているので、rvsの中ではsizeだけを指定しています。これで、平均0, 標準偏差5, のデータを100個作りだしています。

np.concatenateは既存の軸に沿った結合をおこないます。なので、data2は2つのガンマ分布から取り出したデータを結合しています。

statsの分布では、位置パラメータloc, 尺度パラメータscaleを指定するのが基本ですが、gamma分部では形状パラメータを与える必要があります。data2では形状パラメータに5を与えたgamma分布を結合しています。

例) 形状パラメータを変えたときのgamma分布の例

単変量分布

作成したデータでヒストグラムを描いていきましょう。seabornで描く場合は、ヒストグラムも簡単です。distplot関数を使います。

sns.distplot(data1)

棒状で描かれたものがヒストグラムです。ラインで描かれたものは、「確率密度関数」となります。こちらは、defaultで表示されますが、kde=Falseの指定で消すことができます。このとき、norm_hist=Falseをセットで指定すると、バーの表示を確率から度数に切り替えることができます。

sns.distplot(data1,kde=False,norm_hist=False)

二変量分布

sns.joointplot()で二変量の分布をプロットすることもできます。ここでは、作成したサンプルデータdata1, data2のそれぞれがxの値、yの値とみたてて、描いてみます。

sns.jointplot(data1,data2)

プロットの形を変えることもできます。六角形にしてみましょう。

sns.jointplot(data1,data2,kind='hex')

これは、色の濃淡でデータがどこに多く分布しているのかがわかります。

スポンサーリンク

まとめ

いかがでしょうか?seabornはどんなグラフでも(わかってしまえば)簡単に描けますね。データの分布を知る上でヒストグラムは非常に重要です。是非、おさえておきましょう。

コメント

タイトルとURLをコピーしました