Tableau Publicを使用して賃貸情報を可視化してみた

# はじめに
データの分析を行う方法のひとつとしてBIツールの使用が挙げられます。ただ、BIツールという言葉は聞いたことがあるけど実際に使ったことがなかったので、BIツールのTableauを使ってみることにしました。
今回は、[以前スクレイピングで取得した](https://qiita.com/atsuken/items/a5c0de765944f97313c4)suumoの賃貸情報を用いてTableauを動かしていきたいと思います。この記事は、そのアウトプットを目的として作成しました。

Tableau Publicを用いて分析を行っていきます。[[Tableau Publicダウンロードページ](https://public.tableau.com/ja-jp/s/download)]

※注意
Tableau Publicでは作成したグラフを保存するとオンライン上で公開されてしまうので機密情報や個人情報を扱うのは避けた方がいいかと思います。

# 目次
・分析の目的
・分析の前に(前処理)
・用意したデータの説明
・データへ接続
・データのユニオン
・ワークシートでグラフを作成
・まとめ
・参考

# 分析の目的
今回は2つの駅周辺の平均賃貸価格を比較していきたいと思います。一つ目は[以前スクレイピングで取得した](https://qiita.com/atsuken/items/a5c0de765944f97313c4)押上駅周辺の賃貸情報です。もう一つは埼玉県の川口駅周辺の賃貸価格情報です。川口駅周辺の賃貸情報も押上駅周辺の賃貸情報と同様にsuumoのサイトをスクレイピングして手に入れました。

# 分析の前に(前処理)
[前回の記事](https://qiita.com/atsuken/items/a5c0de765944f97313c4)の最後にも記載しましたが、スクレイピングしたままのデータでは数値データに文字列が含まれていたり、複数のデータが一つのフィールドに入っていたりとそのままでは分析に使うことができない状態になっています。特に前回のコードでのスクレイピングは大雑把にデータを取得しているのでかなり汚いデータとなっています。
例えばsikikinreikinカラムを見ると次のようなデータが入っています。
![スクリーンショット 2022-02-02 13.58.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517778/25397e73-3b9b-023e-b3e7-1bf9c6fccf13.png)
ご覧の通り一つのフィールドに複数のデータが入っており、必要のない文字列が入っていたりします。

詳しくは省略しますが、こういったデータはデータはpythonのsplitやreplaceを使って複数のカラムに分けたり、不要な文字列を削除したりしました。

# 用意したデータの説明
今回用意したデータの説明は次のとおりです。今回の記事で使用するもののみを記載しています。
price…賃貸価格(万円)
bus…最寄駅までの移動手段がバスかどうか(ダミー変数)
car…最寄駅までの移動手段が車かどうか(ダミー変数)
walk…最寄駅までの移動手段が徒歩かどうか(ダミー変数)
station…駅名

# データへ接続
Tableauから前処理したcsvファイルに接続します。
Tableau Publicを起動すると最初に下の図の右のような画面が開きます。そこから「テキストファイル」をクリックし先ほど作成したcsvファイルを選択します。(まずは押上のデータを選択しました。)
![スクリーンショット 2022-02-02 14.28.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517778/4472c178-8553-83a4-4334-552c3a434949.png)

# データのユニオン
次に押上のデータと川口のデータを縦に結合します。
データに接続すると次のような画面が表示されます。
![スクリーンショット 2022-02-02 15.41.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517778/8b9a4cc3-0f2a-3b15-a639-3c1548c15b94.png)
ここで、画面の左側のファイルという欄に注目してください。
Tableauでcsvファイルを開くと同じディレクトリに存在するcsvファイルもここに表示されます。ここから川口のデータを図の赤矢印で示したsuumo_oshiage.csvの真下へドラッグ&ドロップします。こうすることで二つのデータを縦に結合することができます。

# ワークシートでグラフを作成
データを結合できたら、左下のシート1をクリックしワークシートの画面に移動します。ここでグラフを作成することができます。
ワークシートの画面の左の方を見るとデータのカラム名が並んでいます(データペインと呼びます)。データペインは上下に分かれており、上の青色のアイコンのカラムが質的データ、下の緑色のアイコンのカラムが量的データとなっています。
![スクリーンショット 2022-02-02 15.56.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517778/589d1d78-2c77-4d27-b3ce-c8f0e2a1d415.png)
上の青いデータをディメンジョン、下の緑のデータをメジャーと呼びます。これらの振り分けはTableauが接続したデータをもとに自動で分別しています。基本的に数値はメジャー、文字列はディメンジョンと振り分けているのでダミー変数で置き換えたデータ(質的変数として扱いたい数値データ)もメジャーへ分類してしまいます。今回の例で言うと「bus」「car」「walk」などがそれに該当します。

グラフを作っていきます。グラフの作成は左のデータペインからカラムを選んでワークシート上部の列、または行の欄にドラッグ&ドロップします。(列にドロップすると横軸にメモリが取られ行にドロップすると縦軸にメモリが取られるという認識で良いかと思います。)
今回は縦軸に値段を取りたいのでデータペインからpriceを行の欄へドラッグ&ドロップします。
すると次のようなグラフが作成されます。

<img alt="スクリーンショット 2022-02-02 16.18.16.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517778/56ba8c72-7b17-1cff-a5f9-142a821fba12.png" width="400">

これを見るとpriceの値が約300k(300000)となっています。(元のデータの単位が「万円」なので30億円となります。）この値はpriceの合計値です。このように、デフォルトではデータの集計を合計で行っています。

今回は押上駅周辺と川口駅周辺の賃貸価格の平均を比較したいのでpriceの平均値を集計する必要があります。
集計を平均値に変更するにはデータペインの該当カラムをクリックし▼マークをクリックします。その後、「規定のプロパティ」→「集計」→「平均」と選択することで平均値での集計が行えます。
![スクリーンショット 2022-02-02 15.48.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517778/cb7547e8-d924-fb20-28f5-a1dc39afb1fc.png)
合計値で集計したpriceは行の欄から外へドラッグ&ドロップすることで削除することができます。その後、平均値で集計したpriceを行にドラッグ&ドロップします。

<img alt="スクリーンショット 2022-02-02 17.05.09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517778/3bdb15c5-e0db-fa4e-b5e3-492932a191a1.png" width="400">

合計値が平均値に変わったことがわかります。

次に、横軸に駅名のデータを追加します。駅名のデータはstationにあるので、データペインからstationを列の欄にドラッグ&ドロップします。

<img alt="スクリーンショット 2022-02-02 17.10.00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517778/a3177602-8e63-d060-5568-d30af0973901.png" width="300">

するとpriceのデータが自動的に押上駅と川口駅に分割されます。
このグラフを見ると川口駅周辺より押上駅周辺の方が賃貸価格が高いことがわかります。

ここまででも押上駅周辺と川口駅周辺の賃貸価格の比較はできますがもう少し深掘りしていきたいと思います。

先ほど作ったグラフから最寄駅までの移動手段が徒歩であるものを抽出します。今回用意したデータではwalkカラムに最寄駅までの移動手段が徒歩かどうかのダミー変数データが入っています。このデータは質的変数として扱いたいのですが、データの中身が数値なのでTableau側でメジャーに分類されてしまっています。
まずはこのデータをディメンジョンに変換します。
ディメンジョンに変換するには変換したいカラムをデータペインから選び、クリック→▼マークをクリック→ディメンジョンに変換をクリックすることで行うことができます。このとき、クリック→▼マークをクリック→データ型の変換で文字列にしておくと文字列に対する関数を使うことができるようになります。

![スクリーンショット 2022-02-02 17.40.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517778/cf91362f-be02-4899-51cc-e2a00828719f.png)

ディメンジョンに移したwalkを列にドラッグ&ドロップするとグラフが次のように変化します。
![スクリーンショット 2022-02-03 9.29.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517778/47bb1c3b-bc64-d16f-e909-29910ac6bb1f.png)
こうしてみると、押上駅周辺の最寄り駅までの移動手段が徒歩でない物件の賃貸価格は川口駅周辺の賃貸価格とそこまで差がないように見えます。
また、最寄り駅待っでの移動手段が徒歩だけのものを表示させたいときはwalkを列ではなくフィルターにドラッグ&ドロップすることでフィルタリングをかけることができます。
![スクリーンショット 2022-02-03 10.31.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517778/a8cc9b7f-50cb-8d84-02fc-81c49200b5eb.png)

ここまでは棒グラフを作成しましたが、クロス集計表も作ることができます。
priceを列ではなくマークのテキストにドラッグ&ドロップすることでクロス集計表を作ることができます。(画像はwalkを行に持ってきています)
![スクリーンショット 2022-02-03 10.46.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517778/0d1cf454-5c29-742c-0754-d36ea4b117df.png)

※ 2022年3月7日追記
列に置いたWalkのピルをクリック⇨別名の編集からダミー変数を編集することができます。ダミー変数のままにしておくよりもわかりやすいグラフになると思います。
![スクリーンショット 2022-03-07 17.14.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517778/f0e98b10-20ad-99ee-e504-d3904b5ea0c2.png)
![スクリーンショット 2022-03-07 16.39.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517778/973eef32-952d-da0e-a97a-428ac9620545.png)


最後に、作ったグラフ・表はダッシュボードにまとめることができます。
下の新しいダッシュボードをクリックするとダッシュボードを作成する画面に移ります。
![スクリーンショット 2022-02-03 11.21.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517778/b1c00ab4-8d4b-4d40-0fcd-eb1c7527bf14.png)
左のシートの欄から使いたいシートを画面の中央へドラッグ&ドロップすることで作成したグラフを配置できます。

<img alt="スクリーンショット 2022-03-07 16.41.54.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517778/7d152cd4-fc8e-33ac-6f97-a3a5527d1fe1.png" width="400">

# まとめ
今回はTableauを使ってグラフを作成してみました。個人的にはコードを書かずに直感的な操作でグラフを作ることができるのが便利だと感じました。Tableauを使ったのは初めてだったので、まだ使っていない機能や理解が浅い部分が多々あるかと思います。今後も使いながら勉強していこうと思います。

ちなみに最寄り駅までの移動手段が徒歩であるデータについて
帰無仮説：川口駅周辺と押上駅周辺の平均賃貸価格は等しい
対立仮説：川口駅周辺の平均賃貸価格は押上駅周辺の平均賃貸価格に比べて低い
と言う仮説のもとウェルチのt検定を行ったところ、有意水準5％で帰無仮説が棄却されたので川口駅周辺の方が押上駅周辺よりも平均賃貸価格が低いといって良さそうです。

作成したグラフについて統計学を用いた説明を加えることでより説得力のある資料を作成できると思いました。

追記
最終的に次のようなダッシュボードを作成しました。

![スクリーンショット 2022-04-01 11.20.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517778/d1148a41-b9a6-6fd0-e560-f16cb0057c34.png)

# 参考
Tableauデータ分析 ～入門から実践まで～ 第2版 (著)小野泰輔