はじめに
Pythonでしか描けない美しいグラフを描こう!(その2)です。(その1は以下)
その2は予定外なのですが、seaborn-analyzerというライブラリがあることを知り、これがすばらしいので、紹介と備忘を兼ね記事にすることにしました。
何がすばらしいかというと・・・
- ヒストグラムに正規分布曲線や、平均値、標準偏差の値を表示してくれたり、
- 散布図に回帰式や相関係数の値を表示してくれたり、
- ペアプロットは散布図行列と相関係数行列を同時に表示してくれたり・・・等
かゆいところまで手を伸ばしていただいた感じで、これはいい!
こんなのがあると、Excelで描けないグラフだけをPythonで!というスタンスも再考しないといけないかもしれないなと思う今日この頃です。
動作条件等
・Google colabで動作確認
・データはExcel(かCSV)を読込み、グラフ作成という流れを基本にしています
・この記事では、ボストン住宅価格のデータセットで確認しています。
・ここで紹介するデータを格納したデータフレームは、すべて[df]としています。
Google colaboratoryの準備
Google colaboratoryから準備しないといけない場合は、以下を確認。
Googleのアカウントを持ってさえいれば誰でも使用することができ、開発環境を整える必要もなくPythonによる機械学習実装が可能です。
Google colaboratory起動
「Google Drive」を起動すると、画面左上の[+新規]ボタンをクリックすると以下のように複数のプログラム起動メニューが表示されます。このメニューのGoogle colaboratoryをクリックすればOKです。
ボストン住宅価格のデータセットについて
以下サイト(Kaggle)の「Boston.csv」を使わせていただいた。
データ数:506, 項目数:14のデータセットで、住宅価格を示す「MEDV」という項目と、住宅価格に関連するであろう項目が「CRIM:犯罪率」「RM:部屋数」「B:町の黒人割合」「RAD:高速のアクセス性」・・・等、13項目で構成されたデータとなっています。
ボストン住宅価格データの項目と内容
|項目|内容|
|:-----------|:------------------|
|CRIM|町ごとの一人当たり犯罪率|
|ZN|25,000平方フィート以上の住宅地の割合|
|INDUS|町ごとの非小売業の面積の割合|
|CHAS|チャールズ川のダミー変数(川に接している場合は1、そうでない場合は0)|
|NOX|窒素酸化物濃度(1,000万分の1)|
|RM|1住戸あたりの平均部屋数|
|AGE|1940年以前に建てられた持ち家の割合|
|DIS|ボストンの5つの雇用中心地までの距離の加重平均|
|RAD|高速道路(放射状)へのアクセス性を示す指標|
|TAX|10,000ドルあたりの固定資産税の税率|
|PTRATIO|町ごとの生徒数と教師数の比率|
|B|町ごとの黒人の割合|
|LSTAT|人口の下層階級の比率|
|MEDV|住宅価格の中央値(1000㌦単位)|
データを可視化(seaborn-analyzer)してみよう!
ライブラリのインストールおよびインポート
pip install seaborn-analyzer
※詳しくはわかりませんが、最初はうまくいきませんでした。
ランライムを再起動してからOKになったように思います。
データの読み込み
# データセットの読込み
df = pd.read_csv("Boston.csv",index_col=0)
df.head()
※最初の列は不要な内容でしたので、index_col=0 で最初の列を除き「df」に格納しています。
※手元データを読込む場合は、読み込むファイル名を変更してください。
※Excelファイルを読込む場合は、pd.read_excel('ファイル名.xlsx')となります。
ヒストグラム
hist.plot_normality(df, x='medv', norm_hist=False, rounddigit=5)
※x='medv'は「ボストン住宅価格データ」の住宅価格を設定しました。
散布図
from seaborn_analyzer import regplot
import seaborn as sns
regplot.linear_plot(x='lstat', y='medv', data=df)
※x='lstat'は「ボストン住宅価格データ」の下級階級人口比率を設定しました。
※y='medv'は「ボストン住宅価格データ」の住宅価格を設定しました。
ペアプロット
from seaborn_analyzer import CustomPairPlot
import seaborn as sns
cp = CustomPairPlot()
cp.pairanalyzer(df)
最後に
seaborn-analyzer、いいですねぇ。
見てるだけで惚れ惚れしてしまいます。
私が実行したのは、ヒストグラムと散布図とペアプロットだけですが、ほかにもできるようですので、ご興味ある方は以下のサイトを確認ください。
作者様にこの場を借りて感謝申し上げます。ありがとうございます。
参考サイト