【勉強メモ02】Pythonでデータの可視化をしよう

#はじめに
今回記事作成者の機械学習の勉強＆メモのために記事を作成しています
間違いなどありましたらコメントにてご指摘いただけると幸いです。

#可視化の準備をしよう

Pythonで必要なライブラリーを呼び出しましょう。
（魔法の言葉みたいなものです。）

```Python
#Pythonでグラフを描画するためのライブラリ
import matplotlib.pyplot as plt

#Numerical Pythonを略してNumPy 数値の計算や行列を扱うためのライブラリ
import numpy as np

#テーブル型のデータを処理するためのライブラリ
import pandas as pd

#　データ可視化のライブラリ
import seaborn as sns

#最大表示列数の指定（ここでは100列を指定） 
pd.set_option('display.max_columns',100)

# floatの表示方法を、小数点以下2桁で設定する処理
pd.options.display.float_format = '{:.2f}'.format

```

#データセットを呼び出す

分析したいデータセットを下記コードで呼び出します。

```Python
#データセットの読み込み
#train.csv →　呼び出したいファイル名を入れてください。
dataset = pd.read_csv("train.csv")

```
#データセットの中身を確認する方法

```Python

#データセットの概要確認をしたい場合
dataset.head()

#指定の場所のデータセットを確認したい場合
#この場合3 ~ 5行目のデータを呼び出してくれる
dataset[3:5]

#データの行数、列数を確認したい場合
dataset.shape

#データの欠損値を確認したい場合
dataset.isnull().sum()

#データの要約統計量を確認したい場合
dataset.describe()

#カラム名（行名）を確認したい場合
dataset.columns

# データ情報の要約を見る
data.info()

```


# 全部可視化してみる方法

とりあえず全体を可視化してみてみようと思った場合
下記コードで行えます。

```Python

# ライブラリのインストール
!pip install pandas-profiling

#可視化ライブラリ読み込み
import warnings
warnings.simplefilter("ignore")
import pandas_profiling as pdp
pdp.ProfileReport(dataset)

```

#ヒストグラム（棒グラフ）作成

```Python
#ヒストグラムの作成方法
#distance⇒ヒストグラムを作成したい項目を入力する
dataset["distance"].hist()


```

#項目ごとの平均値のグラフを作成する。

```Python
#可視化と特徴量を追加する方法
dataset.groupby("AA").aggregate(np.mean)["BB"].\
plot(x = "aaa",y="bbb" kind= "bar")

#項目ごとの平均値のグラフを作成してくれる
#AA : グラフにしたい項目を選択する
#np.mean : 平均値を算出する
#BB : 何の値を出すかを選択する
#aaa : X軸名を選択する
#bbb : y軸名を選択する
#kind = "bar" : 棒グラフを選択している

```


#散布図の作成

```Python
#散布図の作成
# xに横軸の項目、yに縦軸の項目、kindにはグラフの形状を入れる
# "scatter" →　散布図
# "bar"⇒棒グラフ

dataset.plot(x = "distance", y ="price", kind = "scatter")


```

# 散布図を色で分ける方法

```Python
#例えば雨の有無で分ける
sns.scatterplot(data=dataset.x = "distance", y = "price", hue = "IsRain",alpha =0.5)

#data : グラフ作成に使用するデータセットを指定
#x : グラフ作成のx軸（横軸）の設定
#y : グラフ作成のy軸（縦軸）の設定
#hue : 色分けするデータの設定
#alpha : グラフの透明度を設定（デフォルトは1.0)

```

#箱ひげ図

```Python
sns.boxplot(data=dataset, x = "cab_type", y= "price")

#data : グラフ作成に使用するデータセットを指定
#x : グラフ作成のx軸（横軸）の設定
#y : グラフ作成のy軸（縦軸）の設定

```


#ヒートマップ作成

```Python

# ヒートマップの作成
df_pivot = pd.pivot_table(data = dataset, 
                          values="distance",
                         columns = "source",
                         index = "destination",
                         aggfunc = np.mean)
#欠損値を0に置き換える
df_pivot.fillna(0,inplace = True)
#表を出力する。
df_pivot

#data : グラフ作成に使用するデータセットを指定
#values : ヒートマップの値の設定
#columns : ヒートマップの行名（横）の設定
#index :　ヒートマップの列名（縦）の設定 
#aggfunc : 値の計算方法を設定　(np.meas : 平均値で計算する)
#fillna : 欠損値の穴を埋める(NaN値を変換することができる）
#inplace = True : 元のデータに変更を反映させる

```

#ヒートマップの色をつけ見やすくする方法

```Python
sns.heatmap(df_pivot, fmt = ".1f", cmap="Blues",annot=True)

#sns.heatmapの引数のまとめ
# data : Pandasのデータフレームを指定した場合、列名とインデックスが使われる
# camp : Matplotlibのカラーマップまたは、オブジェクトを指定。
#        値の大小をどの色に変換する際に用いる
#        参考: color example code: colormaps_reference.py — Matplotlib 2.0.2 documentation (デフォルト値: None)
# annot : Trueに設定すると、セルに値を出力する
# fmt : 出力フォーマットを文字列で指定する(.1f⇒下1桁まで出力）

```


#参考資料

<a href="https://hb.afl.rakuten.co.jp/ichiba/2132e914.2fe6209c.2132e915.6ace3022/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F15576681%2F&link_type=text&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJ0ZXh0Iiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJyaWdodCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MCwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjEsInByb2QiOjAsImFtcCI6ZmFsc2V9" target="_blank" rel="nofollow sponsored noopener" style="word-wrap:break-word;"  >Pythonによるあたらしいデータ分析の教科書 [ 寺田 学 ]</a>

<a href="https://hb.afl.rakuten.co.jp/ichiba/2132e914.2fe6209c.2132e915.6ace3022/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F15576681%2F&link_type=pict&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0Iiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJyaWdodCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MCwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjEsInByb2QiOjAsImFtcCI6ZmFsc2V9" target="_blank" rel="nofollow sponsored noopener" style="word-wrap:break-word;"  ><img src="https://hbb.afl.rakuten.co.jp/hgb/2132e914.2fe6209c.2132e915.6ace3022/?me_id=1213310&item_id=19251192&pc=https%3A%2F%2Fthumbnail.image.rakuten.co.jp%2F%400_mall%2Fbook%2Fcabinet%2F8341%2F9784798158341.jpg%3F_ex%3D240x240&s=240x240&t=pict" border="0" style="margin:2px" alt="" title=""></a>

<a href="https://hb.afl.rakuten.co.jp/ichiba/2132e914.2fe6209c.2132e915.6ace3022/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F15697205%2F&link_type=text&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJ0ZXh0Iiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJyaWdodCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MCwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjEsInByb2QiOjAsImFtcCI6ZmFsc2V9" target="_blank" rel="nofollow sponsored noopener" style="word-wrap:break-word;"  >見て試してわかる機械学習アルゴリズムの仕組み 機械学習図鑑 [ 秋庭 伸也 ]</a>

<a href="https://hb.afl.rakuten.co.jp/ichiba/2132e914.2fe6209c.2132e915.6ace3022/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F15697205%2F&link_type=pict&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0Iiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJyaWdodCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MCwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjEsInByb2QiOjAsImFtcCI6ZmFsc2V9" target="_blank" rel="nofollow sponsored noopener" style="word-wrap:break-word;"  ><img src="https://hbb.afl.rakuten.co.jp/hgb/2132e914.2fe6209c.2132e915.6ace3022/?me_id=1213310&item_id=19382494&pc=https%3A%2F%2Fthumbnail.image.rakuten.co.jp%2F%400_mall%2Fbook%2Fcabinet%2F5654%2F9784798155654.jpg%3F_ex%3D240x240&s=240x240&t=pict" border="0" style="margin:2px" alt="" title=""></a>