185
204

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Python でデータ可視化 - "Facet"で属性別グラフを一気に描く方法が便利すぎる

Last updated at Posted at 2015-10-14

#Pythonでのグラフ描画

Pythonチャートを描く場合の定番は「matplotlib」ですが、その見た目のやや野暮ったい感じと、
表記法のややこしさが指摘されています。

そこで、この記事ではMatplotlibの機能をより美しく、またより簡単に実現するためのラッパー的存在である、「Seaborn」の使い方を取り上げます。
Seabornについてと、初歩的な使い方については下記リンクをご覧ください。

◆pythonで美しいグラフ描画 -seabornを使えばデータ分析と可視化が捗る その1
http://qiita.com/hik0107/items/3dc541158fceb3156ee0

#たくさんのグラフを一気に書く

本記事ではデータから属性の異なる複数のグラフを一気に描く方法について解説します。
例えば下記にようなイメージです。
『Walk』という属性ごとに x-step, y-positionの関係性を一気にグラフ化しています。

image

参考)
http://stanford.edu/~mwaskom/software/seaborn/examples/many_facets.html

わりとデータ分析の実務でも使いたいことが多く、かなり便利なテクニックです。
・『顧客セグメント』ごとの違いを見たい
・『事業部』ごとの売上推移を見たい
・『地域』ごとの顧客動向の変化を見たい

などなど、活用の場面はいくらでも考えられます。

#『Facet』
このように属性ごとに一気にグラフ化を行う手法は『Facet』と呼ばれます。
seabornでも、"Facetgrid"という名前の関数として実装されていますし、
RやPythonの著名なグラフ描画パッケージ『ggplot』にも『Facet』という機能があります。

#やり方

ではやり方を説明していきます。
必要な下記のライブラリをインポートしておきます

prepare.py
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np

データを用意します。
seabornにはいくつかのデータセットがデフォルトでバンドルされているのでそれを使っていきましょう。
今回は『flights』というデータを使ってみます

data.py
df_flights = sns.load_dataset('flights')
df_flights.head(5)

headでみてみると、yearとmonthでひたすら縦に伸びたデータであることがわかります。
また、数値としては乗客数の推移が見れるデータであることが見て取れます。

data.py
	year	month	    passengers
0	1949	January	    112
1	1949	February    118
2	1949	March	    132
3	1949	April	    129
4	1949	May         121

なお、同じデータを使ったヒートマップ分析もあります。
http://qiita.com/hik0107/items/67ad4cfbc9e84032fc6b

次に、下記のようにして描画を実行します。

draw.py
grid = sns.FacetGrid(df_flights, col="year", hue="year", col_wrap=4, size=5)
grid.map(sns.pointplot, 'month', 'passengers')

sns.FacetGridで、どのような分割でいくつのグラフを描くかをまず定義します。
今回は df_flightsというデータの 'year'という属性ごとにグラフを描くと宣言しています。(col='year' の部分)

yearは12年分(12種類)で、col_wrap=4 によって、4x3 マスで描画されます。
hue='year' は色をオシャレにするためのオプションです。無くても問題ありません。

実行結果は以下のようになります。

年々乗客数が増えているのと、徐々に7~8月くらいのピークシーズンが顕在化してきているのが
見てわかります。

image

#こちらの記事も
pythonで美しいグラフ描画 -seabornを使えばデータ分析と可視化が捗る その1
http://qiita.com/hik0107/items/3dc541158fceb3156ee0

pythonで美しいグラフ描画 -seabornを使えばデータ分析と可視化が捗る その2
http://qiita.com/hik0107/items/7233ca334b2a5e1ca924

データサイエンティストに興味があるならまずこの辺りを見ておきな、って文献・動画のまとめ
http://qiita.com/hik0107/items/ef5e044d2f47940ba712

185
204
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
185
204

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?