[PYTHON] Il semble qu'une nouvelle loterie avec un score total commencera dans la loterie sportive,

Contexte

Type Correspondance cible Type de vote probabilité %
BIG 14 1,0,2 1/4,782,969 0.00000020907
MEGA BIG 12 1,2,3,4 1/16,777,216 0.0000000596

Sujet principal

Flux de processus

  1. Récupérez les données de la page calendrier / résultats de Jleague Data Site de 2014 à 2019
  2. Lisez le fichier CSV obtenu en 1) et créez un DataFrame.
  3. De plus, créez un DataFrame séparé pour J1, J2 et J3 uniquement.
  4. Créez 4 graphiques avec matplotlib.
  5. Agréger le «score total» à 1 point ou moins, 2 points, 3 points, 4 points ou plus de «MEGA BIG».
  6. Faites un graphique des résultats agrégés.

code

① Obtenez les données de la page calendrier / résultats de Jleague Data Site de 2014 à 2019

Année Tournoi Section Jour du match Heure K / O Accueil Score Absent Stade Participants émission de télévision
0 2014 J1 Section 1 Jour 1 03/01 (samedi) 14:04 C Osaka 0-1 Hiroshima Yanmar 37079 Scaper! / Scaper! Service premium / synthèse NHK
1 2014 J1 Section 1 Jour 1 03/01 (samedi) 14:04 Nagoya 2-3 Shimizu Toyoda Su 21657 Scaper! / Scaper! Service Premium / NHK Nagoya / NHK Shizuoka
2 2014 J1 Section 1 Jour 1 03/01 (samedi) 14:05 Torisu 5-0 Tokushima Beasta 14296 Scaper! / Scaper! Service Premium / NHK Tokushima / NHK Saga
3 2014 J1 Section 1 Jour 1 03/01 (samedi) 14:05 Kofu 0-4 Kashima National 13809 Scaper! / Scaper! Service Premium / NHK Kofu / NHK Mito
4 2014 J1 Section 1 Jour 1 03/01 (samedi) 14:05 Sendai 1-2 Niigata Votresta 15852 Scaper! / Scaper! Service Premium / NHK Sendai / NHK Niigata

(2) Lisez le fichier CSV obtenu en (1) et créez un DataFrame.

col_name = ['année','Tournoi','section','Jour de match','K/O temps','domicile','But','Une façon','Stade','Visiteurs','Diffusion TV']
results = pd.DataFrame(index=[], columns=col_name)

for f in files:
    tmp_data = pd.read_csv(f, sep=',', encoding='utf-8')
    results = results.append(tmp_data, ignore_index=True, sort=False)

③ De plus, créez DataFrame séparément pour J1, J2 et J3 uniquement.

#Score total des données pour J1, J2 et J3 uniquement
score_J1 = score_data[score_data['Tournoi'] == 'J1']
idx_J1 = sorted(score_J1['Score total'].unique())
scoreJ1 = pd.DataFrame({'Score total':idx_J1, 'cnt':score_J1['Score total'].value_counts()}, index=idx_J1)
scoreJ1 = scoreJ1.reset_index().drop('index', axis=1)

score_J2 = score_data[score_data['Tournoi'] == 'J2']
idx_J2 = sorted(score_J2['Score total'].unique())
scoreJ2 = pd.DataFrame({'Score total':idx_J2, 'cnt':score_J2['Score total'].value_counts()}, index=idx_J2)
scoreJ2 = scoreJ2.reset_index().drop('index', axis=1)

score_J3 = score_data[score_data['Tournoi'] == 'J3']
idx_J3 = sorted(score_J3['Score total'].unique())
scoreJ3 = pd.DataFrame({'Score total':idx_J3, 'cnt':score_J3['Score total'].value_counts()}, index=idx_J3)
scoreJ3 = scoreJ3.reset_index().drop('index', axis=1)

④ Créez 4 graphiques avec matplotlib.

#Graph J1, J2, J3 et le tout
fig = plt.figure(figsize=(16,9),dpi=144)
fig.subplots_adjust(hspace=0.4)

#Paramètres de style de graphique d'origine
plt.style.use("mystyle")
plt.rcParams["font.family"] = "IPAexGothic"

#Pour stocker des objets graphiques
axes = []
score_list = [scoreJ1['Score total'], scoreJ2['Score total'], scoreJ3['Score total'], score_all['Score total']]
cnt_list = [scoreJ1['cnt'], scoreJ2['cnt'], scoreJ3['cnt'], score_all['cnt']]
cat_list = ['J1', 'J2', 'J3', 'ALL']

#Parcourez 4 graphiques de J1, J2, J3, ALL
for i in range(4):
    axes.append(fig.add_subplot(4,1,i+1))
    axes[i].bar(score_list[i], cnt_list[i])
    [axes[i].text(score_list[i][s], cnt_list[i][s]+25, str(score), size=12, color='r', ha='center') for s, score in enumerate(cnt_list[i])]
    axes[i].set_xticks(np.arange(0,16,1))
    axes[i].set_ylabel(cat_list[i])
    axes[i].set_ylim(0,1500)
    axes[i].text(15-1, 1500-200, 'n:'+str(sum(cnt_list[i])))

plt.xlabel('Score total')

txt1 = 'J'ai essayé de visualiser le score total du match dans la J League.'
fig.text(.05, .9, txt1, fontsize=32, horizontalalignment="left")
txt2 = "Source: site de données JLeague"
fig.text(.9, .05, txt2, fontsize=14, horizontalalignment="right")

plt.savefig('./img/score.png')
plt.show()
score.png

⑤ Ajoutez la colonne "Mega" à "Score total" avec 1 point ou moins, 2 points, 3 points, 4 points ou plus de "MEGA BIG"

#Faire une classification de score MEGA
def mega(df):
    if df in (2, 3):
        return df
    elif df <= 1:
        return 1
    elif df >=4:
        return 4

score_data['Mega'] = score_data['Score total'].apply(mega)

⑥ Faites un graphique des résultats agrégés. mega_plot.png

Résumé

Recommended Posts

Il semble qu'une nouvelle loterie avec un score total commencera dans la loterie sportive,
[Python] Ne laissez que les éléments commençant par une chaîne de caractères spécifique dans le tableau
Langage de programmation dont les jeunes auront besoin à l'avenir
[Python] Un programme qui arrondit le score
Nombre de mots qui ne compte que les mots commençant par une majuscule en python
J'ai essayé de prédire les chevaux qui seront dans le top 3 avec LightGBM
Si vous les gars dans la cuisine de portée pouvez le faire avec une marge ~ ♪
Un modèle qui identifie la guitare avec fast.ai
[Python] Récupérez les fichiers dans le dossier avec Python
Créer une nouvelle page en confluence avec Python
mecab-python3 semble avoir besoin de unique-lite
L'histoire qui s'inscrit dans l'installation de pip
[Selenium] Ouvrez le lien dans un nouvel onglet et déplacez-le [Pilote Python / Chrome]
Créez un indicateur dans les paramètres qui seront True uniquement lors du test avec Django
Une histoire qui a eu du mal avec l'ensemble commun HTTP_PROXY = ~
Tâches au démarrage d'un nouveau projet python
Un serveur qui renvoie le nombre de personnes devant la caméra avec bottle.py et OpenCV
À propos du cas où elle est devenue une police chinoise après la mise à jour avec Linux (méthode de correction)
Obtenez de manière récursive la liste Excel dans un dossier spécifique avec python et écrivez-la dans Excel.
Une histoire qui rend le débogage de modèle plus facile à voir dans l'environnement Django + SQLAlchemy
[VLC] Comment gérer le problème de ne pas être au premier plan pendant la lecture