import pandas as pd
from bokeh.layouts import gridplot
from bokeh.plotting import figure, show, output_file
from bokeh.charts import Bar, BoxPlot
import numpy as np
import bokeh.plotting as bk
bk.output_notebook()
def create_plot(title, hist, edges, fill_color="#00BCD4"):
"""Create a plot object.
Keyword arguments:
title -- A caption of plot.
hist --
edges --
"""
plot = figure(title=title,tools="save", background_fill_color="#E8DDCB")
plot.quad(top=hist, bottom=0, left=edges[:-1], right=edges[1:], fill_color=fill_color, line_color="#424242")
return plot
def show_single_plot(plot, width=400, heigh=400):
"""Show a plot.
Keyword arguments:
plot -- plot object
"""
show(gridplot(plot, ncols=1, plot_width=width, plot_height=heigh, toolbar_location=None))
df = pd.read_csv("data/j1/J1_2015_results.csv", index_col=0).drop("TV放送", axis=1)
scores = df["スコア"].str.split('-', expand=True).astype(int)
scores.columns = ("HG", "AG")
j1_result = pd.concat([df, scores], axis=1)
j1_result.head()
年度 | 大会 | 節 | 試合日 | K/O時刻 | ホーム | スコア | アウェイ | スタジアム | 入場者数 | HG | AG | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2015 | J1 1st | 第1節第1日 | 03/07(土) | 14:04 | 名古屋 | 3-3 | 松本 | 豊田ス | 33558 | 3 | 3 |
1 | 2015 | J1 1st | 第1節第1日 | 03/07(土) | 14:04 | G大阪 | 2-2 | FC東京 | 万博 | 18332 | 2 | 2 |
2 | 2015 | J1 1st | 第1節第1日 | 03/07(土) | 14:04 | 広島 | 2-0 | 甲府 | Eスタ | 14671 | 2 | 0 |
3 | 2015 | J1 1st | 第1節第1日 | 03/07(土) | 14:05 | 鳥栖 | 2-1 | 新潟 | ベアスタ | 11580 | 2 | 1 |
4 | 2015 | J1 1st | 第1節第1日 | 03/07(土) | 14:05 | 仙台 | 2-0 | 山形 | ユアスタ | 19375 | 2 | 0 |
j1_result.describe()
年度 | 入場者数 | HG | AG | |
---|---|---|---|---|
count | 306.0 | 306.000000 | 306.000000 | 306.000000 |
mean | 2015.0 | 17802.620915 | 1.411765 | 1.267974 |
std | 0.0 | 8469.527931 | 1.315877 | 1.122097 |
min | 2015.0 | 6100.000000 | 0.000000 | 0.000000 |
25% | 2015.0 | 12376.500000 | 0.000000 | 0.000000 |
50% | 2015.0 | 15588.000000 | 1.000000 | 1.000000 |
75% | 2015.0 | 20165.250000 | 2.000000 | 2.000000 |
max | 2015.0 | 53148.000000 | 7.000000 | 6.000000 |
j1_result[(j1_result["HG"] > 5)]
年度 | 大会 | 節 | 試合日 | K/O時刻 | ホーム | スコア | アウェイ | スタジアム | 入場者数 | HG | AG | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
169 | 2015 | J1 2nd | 第2節第1日 | 07/15(水) | 19:04 | 広島 | 6-0 | 松本 | Eスタ | 7966 | 6 | 0 |
228 | 2015 | J1 2nd | 第9節第1日 | 08/29(土) | 19:04 | 神戸 | 7-1 | 鳥栖 | 神戸ユ | 14637 | 7 | 1 |
246 | 2015 | J1 2nd | 第11節第1日 | 09/19(土) | 19:04 | 川崎F | 6-1 | 名古屋 | 等々力 | 20238 | 6 | 1 |
j1_result[(j1_result["入場者数"] > 40000)]
年度 | 大会 | 節 | 試合日 | K/O時刻 | ホーム | スコア | アウェイ | スタジアム | 入場者数 | HG | AG | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
14 | 2015 | J1 1st | 第2節第2日 | 03/14(土) | 15:04 | 浦和 | 1-0 | 山形 | 埼玉 | 40802 | 1 | 0 |
73 | 2015 | J1 1st | 第9節第1日 | 05/02(土) | 14:03 | 浦和 | 1-0 | G大阪 | 埼玉 | 53148 | 1 | 0 |
76 | 2015 | J1 1st | 第9節第1日 | 05/02(土) | 16:04 | FC東京 | 2-1 | 川崎F | 味スタ | 42604 | 2 | 1 |
94 | 2015 | J1 1st | 第11節第1日 | 05/10(日) | 16:04 | FC東京 | 0-1 | 鹿島 | 味スタ | 42070 | 0 | 1 |
103 | 2015 | J1 1st | 第12節第2日 | 05/16(土) | 15:34 | 浦和 | 4-1 | FC東京 | 埼玉 | 42995 | 4 | 1 |
113 | 2015 | J1 1st | 第13節第1日 | 05/23(土) | 19:04 | 浦和 | 2-1 | 鹿島 | 埼玉 | 41269 | 2 | 1 |
131 | 2015 | J1 1st | 第15節第1日 | 06/07(日) | 16:04 | 浦和 | 1-0 | 清水 | 埼玉 | 44424 | 1 | 0 |
147 | 2015 | J1 1st | 第17節第1日 | 06/27(土) | 19:04 | 浦和 | 5-2 | 新潟 | 埼玉 | 43606 | 5 | 2 |
150 | 2015 | J1 1st | 第17節第1日 | 06/27(土) | 19:04 | FC東京 | 3-2 | 清水 | 味スタ | 41363 | 3 | 2 |
179 | 2015 | J1 2nd | 第3節第1日 | 07/19(日) | 19:05 | 浦和 | 1-2 | 広島 | 埼玉 | 41492 | 1 | 2 |
290 | 2015 | J1 2nd | 第16節第1日 | 11/07(土) | 14:03 | 浦和 | 1-1 | 川崎F | 埼玉 | 46597 | 1 | 1 |
301 | 2015 | J1 2nd | 第17節第1日 | 11/22(日) | 13:34 | 浦和 | 5-2 | 神戸 | 埼玉 | 52133 | 5 | 2 |
304 | 2015 | J1 2nd | 第17節第1日 | 11/22(日) | 13:35 | 横浜FM | 0-0 | 松本 | 日産ス | 44226 | 0 | 0 |
hist_home, edges_home = np.histogram(j1_result["HG"], bins=8)
plot_j1_hg = create_plot("J1 2015 Home Team Goal", hist_home, edges_home, "#009688")
show_single_plot(plot_j1_hg)
p = Bar(j1_result, "HG", values="HG", agg="count", title="J1 2015 Home Team Goal" , legend="")
show_single_plot(p)
team_filer = ["浦和", "横浜FM", "広島", "鳥栖", "神戸"]
box = BoxPlot(j1_result[j1_result["ホーム"].isin(team_filer)], values='HG', label='ホーム',
title="Box Plot by Goal Count", plot_width=800, plot_height=450)
show(box)
box = BoxPlot(j1_result, values='HG', label='大会',
title="Box Plot by Goal Count", plot_width=450, plot_height=450)
show(box)
j1_result[j1_result["ホーム"] == "鳥栖"].head(10)
年度 | 大会 | 節 | 試合日 | K/O時刻 | ホーム | スコア | アウェイ | スタジアム | 入場者数 | HG | AG | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
3 | 2015 | J1 1st | 第1節第1日 | 03/07(土) | 14:05 | 鳥栖 | 2-1 | 新潟 | ベアスタ | 11580 | 2 | 1 |
16 | 2015 | J1 1st | 第2節第2日 | 03/14(土) | 18:34 | 鳥栖 | 1-0 | G大阪 | ベアスタ | 17695 | 1 | 0 |
42 | 2015 | J1 1st | 第5節第1日 | 04/12(日) | 16:04 | 鳥栖 | 1-0 | 山形 | ベアスタ | 8852 | 1 | 0 |
58 | 2015 | J1 1st | 第7節第1日 | 04/25(土) | 15:04 | 鳥栖 | 1-1 | 柏 | ベアスタ | 9242 | 1 | 1 |
80 | 2015 | J1 1st | 第9節第1日 | 05/02(土) | 19:04 | 鳥栖 | 1-1 | 神戸 | ベアスタ | 20792 | 1 | 1 |
93 | 2015 | J1 1st | 第11節第1日 | 05/10(日) | 15:04 | 鳥栖 | 1-1 | 松本 | ベアスタ | 10648 | 1 | 1 |
118 | 2015 | J1 1st | 第14節第1日 | 05/30(土) | 19:04 | 鳥栖 | 1-6 | 浦和 | ベアスタ | 19249 | 1 | 6 |
137 | 2015 | J1 1st | 第16節第1日 | 06/20(土) | 16:04 | 鳥栖 | 1-2 | FC東京 | ベアスタ | 16871 | 1 | 2 |
152 | 2015 | J1 1st | 第17節第1日 | 06/27(土) | 19:04 | 鳥栖 | 2-2 | 広島 | ベアスタ | 12376 | 2 | 2 |
162 | 2015 | J1 2nd | 第2節第1日 | 07/15(水) | 18:04 | 鳥栖 | 1-1 | 川崎F | ベアスタ | 7524 | 1 | 1 |
# Goal
df_goal_ranking = pd.read_csv("./data/j1/J1_2005_2015_goal_ranking.csv")
df_goal_ranking[(df_goal_ranking["選手名"] == "佐藤 寿人")]
年 | 順位 | 選手名 | 現所属(J最終所属) | 得点 | シュート | PK得点 | PK | 出場 | Unnamed: 8 | |
---|---|---|---|---|---|---|---|---|---|---|
3 | 2005 | 3 | 佐藤 寿人 | サンフレッチェ広島 | 18 | 65 | 0 | 0 | 32 | NaN |
35 | 2006 | 4 | 佐藤 寿人 | サンフレッチェ広島 | 18 | 78 | 0 | 0 | 33 | NaN |
75 | 2007 | 12 | 佐藤 寿人 | サンフレッチェ広島 | 12 | 65 | 0 | 0 | 34 | NaN |
136 | 2009 | 4 | 佐藤 寿人 | サンフレッチェ広島 | 15 | 75 | 0 | 0 | 34 | NaN |
177 | 2010 | 15 | 佐藤 寿人 | サンフレッチェ広島 | 10 | 56 | 2 | 2 | 27 | NaN |
212 | 2011 | 14 | 佐藤 寿人 | サンフレッチェ広島 | 11 | 74 | 3 | 3 | 33 | NaN |
230 | 2012 | 1 | 佐藤 寿人 | サンフレッチェ広島 | 22 | 84 | 3 | 4 | 34 | NaN |
271 | 2013 | 7 | 佐藤 寿人 | サンフレッチェ広島 | 17 | 66 | 2 | 2 | 34 | NaN |
308 | 2014 | 10 | 佐藤 寿人 | サンフレッチェ広島 | 11 | 52 | 2 | 4 | 29 | NaN |
346 | 2015 | 7 | 佐藤 寿人 | サンフレッチェ広島 | 12 | 40 | 0 | 0 | 34 | NaN |
# 2008 J2 Goal Ranking
df_j2_2008_goal_ranking = pd.read_csv("./data/j2/J2_2008_goal_ranking.csv", index_col=0)
df_j2_2008_goal_ranking.head(10)
順位 | 選手名 | 現所属(J最終所属) | 得点 | シュート | PK得点 | PK | 出場 | Unnamed: 8 | |
---|---|---|---|---|---|---|---|---|---|
0 | 1 | 佐藤 寿人 | サンフレッチェ広島 | 28 | 132 | 1 | 1 | 40 | NaN |
1 | 2 | 高橋 泰 | ロアッソ熊本 | 19 | 122 | 1 | 1 | 42 | NaN |
2 | 3 | 石原 直樹 | 湘南ベルマーレ | 18 | 74 | 0 | 0 | 41 | NaN |
3 | 3 | 藤田 祥史 | サガン鳥栖 | 18 | 104 | 2 | 2 | 38 | NaN |
4 | 5 | 荒田 智之 | 水戸ホーリーホック | 17 | 117 | 1 | 1 | 42 | NaN |
5 | 6 | アンデルソン | 横浜FC | 16 | 58 | 4 | 4 | 36 | NaN |
6 | 6 | 小松 塁 | セレッソ大阪 | 16 | 73 | 0 | 0 | 32 | NaN |
7 | 6 | 香川 真司 | セレッソ大阪 | 16 | 90 | 0 | 0 | 35 | NaN |
8 | 9 | 森﨑 浩司 | サンフレッチェ広島 | 14 | 82 | 1 | 2 | 40 | NaN |
9 | 9 | 髙萩 洋次郎 | サンフレッチェ広島 | 14 | 73 | 0 | 0 | 38 | NaN |
p = Bar(df_j2_2008_goal_ranking.head(15), "選手名", values="得点", agg="sum", title="J2 2008 Goal Ranking" , legend="")
show_single_plot(p, 800, 500)
# 2008 J2 Results
df_j2_2008 = pd.read_csv("./data/j2/J2_2008_result.tsv", delimiter="\t")
df_j2_2008.head(10)
順位 | クラブ名 | 勝点 | 勝 | 分 | 負 | 得点 | 失点 | 差 | |
---|---|---|---|---|---|---|---|---|---|
0 | 1 | サンフレッチェ広島 | 100 | 31 | 7 | 4 | 99 | 35 | 64 |
1 | 2 | モンテディオ山形 | 78 | 23 | 9 | 10 | 66 | 40 | 26 |
2 | 3 | ベガルタ仙台 | 70 | 18 | 16 | 8 | 62 | 47 | 15 |
3 | 4 | セレッソ大阪 | 69 | 21 | 6 | 15 | 81 | 60 | 21 |
4 | 5 | 湘南ベルマーレ | 65 | 19 | 8 | 15 | 68 | 48 | 20 |
5 | 6 | サガン鳥栖 | 64 | 19 | 7 | 16 | 50 | 51 | -1 |
6 | 7 | ヴァンフォーレ甲府 | 59 | 15 | 14 | 13 | 56 | 47 | 9 |
7 | 8 | アビスパ福岡 | 58 | 15 | 13 | 14 | 55 | 66 | -11 |
8 | 9 | ザスパ草津 | 53 | 13 | 14 | 15 | 45 | 52 | -7 |
9 | 10 | 横浜FC | 50 | 11 | 17 | 14 | 51 | 56 | -5 |
p = Bar(df_j2_2008, "クラブ名", values="勝点", agg="sum", title="J2 2008 Goal Ranking" , legend="")
show_single_plot(p, 800, 500)
df_goal_ranking[df_goal_ranking["年"] == 2005].head(15)
年 | 順位 | 選手名 | 現所属(J最終所属) | 得点 | シュート | PK得点 | PK | 出場 | Unnamed: 8 | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 2005 | 1 | アラウージョ | ガンバ大阪 | 33 | 135 | 0 | 0 | 33 | NaN |
1 | 2005 | 2 | ワシントン | 東京ヴェルディ1969 | 22 | 102 | 5 | 7 | 33 | NaN |
2 | 2005 | 3 | エジミウソン | アルビレックス新潟 | 18 | 89 | 1 | 1 | 33 | NaN |
3 | 2005 | 3 | 佐藤 寿人 | サンフレッチェ広島 | 18 | 65 | 0 | 0 | 32 | NaN |
4 | 2005 | 3 | マグノ アウベス | 大分トリニータ | 18 | 100 | 2 | 3 | 33 | NaN |
5 | 2005 | 6 | ジュニーニョ | 川崎フロンターレ | 16 | 115 | 2 | 4 | 31 | NaN |
6 | 2005 | 6 | 大黒 将志 | ガンバ大阪 | 16 | 125 | 0 | 0 | 31 | NaN |
7 | 2005 | 8 | アレックス ミネイロ | 鹿島アントラーズ | 15 | 66 | 0 | 0 | 27 | NaN |
8 | 2005 | 9 | カレン ロバート | ジュビロ磐田 | 13 | 52 | 0 | 0 | 31 | NaN |
9 | 2005 | 10 | 阿部 勇樹 | ジェフユナイテッド千葉 | 12 | 77 | 5 | 5 | 33 | NaN |
10 | 2005 | 10 | 巻 誠一郎 | ジェフユナイテッド千葉 | 12 | 45 | 0 | 0 | 33 | NaN |
11 | 2005 | 10 | 前田 遼一 | ジュビロ磐田 | 12 | 50 | 0 | 0 | 25 | NaN |
12 | 2005 | 13 | 小笠原 満男 | 鹿島アントラーズ | 11 | 67 | 2 | 3 | 30 | NaN |
13 | 2005 | 14 | 野沢 拓也 | 鹿島アントラーズ | 10 | 45 | 0 | 0 | 28 | NaN |
14 | 2005 | 14 | 遠藤 保仁 | ガンバ大阪 | 10 | 64 | 4 | 4 | 33 | NaN |