LoginSignup
30

More than 5 years have passed since last update.

pandasでデータ可視化

Last updated at Posted at 2016-06-06

既に先行記事がありますが、pandasにはデータ可視化機能が備わっています。
matplotlibの薄いラッパーですが、これを使えば基本的なグラフのコードがかなり端折れます。

Pandasを用いたデータ可視化

こちらに紹介されていたirisの可視化であれば、Rと同程度のコード量で可視化できます。

Python for R Users
Python と R の違い (データ可視化・グラフ作成編)

importが多いのはpythonの仕様ですが、現在のpythonでのデータ解析の生産性はかなり高いと感じます。
RもRstudio/dplyrが普及して生産性が向上していますが、pythonもJupyter/Pandasが普及して5年前とは様変わりしていると思います。
(numpy+matplotlibがメインだったころとは全然違います。)

必要パッケージ、データのロード

import seaborn as sns
import pandas as pd
iris=sns.load_dataset("iris")
%%matplotlib inline

おしゃれ感を出すためにseabornをimport。あわせて、seabornにはトイデータも入っているのでirisはここからload。

散布図

iris.plot.scatter(x="sepal_length",y="sepal_width")

scatter.png

箱ひげ図

iris.sepal_length.plot.box()

box.png

ヒストグラム

iris.sepal_length.hist()

hist.png

ラインチャート

iris.sepal_length.plot.line()

line.png

パイチャート

pd.crosstab(iris.species,columns="species").plot.pie(y="species")

pie.png

これはデフォルトではいくつか課題があります。
- デフォルト値が横長なため潰れてしまう
- labelが重なってしまう
- seabornにパイチャートがないために、カラーマップがなされない。

このために設定変えるのも微妙ですが、設定を追加すればきれいにかけます。

from matplotlib import pylab
default_size=pylab.rcParams["figure.figsize"]
pylab.rcParams["figure.figsize"]=12,12
pd.crosstab(iris.species,columns="species").plot.pie(y="species",colors=sns.color_palette())

pie2.png

サイズを変えたら戻しておきましょう。

pylab.rcParams["figure.figsize"]=default_size

バーチャート

iris.sepal_length.plot.bar()

bar.png

バーチャートはカテゴリ変数を想定しているからか、これだけデフォルトでは軸ラベルを間引いてくれなかったです。

matplotlibを直接呼び出すと間引いてくれます。(seabornをimport済みなので色合いはseabornになっています。)

from matplotlib import pyplot as plt
plt.bar(iris.index,iris.sepal_length)

bar2.png

まとめ

元スライドは前半でPandasの説明しているのに、後半の可視化ではPandasを使っていないためコードが冗長になっています。
複雑な事をしようとするとどうしてもmatplotlibのAPIを直接触る必要がありますが、
基本的な図であれば、PandasのAPIだけでシンプルにコーディング可能です。

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
30