第２回 【Python】まだ見ぬアクティビティーを求めてアソビュー ！分析

# 1. 概要
この記事は第１回の続きです。

https://qiita.com/Tokoroteen/items/2bc88767a01124816a1a


第１回ではアクティビティー検索サイトである<a href="https://www.asoview.com/" target="_blank" rel="noopener noreferrer">アソビュー！</a>に掲載されているアクティビティーの基本情報を取得しました。
今回はそのデータを解析することでアソビュー！内のアクティビティーの特徴に迫っていきたいと思います。

完成したアプリは<a href="https://lifac.herokuapp.com/" target="_blank" rel="noopener noreferrer">こちら</a>

https://lifac.herokuapp.com/

例えば「空を飛びたい」とき（検索後に海要素を足して、山要素を引くこともできます！！）

![スクリーンショット 2022-11-03 13.50.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2704675/9b146bef-8190-1813-93c9-ab67e5ad1086.png)

例えば「動物に癒されたい」とき

![スクリーンショット 2022-11-03 13.50.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2704675/4ce7ede4-a952-443b-59ba-807ceec0f2f2.png)

第１回：<a href="https://qiita.com/Tokoroteen/items/2bc88767a01124816a1a" target="_blank" rel="noopener noreferrer">【Python】まだ見ぬアクティビティーを求めてアソビュー ！スクレイピング</a>
第２回：本記事
第３回：<a href="https://qiita.com/Tokoroteen/items/cf4c8dc29b2410917ba1" target="_blank" rel="noopener noreferrer"> 第３回 【Python】まだ見ぬアクティビティーを求めてアソビュー ！口コミ スクレイピング </a>
第４回：<a href="https://qiita.com/Tokoroteen/items/064c60bdea219909c85c" target="_blank" rel="noopener noreferrer"> 第４回 【Python】まだ見ぬアクティビティーを求めてアソビュー ！機械学習(Doc2Vec) </a>
第５回：<a href="https://qiita.com/Tokoroteen/items/1da9434e90ff407e6422" target="_blank" rel="noopener noreferrer">第５回 【Python】まだ見ぬアクティビティーを求めてアソビュー ！Doc2Vecモデルチューニング </a>

# 2. 前回取得したデータの概要
早速前回取得したデータを使います。
まずは必要なものをインポートします。
```python:base_data_graph
import pandas as pd
%matplotlib inline
import matplotlib.pyplot as plt
import japanize_matplotlib #matplotlibで日本語を使う
import re
```
データを読み込みます。
```python:base_data_graph
df = pd.read_csv('base_data.csv')
df.head(2)
```

||name|area|small_area|genre_type|rating_star|rating_asorepo|introduction_title|introduction_text|No.|url|review_link
|:-|:-|:-|:-|:-|:-|:-|:-|:-|:-|:-|:-
0|ガイドラインアウトドアクラブ|北海道|富良野・美瑛・トマム|['ラフティング']|5.0|7|3歳からOKのラフティング！川を全身で遊ぼう！自然を満喫しよう☆|南富良野にある水の綺麗な「シーソラプチ川」と「空知川源流部」にてラフティングを開催。全ツアー...|163|省略|/base/163/asorepo/list/
|1|洞爺ガイドセンター|北海道|洞爺・登別・苫小牧|['レイクカヌー', 'エコツアー･自然体験', 'スノーシュー・スノートレッキング']|0.0|1|美しい洞爺湖を満喫。「旬なプラン」をご提供します！|北海道・洞爺湖で、自然体験アクティビティを開催している洞爺ガイドセンター。美しい自然をご案内...|178|省略|/base/178/asorepo/list/
|2|函館どさんこファーム|北海道|函館・大沼・松前|['乗馬 その他']|0.0|3|どさんこと触れあう函館の旅！函館空港・函館駅から車で20分！|函館どさんこファームは函館空港・函館駅から20分と、アクセス抜群・好立地の乗馬クラブです。\...|191|省略|/base/191/asorepo/list/

rating_asorepo列はそれぞれのアクティビティーのレビュー数を示しています。これについて詳細を見てみると、
```python:base_data_graph
df['rating_asorepo'].describe()
```
```
count     8651.000000
mean       118.819327
std        992.897662
min          0.000000
25%          0.000000
50%          3.000000
75%         20.000000
max      32616.000000
Name: rating_asorepo, dtype: float64
```
となります。アクティビティーの数は全部で8651件、レビュー数の平均は約119件であることが分かります。第1四分位数が0、第2四分位数が3なので、レビューが数件しかないものが多くを占めていることが明らかになりました。
もっともレビューがついているものは32616件もレビューがついています！
どんな施設にレビューが多いのかを見てみます。
```python:base_data_graph
df.sort_values(by='rating_asorepo', ascending=False)[['name', 'rating_asorepo']].head(5)
```

||name|rating_asorepo
|-|-:|-:
|1926|サンシャイン水族館|32616
|5461|天王寺動物園|31007
|1974|すみだ水族館|25398
|5394|ひらかたパーク|22367
|4510|名古屋港水族館|21132

これをみると水族館や動物園といった施設のレビュー数が多いことが分かりました🐬

# 3. 場所を視点に分析してみる
area列には都道府県名が入っています。
```python:base_data_graph
area = df['area'].unique() #ユニークな要素の値のリスト
print(area)
print(len(area))
```
```
['北海道' '大分県' '神奈川県' '愛媛県' '愛知県' '静岡県' '青森県' '岩手県' '宮城県' '秋田県' '山形県' '福島県'
 '栃木県' '群馬県' '長野県' '新潟県' '茨城県' '埼玉県' '東京都' '千葉県' '京都府' '高知県' '大阪府' '三重県'
 '香川県' '山梨県' '石川県' '富山県' '福井県' '岐阜県' '兵庫県' '滋賀県' '奈良県' '和歌山県' '広島県' '岡山県'
 '沖縄県' '鳥取県' '島根県' '山口県' '徳島県' '福岡県' '佐賀県' '長崎県' '熊本県' '宮崎県' '鹿児島県' '海外']
48
```

47都道府県全てに施設があり、海外にある施設も掲載されていました。
各都道府県毎に施設数を棒グラフで描画してみます。

```python:base_data_graph
#ユニークな要素の値とその出現回数
df_prefectures = df['area'].value_counts().sort_values(ascending=False)
plt.bar(df_prefectures.index, df_prefectures)

plt.xticks(rotation=90) # x軸縦書き（90度回転）
plt.xlabel('場所')
plt.ylabel('施設数')
plt.rcParams["figure.figsize"] = (12, 6)
plt.show()
```
![basho_shisetsu.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2704675/96ae4946-cc1c-081b-108e-6db336ed52a5.jpeg)

東京都が最も多く、次いで沖縄県、神奈川県と続いています。東北地方は比較的掲載数が少ないようです。
都道府県よりも細かい所在地であるsmall_area列を用いて同様にグラフを作ってみます。

```python:base_data_graph
df_small_areas = df['small_area'].value_counts().sort_values(ascending=False)
df_small_areas = df_small_areas[df_small_areas > 50]
plt.bar(df_small_areas.index, df_small_areas)

plt.xticks(rotation=90) 
plt.rcParams["figure.figsize"] = (8, 6)
plt.show()
```
![small_area.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2704675/81c9b984-0b0f-e222-e9d7-ab5a9cb40b07.jpeg)

横軸が多くなりすぎてしまうので50件以上のものを描画しています。
石垣島・竹富島が最も多く、さすがリゾート地といった感じです🏄‍♀️

各都道府県の平均評価を見てみると、
```python:base_data_graph
#都道府県毎の平均評価
df_star_mean = df[['area','rating_star']].groupby('area').mean().sort_values(by='rating_star', ascending=False)
plt.bar(df_star_mean.index, df_star_mean['rating_star'])

plt.xticks(rotation=90) # x軸縦書き（90度回転）
plt.xlabel("都道府県")
plt.ylabel("平均評価")
plt.rcParams["figure.figsize"] = (12, 6)
plt.savefig('star_area.jpeg')
plt.show()
```
![star_area.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2704675/7f3751bc-5439-0266-481d-6f3403617291.jpeg)

47都道府県の中で三重県が最も面白い県であることが明らかになりました！🎉
非常に興味深いですね笑
（もちろん、分母がバラバラなので単純比較はできないと思いますが、、、）

# 4. アクティビティーのジャンル
続いて、どんなジャンルがあるのか見てみます。
```python:base_data_graph
df['genre_type'].head()
```
```
0 ['ラフティング']
1 ['レイクカヌー', 'エコツアー･自然体験', 'スノーシュー・スノートレッキング']|
2 ['乗馬 その他']
3 ['ラフティング']
4 ['マウンテンバイク（MTB）・ダウンヒル']
```

```python:base_data_graph
df_genre = df['genre_type']
genre_set = set() #ジャンルの集合
for gl in df_genre:
    gl = re.findall("'(.+?)'", gl)
    for g in gl:
        genre_set.add(g)

print(genre_set)
print(len(genre_set))
```
```
{'ダイビング・スキューバダイビング その他', 'ソープカービング', 'シーサー作り', '水圧で空を飛ぶ その他', 'ぶどう狩り', 'トライク', 'お香作り', '赤ちゃん手形', '萩焼体験', 
'語学教室・異文化交流', 'ナイトツアー', 'ツリークライミング・木登り', '和菓子教室', 'バンジージャンプ', 'フライトシミュレーター・ドライブシミュレーター', 'イカ釣り', 
'ダイビングライセンス取得（Cカード取得）', 'マジックバー・マジック教室', 'フラワーアレンジメント教室', '手作りスノードーム', 'ボーカルレッスン', '信楽焼体験', 'タップダンス',
 'スノーボード', 'スキースクール', 'アフタヌーンティー', 'キノコ狩り・しいたけ狩り', 'ストリートダンス', 'リムジンパーティー・リムジンレンタル', 'ファンダイビング', '手作りリース',...}
534
```
サーフィンや茶道体験などの"The 体験アクティビティー"に加えて、酒蔵見学や3Dプリンター体験、手作り腕時計など実に様々な534種類のアクティビティーが掲載されているようです。

# 5. レビュー数視点の分析
<a href="https://ai-inter1.com/python-histogram/" target="_blank" rel="noopener noreferrer">ヒストグラム</a>を描いてみます。

```python:base_data_graph
#レビュー数毎の度数分布表
#bins 階級（ヒストグラムの棒）の数。何も指定しなければ、10
plt.hist(df['rating_asorepo'], bins=100, range=[0,1000])
plt.show()
```
![review_hist.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2704675/1df4865a-89e0-114d-00d2-2d9af0672dd8.jpeg)

0付近のレビュー数が多すぎるのでもう少し、大きな値の範囲で描画してみると、

```python:base_data_graph
plt.hist(df['rating_asorepo'], bins=100, range=[100,10000])
plt.show()
```
![review_hist_larger.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2704675/6c0b0b75-1cb4-6fec-d3ab-ee603408848b.jpeg)

それでもやはり、レビュー数が多くなるにつれて、アクティビティーの数はほとんど単調に減少しています。

# 6. まとめ
今回は<a href="https://qiita.com/Tokoroteen/items/2bc88767a01124816a1a" target="_blank" rel="noopener noreferrer">第１回</a>で取得したアソビュー！内のアクティビティーの基本情報からどのような施設が掲載されているのかを分析してみました。
次回は各アクティビティーの口コミを取得していきます！

https://qiita.com/Tokoroteen/items/cf4c8dc29b2410917ba1

第１回：<a href="https://qiita.com/Tokoroteen/items/2bc88767a01124816a1a" target="_blank" rel="noopener noreferrer">【Python】まだ見ぬアクティビティーを求めてアソビュー ！スクレイピング</a>
第２回：本記事
第３回：<a href="https://qiita.com/Tokoroteen/items/cf4c8dc29b2410917ba1" target="_blank" rel="noopener noreferrer"> 第３回 【Python】まだ見ぬアクティビティーを求めてアソビュー ！口コミ スクレイピング </a>
第４回：<a href="https://qiita.com/Tokoroteen/items/064c60bdea219909c85c" target="_blank" rel="noopener noreferrer"> 第４回 【Python】まだ見ぬアクティビティーを求めてアソビュー ！機械学習(Doc2Vec) </a>
第５回：<a href="https://qiita.com/Tokoroteen/items/1da9434e90ff407e6422" target="_blank" rel="noopener noreferrer">第５回 【Python】まだ見ぬアクティビティーを求めてアソビュー ！Doc2Vecモデルチューニング </a>