Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
10
Help us understand the problem. What are the problem?

Pythonでしか描けない美しいグラフを描こう!(その2)

featured_hue585f61b28a74a671118de43150c5d63_166173_680x0_resize_q75_box.jpg


はじめに

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です。
IMG_1085.jpg

  


ボストン住宅価格のデータセットについて

以下サイト(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'は「ボストン住宅価格データ」の住宅価格を設定しました。

image.png

散布図

from seaborn_analyzer import regplot
import seaborn as sns
regplot.linear_plot(x='lstat', y='medv', data=df)

※x='lstat'は「ボストン住宅価格データ」の下級階級人口比率を設定しました。
※y='medv'は「ボストン住宅価格データ」の住宅価格を設定しました。

image.png

ペアプロット

from seaborn_analyzer import CustomPairPlot
import seaborn as sns
cp = CustomPairPlot()
cp.pairanalyzer(df)

image.png


最後に

seaborn-analyzer、いいですねぇ。
見てるだけで惚れ惚れしてしまいます。
私が実行したのは、ヒストグラムと散布図とペアプロットだけですが、ほかにもできるようですので、ご興味ある方は以下のサイトを確認ください。

作者様にこの場を借りて感謝申し上げます。ありがとうございます。

 


参考サイト

Why not register and get more from Qiita?
  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
10
Help us understand the problem. What are the problem?