Help us understand the problem. What is going on with this article?

pythonで美しいグラフ描画 -seabornを使えばデータ分析と可視化が捗る その2

More than 3 years have passed since last update.

Pythonでのグラフ描画

Pythonチャートを描く場合の定番は「matplotlib」ですが、その見た目のやや野暮ったい感じと、表記法のややこしさが指摘されています。
そこで、この記事ではMatplotlibの機能をより美しく、またより簡単に実現するためのラッパー的存在である、「Seaborn」の使い方を取り上げます。

詳しくは下記リンクをご覧ください。
本記事では下記記事でのSeaborn、及びiris,tip,titanicのデータがインポートされている前提で進めます。

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

分布プロット

ここではtipデータを使ってみます。
曜日ごとに、お客さんの会計(total_bill)がどう分布しているかを見てみましょう。
stripplotというメソッドを使います。

stripplot.py
sns.stripplot(x="day", y="total_bill", data=tips)

stripplot.png

同じ食事でも、朝食と夕食では大分金額が違いそうなので、前回も使った"hue"を使って
LunchとDinnerを分けて見てみましょう。

stripplot.py
sns.stripplot(x="day", y="total_bill", data=tips, hue='time')

stripplot2.png

この店は土日にはランチをやっていないようですね。
オフィス街の飲食店と何でしょうか?..

箱ひげプロット

boxplotというメソッドを使います。

stripplot.py
sns.boxplot(x="size", y="tip", data=tips.sort('size'))

boxplot.png

ちょっとここではグラフのパレットの色を変更してみました。
やりかたはこんな感じです

stripplot.py
flatui = ["#9b59b6", "#3498db", "#95a5a6", "#e74c3c", "#34495e", "#2ecc71"]

sns.palplot(sns.color_palette(flatui))
sns.set_palette(flatui)

color.png

詳しくはこちらをご覧ください。
http://stanford.edu/~mwaskom/software/seaborn/tutorial/color_palettes.html

棒グラフ

ここではtitanicのデータを使ってやってみます。
グラフの描画にはboxplotというメソッドを使います。

barplot.py
sns.barplot(x='sex', y='survived', data=titanic, hue='class')

x軸に性別、y軸には survived つまり生存者か死者かが1と0で入っているデータ列を選択しています。
この場合、例えば性別=maleのレコードが沢山存在するので、Y軸に使われる数字は各レコードの平均値になります。
そして、全レコードの値を表現するために、平均値からのエラーバーが付与されます。

このあたりはちょっと注意して使う必要があるかもしれません。

barplot.png

もし、平均ではなくSurvivedの合計値が欲しい場合は、一旦Pandasで集計してやってからグラフ化するのがベストでしょうか。もしかしたら他にもやり方があるかもしれません。

barplot2.py
titanic_grpby = titanic.groupby( ['sex', 'class'])
titanic_data_for_graph = titanic_grpby['survived'].aggregate(sum).reset_index()

sns.barplot(x='sex', y='survived', hue= 'class', data=titanic_data_for_graph)

boxplot2.png

棒グラフ(カウント)

Y軸の数値を、X軸に該当するデータのカウントにしたいときはCountplotをつかます。
ヒストグラムと同様に、x軸だけ定義すればOKです。

ちなみにグラフの色は、paletteというオプションでも指定可能です。

countplot.py
sns.countplot(x='sex', hue='embarked', data=titanic, palette='Greens_d')

countplot.png

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away