スマブラのVIP値をPandasで集計

# はじめに
[【初めてのスクレイピング】スマブラのVIPいきやすいキャラ作ってみた【BeautifulSoup】【ついでにデータ解析】](https://qiita.com/daikiclimate/items/31f613da3600157cbecb)を参考にPandasでVIP値を集計しました

# スクレイピング

```python
import re
import time

import requests
from bs4 import BeautifulSoup

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
}

result = []

for i in range(1, 82):

    url = f"https://kumamate.net/data/?mode=rate&fighter={i}"

    r = requests.get(url, headers=headers)
    r.raise_for_status()

    soup = BeautifulSoup(r.content, "html.parser")

    for trs in soup.find_all("tr", class_=re.compile("RecentMatch[12]")):

        tds = trs.find_all("td")

        win, lose, _ = re.split("[勝敗]", tds[3].get_text(strip=True))

        data = [
            tds[0].img.get("alt"),
            tds[2].get_text(strip=True),
            int(win),
            int(lose),
            float(tds[4].get_text(strip=True).rstrip("%")),
        ]

        result.append(data)

    time.sleep(1)

result
```

# データ解析

```python
import pandas as pd

df = pd.DataFrame(result, columns=["自分", "相手", "勝", "敗", "勝率"])

# 使用回数計算
df["使用回数"] = df["勝"] + df["敗"]

# ファイター別使用回数集計
pv = df.pivot_table(values="使用回数", index="自分", aggfunc="sum").reset_index()

pv.rename(columns={"自分": "相手", "使用回数": "登録数"}, inplace=True)

df1 = pd.merge(df, pv, on="相手")

# VIP計算
df1["VIP"] = df1["登録数"] * df1["勝率"]

# 同一キャラを除外
df2 = df1[df1["自分"] != df1["相手"]].copy()

# ファイター別VIP集計
pv1 = df2.pivot_table(values="VIP", index="自分", aggfunc="sum").sort_values(
    by="VIP", ascending=False
)

pv1["VIP"] = (pv1["VIP"] // 100000).astype(int)

print(pv1.to_markdown())
```
# 使用回数集計
|    | 自分                   | 使用回数 |
|---:|:-----------------------|---------:|
|  1 | ガノンドロフ           |    24004 |
|  2 | ジョーカー             |    19527 |
|  3 | クッパ                 |    19016 |
|  4 | マリオ                 |    17186 |
|  5 | ドンキーコング         |    15838 |
|  6 | ルキナ                 |    15771 |
|  7 | プリン                 |    13148 |
|  8 | リュカ                 |    12628 |
|  9 | クラウド               |    12264 |
| 10 | ロイ                   |    11374 |
| 11 | ゼルダ                 |    11125 |
| 12 | キャプテン・ファルコン |    11044 |
| 13 | ベレト／ベレス         |    10269 |
| 14 | パルテナ               |    10159 |
| 15 | マルス                 |    10126 |
| 16 | カービィ               |     9388 |
| 17 | リンク                 |     9173 |
| 18 | ガオガエン             |     8657 |
| 19 | ファルコ               |     8223 |
| 20 | ネス                   |     8061 |
| 21 | ロボット               |     8032 |
| 22 | インクリング           |     7986 |
| 23 | テリー                 |     7955 |
| 24 | ウルフ                 |     7867 |
| 25 | ピカチュウ             |     7739 |
| 26 | スネーク               |     7330 |
| 27 | ヨッシー               |     7275 |
| 28 | ゲッコウガ             |     6898 |
| 29 | アイク                 |     6333 |
| 30 | Mr.ゲーム&ウォッチ     |     6333 |
| 31 | ミェンミェン           |     6290 |
| 32 | ベヨネッタ             |     6286 |
| 33 | デデデ                 |     6201 |
| 34 | フォックス             |     6198 |
| 35 | ケン                   |     6088 |
| 36 | 勇者                   |     6077 |
| 37 | ミュウツー             |     6037 |
| 38 | ルフレ                 |     5917 |
| 39 | キングクルール         |     5893 |
| 40 | ゼロスーツサムス       |     5454 |
| 41 | カムイ                 |     5453 |
| 42 | リドリー               |     5446 |
| 43 | パックマン             |     5262 |
| 44 | ポケモントレーナー     |     5093 |
| 45 | パックンフラワー       |     5019 |
| 46 | サムス                 |     4854 |
| 47 | ブラックピット         |     4733 |
| 48 | ダークサムス           |     4716 |
| 49 | Wii Fit トレーナー     |     4693 |
| 50 | クロム                 |     4630 |
| 51 | ドクターマリオ         |     4405 |
| 52 | むらびと               |     4261 |
| 53 | シュルク               |     4201 |
| 54 | メタナイト             |     4173 |
| 55 | シーク                 |     4127 |
| 56 | ルイージ               |     4103 |
| 57 | クッパ.Jr              |     3974 |
| 58 | ピチュー               |     3886 |
| 59 | バンジョー&カズーイ    |     3867 |
| 60 | リトル・マック         |     3818 |
| 61 | こどもリンク           |     3653 |
| 62 | ダックハント           |     3282 |
| 63 | しずえ                 |     3208 |
| 64 | ルカリオ               |     3167 |
| 65 | ロックマン             |     3073 |
| 66 | トゥーンリンク         |     2954 |
| 67 | ソニック               |     2848 |
| 68 | ワリオ                 |     2506 |
| 69 | ピクミン&オリマー      |     2340 |
| 70 | アイスクライマー       |     2324 |
| 71 | ピット                 |     2265 |
| 72 | 格闘Mii                |     2262 |
| 73 | ピーチ                 |     2251 |
| 74 | ロゼッタ&チコ          |     2192 |
| 75 | 射撃Mii                |     2169 |
| 76 | リュウ                 |     2151 |
| 77 | デイジー               |     1880 |
| 78 | ディディーコング       |     1829 |
| 79 | シモン                 |     1554 |
| 80 | リヒター               |     1515 |
| 81 | 剣術Mii                |     1383 |

# VIP集計

| 自分                   |   VIP |
|:-----------------------|------:|
| クッパ.Jr              |   303 |
| バンジョー&カズーイ    |   300 |
| リヒター               |   299 |
| ミェンミェン           |   296 |
| 射撃Mii                |   295 |
| ダックハント           |   291 |
| フォックス             |   287 |
| ルフレ                 |   285 |
| 格闘Mii                |   284 |
| ロックマン             |   284 |
| ガオガエン             |   283 |
| Mr.ゲーム&ウォッチ     |   282 |
| ケン                   |   281 |
| デデデ                 |   278 |
| 剣術Mii                |   277 |
| ゲッコウガ             |   276 |
| ダークサムス           |   276 |
| ベヨネッタ             |   275 |
| スネーク               |   274 |
| トゥーンリンク         |   274 |
| ブラックピット         |   274 |
| シモン                 |   273 |
| ファルコ               |   273 |
| パックンフラワー       |   273 |
| ディディーコング       |   273 |
| Wii Fit トレーナー     |   272 |
| メタナイト             |   272 |
| ピーチ                 |   272 |
| サムス                 |   268 |
| ゼルダ                 |   268 |
| アイク                 |   268 |
| ピクミン&オリマー      |   267 |
| ピット                 |   267 |
| ロボット               |   266 |
| リュウ                 |   266 |
| パックマン             |   266 |
| アイスクライマー       |   266 |
| ロゼッタ&チコ          |   265 |
| パルテナ               |   265 |
| むらびと               |   265 |
| 勇者                   |   264 |
| ドクターマリオ         |   264 |
| ポケモントレーナー     |   264 |
| デイジー               |   262 |
| リンク                 |   261 |
| ピチュー               |   260 |
| マリオ                 |   260 |
| クロム                 |   260 |
| カムイ                 |   259 |
| ヨッシー               |   259 |
| キングクルール         |   258 |
| ウルフ                 |   258 |
| リトル・マック         |   258 |
| ルカリオ               |   258 |
| ワリオ                 |   257 |
| シュルク               |   257 |
| インクリング           |   257 |
| クラウド               |   257 |
| ロイ                   |   256 |
| こどもリンク           |   256 |
| ピカチュウ             |   256 |
| クッパ                 |   256 |
| ミュウツー             |   256 |
| ルイージ               |   255 |
| テリー                 |   255 |
| ソニック               |   255 |
| ネス                   |   254 |
| シーク                 |   254 |
| しずえ                 |   253 |
| リュカ                 |   252 |
| キャプテン・ファルコン |   250 |
| プリン                 |   250 |
| ドンキーコング         |   249 |
| マルス                 |   249 |
| ルキナ                 |   248 |
| ゼロスーツサムス       |   246 |
| リドリー               |   245 |
| ジョーカー             |   244 |
| カービィ               |   244 |
| ベレト／ベレス         |   241 |
| ガノンドロフ           |   240 |

# 参考
[【初めてのスクレイピング】スマブラのVIPいきやすいキャラ作ってみた【BeautifulSoup】【ついでにデータ解析】](https://qiita.com/daikiclimate/items/31f613da3600157cbecb)