[PYTHON] Regroupez les valeurs VIP de Smash Bra avec les pandas

introduction

[Premier grattage] VIP de Smash Bra J'ai essayé de créer un personnage facile à vivre dans [Beautiful Soup] [Analyse de données]

Grattage

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("[Gagner ou perdre]", 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

L'analyse des données

import pandas as pd

df = pd.DataFrame(result, columns=["moi même", "Adversaire", "Gagner", "Défaite", "Gagner率"])

#Calcul du nombre d'utilisations
df["Nombre d'utilisations"] = df["Gagner"] + df["Défaite"]

#Nombre total d'utilisations par combattant
pv = df.pivot_table(values="Nombre d'utilisations", index="moi même", aggfunc="sum").reset_index()

pv.rename(columns={"moi même": "Adversaire", "Nombre d'utilisations": "Numéro d'enregistrement"}, inplace=True)

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

#Calcul VIP
df1["VIP"] = df1["Numéro d'enregistrement"] * df1["Taux de réussite"]

#Exclure le même caractère
df2 = df1[df1["moi même"] != df1["Adversaire"]].copy()

#Agrégation VIP par combattant
pv1 = df2.pivot_table(values="VIP", index="moi même", aggfunc="sum").sort_values(
    by="VIP", ascending=False
)

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

print(pv1.to_markdown())

Nombre total d'utilisations

moi même Nombre d'utilisations
1 Ganondorf 24004
2 Joker 19527
3 Bowser 19016
4 Mario 17186
5 Donkey Kong 15838
6 Lucina 15771
7 Pudding 13148
8 Luca 12628
9 Nuage 12264
10 Roy 11374
11 Zelda 11125
12 Capitaine Falcon 11044
13 Béret / Beres 10269
14 Partena 10159
15 Mars 10126
16 Kirby 9388
17 Lien 9173
18 Gaogaen 8657
19 Falco 8223
20 Ness 8061
21 robot 8032
22 Incluant 7986
23 Terry 7955
24 Loup 7867
25 Pikachu 7739
26 serpent 7330
27 Yoshi 7275
28 Geckouga 6898
29 Ike 6333
30 Mr.Jeu&regarder 6333
31 Meen Meen 6290
32 Beyonetta 6286
33 Dedede 6201
34 Renard 6198
35 Ken 6088
36 Courageux 6077
37 Miu deux 6037
38 Rufure 5917
39 Roi Kruul 5893
40 Zéro Suit Sams 5454
41 Kamui 5453
42 Ridley 5446
43 Pac-Man 5262
44 Entraîneur de Pokémon 5093
45 Fleur de Pakkun 5019
46 Sams 4854
47 Fosse noire 4733
48 Sams sombres 4716
49 Entraîneur Wii Fit 4693
50 chrome 4630
51 Docteur Mario 4405
52 Murabito 4261
53 Schulk 4201
54 Métanite 4173
55 chercher 4127
56 Luigi 4103
57 Bowser.Jr 3974
58 Pichu 3886
59 banjo&Kazui 3867
60 Petit Mac 3818
61 Lien enfants 3653
62 Chasse au canard 3282
63 Shizue 3208
64 Lucario 3167
65 Rockman 3073
66 Lien Toon 2954
67 Sonique 2848
68 Wario 2506
69 Picmin&Olimer 2340
70 Grimpeur sur glace 2324
71 fosse 2265
72 Combattre Mii 2262
73 Pêche 2251
74 Rosetta&Chico 2192
75 Tir Mii 2169
76 Ryu 2151
77 Marguerite 1880
78 Diddy Kong 1829
79 Simon 1554
80 Richter 1515
81 Épée Mii 1383

Tabulation VIP

moi même VIP
Bowser.Jr 303
banjo&Kazui 300
Richter 299
Meen Meen 296
Tir Mii 295
Chasse au canard 291
Renard 287
Rufure 285
Combattre Mii 284
Rockman 284
Gaogaen 283
Mr.Jeu&regarder 282
Ken 281
Dedede 278
Épée Mii 277
Geckouga 276
Sams sombres 276
Beyonetta 275
serpent 274
Lien Toon 274
Fosse noire 274
Simon 273
Falco 273
Fleur de Pakkun 273
Diddy Kong 273
Entraîneur Wii Fit 272
Métanite 272
Pêche 272
Sams 268
Zelda 268
Ike 268
Picmin&Olimer 267
fosse 267
robot 266
Ryu 266
Pac-Man 266
Grimpeur sur glace 266
Rosetta&Chico 265
Partena 265
Murabito 265
Courageux 264
Docteur Mario 264
Entraîneur de Pokémon 264
Marguerite 262
Lien 261
Pichu 260
Mario 260
chrome 260
Kamui 259
Yoshi 259
Roi Kruul 258
Loup 258
Petit Mac 258
Lucario 258
Wario 257
Schulk 257
Incluant 257
Nuage 257
Roy 256
Lien enfants 256
Pikachu 256
Bowser 256
Miu deux 256
Luigi 255
Terry 255
Sonique 255
Ness 254
chercher 254
Shizue 253
Luca 252
Capitaine Falcon 250
Pudding 250
Donkey Kong 249
Mars 249
Lucina 248
Zéro Suit Sams 246
Ridley 245
Joker 244
Kirby 244
Béret / Beres 241
Ganondorf 240

référence

[Premier grattage] J'ai essayé de créer un personnage VIP pour Smash Bra [Beautiful Soup] [Analyse des données]

Recommended Posts

Regroupez les valeurs VIP de Smash Bra avec les pandas
Calculer la somme des valeurs uniques par tabulation croisée des pandas
Remplacez les noms / valeurs des colonnes par pandas dataframe
Calcul en temps réel de la valeur moyenne avec corroutine
Exemple de traitement efficace des données avec PANDAS
Essayez d'agréger les données de musique doujin avec des pandas
Fonctionnement automatique de Chrome avec Python + Sélénium + pandas
Supprimer les lignes avec des valeurs arbitraires dans pandas DataFrame
Gérer les types entiers avec des valeurs manquantes dans Pandas
Comment extraire des valeurs Null et des valeurs non Null avec des pandas
Comment générer un CSV d'en-tête multiligne avec des pandas
[Memo] Chargez le csv de s3 dans les pandas avec boto3
Animez les valeurs alpha et bêta des principales valeurs boursières mondiales avec pandas + matplotlib