概要
今回はpandasを利用したデータの可視化方法について紹介します。pandasにはplot()
という関数が用意されております。plot()
は内部的にpythonのグラフ描画ライブラリMatplotlib
を利用しており、より簡単にpandasのDataFrameを可視化しやすくしたものと理解してください。
グラフの種類
plot()
で描画できるグラフには以下のような様々な種類があります。
- 折れ線グラフ
- 棒グラフ
- ヒストグラム
- 箱ひげ図
- 散布図 など
今回は頻出の折れ線グラフ、棒グラフ、ヒストグラムの可視化方法を紹介します。
対象データ
今回は機械学習やデータ分析を学ぶ際によく取り上げられるirisデータセットを利用します。irisデータセットはアヤメの花の情報と種類からなるデータでscikit-learn
から簡単に読み込むことができます。
データの説明
カラム名 | 説明 |
---|---|
sepal length | ガクの長さ |
sepal width | ガクの幅 |
petal length | 花弁の長さ |
petal width | 花弁の幅 |
target | 花の種類 |
※target: 0: setosa
, 1: versicolor
, 2: virginica
データの読み込み
import pandas as pd
from sklearn.datasets import load_iris
iris = load_iris()
df_iris = pd.DataFrame(iris.data, columns=iris.feature_names)
df_iris['target'] = iris.target
df_iris.head()
折れ線グラフの描画
折れ線グラフを描画するにはdf_iris.plot()
を利用します。引数のfigsize
は省略可能です、figsize
にはtuple型で(幅, 高さ)
を指定します。(単位はdpi)最後にplt.show()
を実行してプロットしたグラフを表示します。
import matplotlib.pyplot as plt
df_iris.plot(figsize=(10,5))
plt.show()

引数にsubplots=True
を指定することで各列が別々のサブプロットにプロットされ表示されます。またlegend=False
を指定すると凡例を非表示とすることができます。
df_iris.plot(legend=False, subplots=True)
plt.show()

主要な引数
- y: y軸の変数指定
- x: x軸の変数指定
- figsize: サイズ(tuple型で指定)
- subplots: サブプロットをするかどうか(True もしくはFalse)
- layout: サブプロットの行数、列数の指定
- sharex: x軸の範囲の共有可否(True もしくはFalse)
- sharey: y軸の範囲の共有可否(True もしくはFalse)
- title: グラフタイトル
- grid: グリッドの有無(True もしくはFalse)
- colormap: 色(色の名前もしくはカラーコードを指定)
- legend: 凡例の有無(True もしくはFalse)
- alpha: 透過率(0〜1で1が濃く、0が薄い)
公式ドキュメント: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.plot.html
ヒストグラムの描画
ヒストグラムを利用することでデータの頻度や分布を確認できます。ヒストグラムを表示するにはhist()
を利用します。tight_layout()
を利用するとグラフの重なりがないようにプロットしてくれます。
df_iris.hist(figsize=(10, 10))
plt.tight_layout()
plt.show()

主要な引数
- ax: 複数のデータフレームから生成したヒストグラムを重ねて作画する
- by: ラベルを元にヒストグラムを作成する
- grid: グリッドの有無(True もしくはFalse)
- xlabelsize: x軸ラベルの文字サイズ
- xrot: x軸ラベルの傾き具合(xrot=90は、時計回りに90度回転したxラベルを表示します)
- ylabelsize: y軸ラベルの文字サイズ
- yrot: y軸ラベルの傾き具合(yrot=90は、時計回りに90度回転したyラベルを表示します)
- sharex: x軸の範囲の共有可否(True もしくはFalse)
- sharey: y軸の範囲の共有可否(True もしくはFalse)
- figsize: グラフのサイズ(tuple型で指定)
- bins: 基数の数(デフォルトは10)
- layout: 複数のヒストグラムのレイアウトを指定
- edgecolor: 枠線の色(色の名前もしくはカラーコードを指定)
公式ドキュメント: https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.hist.html
棒グラフの描画
続いて棒グラフの描画をおこないます。棒グラフの描画にはbar()
を利用します。以下の例ではtragetごとのsepal length (cm)
の平均値を表示しています。
mean = df_iris.groupby('target')['sepal length (cm)'].mean()
mean.plot.bar()
plt.show()

公式ドキュメント: https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.plot.bar.html
まとめ
今回はpandasにおけるデータの可視化方法についてご紹介しました。折れ線グラフはplot()
、ヒストグラムはhist()
、棒グラフはbar()
を利用します。各関数には様々なパラメータが用意されているので繰り返し試して慣れるようにしましょう。