[PYTHON] Visualisez les buts et les buts de la Ligue B sur une carte de chaleur

Objectif

Créez une carte thermique des buts et des buts à partir des résultats des matchs de la ligue B

heatmap

la mise en oeuvre

L'acquisition des données

Obtenez les résultats des matchs de la Ligue B sur ce site https://www.bleague.jp/schedule/?s=1&tab=1&year=2019&event=2&club=&setuFrom=1

Utilisez le sélénium de Python Les résultats de l'acquisition sont résumés en pandas.

résultat

データ取得DF

Façonner

Distribution des scores d'étiquetage

Étant donné que le basket-ball a un éventail de points plus large que le football et le baseball, nous allons créer une table de distribution séparée par 10 points.

Ajouter une colonne de classe de notation faisant référence à cet article https://qiita.com/kshigeru/items/bfa8c11d1e6487c791d3

python


labels = [ "{0} - {1}".format(i, i + 9) for i in range(40, 200, 10) ]
df['Distribution des scores à domicile'] = pd.cut(df['Score à domicile'], np.arange(40, 201, 10), labels=labels)
df['Distribution des scores à l'extérieur'] = pd.cut(df['Score à l'extérieur'], np.arange(40, 201, 10), labels=labels)

Étiquetez 40 à 200 points avec 10 points. NaN est défini pour ceux en dehors de la plage

résultat

得点頒布のラベル付けDF

Regroupement par domicile / extérieur

Comme on peut s'attendre à ce qu'il y ait une différence entre le record à domicile et le record à l'extérieur, Créez une carte de chaleur pour les batailles à domicile, une carte de chaleur pour les batailles à l'extérieur et une carte de chaleur pour toutes les batailles.

python


for team in teamList:
    teamHomeDf = df.query('domicile== @team')
    teamAweyDf = df.query('Une façon== @team')
    teamDf = pd.concat([teamHomeDf, teamAweyDf])

La teamList contient les noms des équipes de toutes les équipes

résultat

グルーピングDF

Création de données pour la carte thermique

Formatez les données comme indiqué pour créer une carte thermique ヒートマップ用のデータ作成DF

python


distributionDf = teamHomeDf.groupby(['Distribution des scores à domicile', 'Distribution des scores à l'extérieur'])
distributionDf = distributionDf.size().unstack()
distributionDf = distributionDf.fillna(0)

cols = distributionDf.columns
indexs = distributionDf.index

for index in indexs:
	for col in cols:
		allDf.at[index, col] = round(distributionDf.at[index, col] / total, 2)

plt.figure(figsize=(8, 8))
sns.heatmap(allDf, annot = True, cmap = color, vmin = 0, square = True)
if not os.path.exists(path):
	os.makedirs(path)
plt.savefig(path + '/' + fileNm)
plt.close('all')

Définissez les données comme indiqué dans la figure dans allDf. allDf

production

Génère une carte thermique basée sur les données formatées Cliquez ici pour la carte thermique https://note.nkmk.me/python-seaborn-heatmap/ https://matplotlib.org/tutorials/colors/colormaps.html

python


plt.figure(figsize=(8, 8))
sns.heatmap(allDf, annot = True, cmap = 'hot', vmin = 0, square = True)
if not os.path.exists(path):
	os.makedirs(path)
plt.savefig(path + '/' + fileNm)
plt.close('all')

Carte thermique de sortie

allDf

Recommended Posts

Visualisez les buts et les buts de la Ligue B sur une carte de chaleur
Visualisez et comprenez le maillage régional du Japon sur une carte
Folium: Visualisez les données sur une carte avec Python
Visualiser grib2 sur une carte avec python (matplotlib)
Python a + = b et a = a + b sont différents
Visualisez les préfectures avec de nombreux itinéraires par préfecture sur une carte du Japon
[Python] renvoie A [ou / et] B
Un mémo contenant Python2.7 et Python3 dans CentOS
Carte des informations de location sur une carte avec python
Créer une carte Web en utilisant Python et GDAL
python memo- "sinon A et B" était "si (pas A) et B"
[Rails] Comment afficher plusieurs marqueurs sur Google Map et afficher une bulle lorsque vous cliquez dessus