[PYTHON] Es scheint, dass eine neue Lotterie mit einer Gesamtpunktzahl in der Sportlotterie beginnen wird.

Hintergrund

Art Zielübereinstimmung Abstimmungsart Wahrscheinlichkeit %
BIG 14 1,0,2 1/4,782,969 0.00000020907
MEGA BIG 12 1,2,3,4 1/16,777,216 0.0000000596

Hauptthema

Prozessablauf

  1. Holen Sie sich von 2014 bis 2019 Daten von der Zeitplan- / Ergebnisseite der Jleague Data Site
  2. Lesen Sie die in 1) erhaltene CSV-Datei und erstellen Sie einen "DataFrame".
  3. Erstellen Sie außerdem einen separaten "DataFrame" nur für J1, J2 und J3.
  4. Erstellen Sie 4 Diagramme mit matplotlib.
  5. Aggregieren Sie die "Gesamtpunktzahl" auf 1 Punkt oder weniger, 2 Punkte, 3 Punkte, 4 Punkte oder mehr von "MEGA BIG".
  6. Machen Sie ein Diagramm der aggregierten Ergebnisse.

Code

① Rufen Sie von 2014 bis 2019 Daten von der Zeitplan- / Ergebnisseite der Jleague Data Site ab

Jahr Turnier Abschnitt Spieltag K / O-Zeit Home Punktzahl Away Stadion Teilnehmer Fernsehsendung
0 2014 J1 Abschnitt 1 Tag 1 03/01 (Sa) 14:04 C Osaka 0-1 Hiroshima Yanmar 37079 Scaper! / Scaper! Premium-Service / NHK-Synthese
1 2014 J1 Abschnitt 1 Tag 1 03/01 (Sa) 14:04 Nagoya 2-3 Shimizu Toyoda Su 21657 Scaper! / Scaper! Premium Service / NHK Nagoya / NHK Shizuoka
2 2014 J1 Abschnitt 1 Tag 1 03/01 (Sa) 14:05 Torisu 5-0 Tokushima Beasta 14296 Scaper! / Scaper! Premium Service / NHK Tokushima / NHK Saga
3 2014 J1 Abschnitt 1 Tag 1 03/01 (Sa) 14:05 Kofu 0-4 Kashima National 13809 Scaper! / Scaper! Premium Service / NHK Kofu / NHK Mito
4 2014 J1 Abschnitt 1 Tag 1 03/01 (Sa) 14:05 Sendai 1-2 Niigata Yoursta 15852 Scaper! / Scaper! Premium Service / NHK Sendai / NHK Niigata

(2) Lesen Sie die in (1) erhaltene CSV-Datei und erstellen Sie einen "DataFrame".

col_name = ['Jahr','Turnier','Sektion','Spieltag','K/O Zeit','Zuhause','Ergebnis','Weg','Stadion','Besucher','Fernsehübertragung']
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)

③ Erstellen Sie außerdem "DataFrame" separat nur für J1, J2 und J3.

#Gesamtpunktzahl der Daten nur für J1, J2 und J3
score_J1 = score_data[score_data['Turnier'] == 'J1']
idx_J1 = sorted(score_J1['Gesamtpunktzahl'].unique())
scoreJ1 = pd.DataFrame({'Gesamtpunktzahl':idx_J1, 'cnt':score_J1['Gesamtpunktzahl'].value_counts()}, index=idx_J1)
scoreJ1 = scoreJ1.reset_index().drop('index', axis=1)

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

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

④ Erstellen Sie 4 Diagramme mit matplotlib.

#Grafik J1, J2, J3 und das Ganze
fig = plt.figure(figsize=(16,9),dpi=144)
fig.subplots_adjust(hspace=0.4)

#Ursprüngliche Einstellungen für den Grafikstil
plt.style.use("mystyle")
plt.rcParams["font.family"] = "IPAexGothic"

#Zum Speichern von Diagrammobjekten
axes = []
score_list = [scoreJ1['Gesamtpunktzahl'], scoreJ2['Gesamtpunktzahl'], scoreJ3['Gesamtpunktzahl'], score_all['Gesamtpunktzahl']]
cnt_list = [scoreJ1['cnt'], scoreJ2['cnt'], scoreJ3['cnt'], score_all['cnt']]
cat_list = ['J1', 'J2', 'J3', 'ALL']

#Durchlaufen Sie 4 Diagramme von 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('Gesamtpunktzahl')

txt1 = 'Ich habe versucht, die Gesamtpunktzahl des Spiels in der J League zu visualisieren.'
fig.text(.05, .9, txt1, fontsize=32, horizontalalignment="left")
txt2 = "Quelle: JLeague Data Site"
fig.text(.9, .05, txt2, fontsize=14, horizontalalignment="right")

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

⑤ Fügen Sie der "Gesamtpunktzahl" die Spalte "Mega" mit 1 Punkt oder weniger, 2 Punkten, 3 Punkten, 4 Punkten oder mehr von "MEGA BIG" hinzu.

#Machen Sie eine MEGA-Score-Klassifizierung
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['Gesamtpunktzahl'].apply(mega)

⑥ Erstellen Sie ein Diagramm der aggregierten Ergebnisse. mega_plot.png

Zusammenfassung

Recommended Posts

Es scheint, dass eine neue Lotterie mit einer Gesamtpunktzahl in der Sportlotterie beginnen wird.
[Python] Lassen Sie nur Elemente im Array, die mit einer bestimmten Zeichenfolge beginnen
Programmiersprache, die junge Menschen in Zukunft brauchen werden
[Python] Ein Programm, das die Partitur rundet
Wortanzahl, die nur Wörter zählt, die mit einem Großbuchstaben in Python beginnen
Ich habe versucht, die Pferde vorherzusagen, die mit LightGBM unter den Top 3 sein werden
Wenn ihr in der Scope-Küche das mit einem Rand machen könnt ~ ♪
Ein Modell, das die Gitarre mit fast.ai identifiziert
[Python] Holen Sie sich die Dateien mit Python in den Ordner
Erstellen Sie eine neue Seite im Zusammenfluss mit Python
mecab-python3 scheint unique-lite zu benötigen
Die Geschichte, die zur Installation von Pip passt
[Selen] Öffnen Sie den Link in einem neuen Tab und verschieben Sie ihn [Python / Chrome-Treiber]
Erstellen Sie ein Flag in den Einstellungen, das nur beim Testen mit Django True ist
Die Geschichte, eine harte Zeit mit der gemeinsamen Menge HTTP_PROXY = ~ zu haben
Aufgaben zu Beginn eines neuen Python-Projekts
Ein Server, der mit Flasche.py und OpenCV die Anzahl der Personen vor der Kamera zurückgibt
Über den Fall, dass es nach dem Update mit Linux eine chinesische Schriftart wurde (Korrekturmethode)
Rufen Sie die Excel-Liste rekursiv in einem bestimmten Ordner mit Python ab und schreiben Sie sie in Excel.
Eine Geschichte, die das Debuggen von Modellen in der Django + SQLAlchemy-Umgebung einfacher macht
[VLC] Wie man mit dem Problem umgeht, dass es während der Wiedergabe nicht im Vordergrund steht