[pandas] 組み込み関数を使ってグラフ描画

Posted on 2019/03/16 in programming , Updated on: 2019/03/30

はじめに

python のデータ可視化ツールとしては、maptlotlib が有名であるが 、 pandas には、maptlotlib から構築されるグラフ描画機能が組み込まれている。 よって最終的に必要なグラフがシンプルである場合や、一旦データを可視化したい場合等には、 この機能を用いることで pandas ライブラリひとつでデータ分析ができる。

この描画機能は Figure 制御と使いやすさのバランスが取れており、非常に使いやすい。また、親ライブラリである matplotlib の plt への引数の多くも利用することができる。

組み込み関数

pandas に組み込まれているプロットタイプは、ほとんどは統計プロットである。また呼び出し方は、下記表のように、df.plot.種類df.plot(kind='種類')の2種類の書き方ができる。
(公式ではdf.plot.種類が推奨のよう)

組み込み関数 グラフ
df.plot.area 面積グラフ
df.plot.barh 横棒グラフ
df.plot.density 複数の密度関数
df.plot.hist ヒストグラム図
df.plot.line 線グラフ
df.plot.scatter 散布図
df.plot.bar 縦棒グラフ
df.plot.box 箱ひげ図
df.plot.hexbin 6角形散布図
df.plot.kde カーネル密度関数
df.plot.pie 円グラフ

各種グラフ描画

まず、ライブラリのインポート(matplotlib.pyplot)も。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

# ggplot スタイルを使う
plt.style.use('ggplot')

データの準備

# 0~1の間でランダムな数字で構成された、12行4列(列名A,B,C,D)の行列
df1 = pd.DataFrame(np.random.rand(12, 4), columns=['A','B','C','D'])

# 正規分布に従う乱数で構成された、1000行4列(列名A,B,C,D)の行列
df2 = pd.DataFrame(np.random.randn(1000, 4), columns=['A','B','C','D'])

df.plot.area() 面積図

df.plot.area()

testpage.png

df.plot.bar() 縦棒グラフ

# 積み上げ棒
df1.plot.bar(stacked=True)

testpage.png

df.plot.density() 密度関数

df1.plot.density()

testpage.png

df.plot.hist() ヒストグラム図

df2['A'].plot.hist(bins=40, edgecolor='white')

testpage.png

df.plot.line() 線グラフ

df2.plot.line(y='A', figsize=(10, 2))

testpage.png

df.plot.scatter() 散布図

df2.plot.scatter(x='A', y='B')

testpage.png

s=100とするとすべてのプロットのサイズは、100になるが、下記のように指定すると それぞれのプロットサイズを別列'D'で定義することも可能。

df2.plot.scatter(x='A', y='B', s=df['D']*100, edgecolor='white')

testpage.png

df.plot.box() 箱ひげ図

df1.plot.box()

testpage.png

df.plot.hexbin() 6角形散布図

df1.plot.hexbin(x='A', y='B', gridsize=20)

testpage.png

df.plot.kde() カーネル密度関数

df1['A'].plot.kde()

testpage.png

df1.plot.kde()df1.plot.density()は同じグラフが表示される。