既に先行記事がありますが、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")
箱ひげ図
iris.sepal_length.plot.box()
ヒストグラム
iris.sepal_length.hist()
ラインチャート
iris.sepal_length.plot.line()
パイチャート
pd.crosstab(iris.species,columns="species").plot.pie(y="species")
これはデフォルトではいくつか課題があります。
- デフォルト値が横長なため潰れてしまう
- 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())
サイズを変えたら戻しておきましょう。
pylab.rcParams["figure.figsize"]=default_size
バーチャート
iris.sepal_length.plot.bar()
バーチャートはカテゴリ変数を想定しているからか、これだけデフォルトでは軸ラベルを間引いてくれなかったです。
matplotlibを直接呼び出すと間引いてくれます。(seabornをimport済みなので色合いはseabornになっています。)
from matplotlib import pyplot as plt
plt.bar(iris.index,iris.sepal_length)
まとめ
元スライドは前半でPandasの説明しているのに、後半の可視化ではPandasを使っていないためコードが冗長になっています。
複雑な事をしようとするとどうしてもmatplotlibのAPIを直接触る必要がありますが、
基本的な図であれば、PandasのAPIだけでシンプルにコーディング可能です。