Pythonでのグラフ描画
Pythonチャートを描く場合の定番は「matplotlib」ですが、その見た目のやや野暮ったい感じと、表記法のややこしさが指摘されています。
そこで、この記事ではMatplotlibの機能をより美しく、またより簡単に実現するためのラッパー的存在である、「Seaborn」の使い方を取り上げます。
詳しくは下記リンクをご覧ください。
本記事では下記記事でのSeaborn、及びiris,tip,titanicのデータがインポートされている前提で進めます。
◆pythonで美しいグラフ描画 -seabornを使えばデータ分析と可視化が捗る その1
http://qiita.com/hik0107/items/3dc541158fceb3156ee0
分布プロット
ここではtipデータを使ってみます。
曜日ごとに、お客さんの会計(total_bill)がどう分布しているかを見てみましょう。
stripplotというメソッドを使います。
sns.stripplot(x="day", y="total_bill", data=tips)
同じ食事でも、朝食と夕食では大分金額が違いそうなので、前回も使った"hue"を使って
LunchとDinnerを分けて見てみましょう。
sns.stripplot(x="day", y="total_bill", data=tips, hue='time')
この店は土日にはランチをやっていないようですね。
オフィス街の飲食店と何でしょうか?..
箱ひげプロット
boxplotというメソッドを使います。
sns.boxplot(x="size", y="tip", data=tips.sort('size'))
ちょっとここではグラフのパレットの色を変更してみました。
やりかたはこんな感じです
flatui = ["#9b59b6", "#3498db", "#95a5a6", "#e74c3c", "#34495e", "#2ecc71"]
sns.palplot(sns.color_palette(flatui))
sns.set_palette(flatui)
詳しくはこちらをご覧ください。
http://stanford.edu/~mwaskom/software/seaborn/tutorial/color_palettes.html
棒グラフ
ここではtitanicのデータを使ってやってみます。
グラフの描画にはboxplotというメソッドを使います。
sns.barplot(x='sex', y='survived', data=titanic, hue='class')
x軸に性別、y軸には survived つまり生存者か死者かが1と0で入っているデータ列を選択しています。
この場合、例えば性別=maleのレコードが沢山存在するので、Y軸に使われる数字は各レコードの平均値になります。
そして、全レコードの値を表現するために、平均値からのエラーバーが付与されます。
このあたりはちょっと注意して使う必要があるかもしれません。
もし、平均ではなくSurvivedの合計値が欲しい場合は、一旦Pandasで集計してやってからグラフ化するのがベストでしょうか。もしかしたら他にもやり方があるかもしれません。
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)
棒グラフ(カウント)
Y軸の数値を、X軸に該当するデータのカウントにしたいときはCountplotをつかます。
ヒストグラムと同様に、x軸だけ定義すればOKです。
ちなみにグラフの色は、paletteというオプションでも指定可能です。
sns.countplot(x='sex', hue='embarked', data=titanic, palette='Greens_d')