{
"metadata": {
"nikola": {
"category": "",
"date": "2015-10-21 08:02:09 UTC+01:00",
"description": "",
"link": "",
"slug": "epl-17-19-october-2015",
"tags": "",
"title": "EPL 17-19 October 2015",
"type": "text"
},
"signature": "sha256:9bdff7bba2689f99a5fe6a8e44de0526de85efcad3ce1ad1fc35ca578d701ae3"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# EPL 3-4th October 2015\n",
"\n",
"A brief look at the shot statistics which underlay the weekend's games. Teams of course had an extended break due to the international weekend."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%matplotlib inline\n",
"import league_analysis\n",
"from IPython.display import display, HTML\n",
"epl = league_analysis.epl\n",
"weekend_matches = league_analysis.get_matches(epl, '17/10/2015', '19/10/2015')\n",
"league_analysis.display_given_matches(weekend_matches)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"
\n",
"
\n",
" | Home | Away |
\n",
" Team | Chelsea | Aston Villa |
\n",
" Goals | 2 | 0 |
\n",
" Shots | 9 | 8 |
\n",
" SOT | 3 | 1 |
\n",
" \n",
"
\n",
"
\n",
"\n",
"
\n",
" | Home | Away |
\n",
" Team | Crystal Palace | West Ham |
\n",
" Goals | 1 | 3 |
\n",
" Shots | 6 | 24 |
\n",
" SOT | 1 | 4 |
\n",
" \n",
"
\n",
"
\n",
"\n",
"
\n",
" | Home | Away |
\n",
" Team | Everton | Man United |
\n",
" Goals | 0 | 3 |
\n",
" Shots | 12 | 10 |
\n",
" SOT | 3 | 7 |
\n",
" \n",
"
\n",
"
\n",
"\n",
"
\n",
" | Home | Away |
\n",
" Team | Man City | Bournemouth |
\n",
" Goals | 5 | 1 |
\n",
" Shots | 15 | 5 |
\n",
" SOT | 11 | 1 |
\n",
" \n",
"
\n",
"
\n",
"\n",
"
\n",
" | Home | Away |
\n",
" Team | Southampton | Leicester |
\n",
" Goals | 2 | 2 |
\n",
" Shots | 14 | 26 |
\n",
" SOT | 6 | 7 |
\n",
" \n",
"
\n",
"
\n",
"\n",
"
\n",
" | Home | Away |
\n",
" Team | Tottenham | Liverpool |
\n",
" Goals | 0 | 0 |
\n",
" Shots | 13 | 12 |
\n",
" SOT | 4 | 3 |
\n",
" \n",
"
\n",
"
\n",
"\n",
"
\n",
" | Home | Away |
\n",
" Team | Watford | Arsenal |
\n",
" Goals | 0 | 3 |
\n",
" Shots | 8 | 17 |
\n",
" SOT | 1 | 6 |
\n",
" \n",
"
\n",
"
\n",
"\n",
"
\n",
" | Home | Away |
\n",
" Team | West Brom | Sunderland |
\n",
" Goals | 1 | 0 |
\n",
" Shots | 8 | 9 |
\n",
" SOT | 1 | 2 |
\n",
" \n",
"
\n",
"
\n",
"\n",
"
\n",
" | Home | Away |
\n",
" Team | Newcastle | Norwich |
\n",
" Goals | 6 | 2 |
\n",
" Shots | 11 | 18 |
\n",
" SOT | 6 | 6 |
\n",
" \n",
"
\n",
"
\n",
"\n",
"
\n",
" | Home | Away |
\n",
" Team | Swansea | Stoke |
\n",
" Goals | 0 | 1 |
\n",
" Shots | 14 | 9 |
\n",
" SOT | 2 | 2 |
\n",
" \n",
"
\n",
"
"
],
"metadata": {},
"output_type": "display_data",
"text": [
""
]
}
],
"prompt_number": 1
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Chelsea 2-0 Aston Villa\n",
"\n",
"Chelsea sure needed this. It's not a particularly dominant home victory, particularly against Aston Villa who have not been posting stellar numbers so far.\n",
"\n",
"# Crystal Palace 1-3 West Ham\n",
"\n",
"Something of a surprise and this no doubt now has a lot of the statistics people scratching their heads. I for one have been very bearish on West Ham, concluding that they have been very lucky and in particular away from home. But this was away from home and very well deserved victory. They had the second most total shots of the weekend after Leicester:\n",
"\n",
""
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"league_analysis.rank_teams_single_matches(weekend_matches, 'shots')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"Position | Team | shots |
---|
1 | Leicester | 26 |
\n",
"2 | West Ham | 24 |
\n",
"3 | Norwich | 18 |
\n",
"4 | Arsenal | 17 |
\n",
"5 | Man City | 15 |
\n",
"6 | Southampton | 14 |
\n",
"- | Swansea | 14 |
\n",
"8 | Tottenham | 13 |
\n",
"9 | Everton | 12 |
\n",
"- | Liverpool | 12 |
\n",
"11 | Newcastle | 11 |
\n",
"12 | Man United | 10 |
\n",
"13 | Chelsea | 9 |
\n",
"- | Sunderland | 9 |
\n",
"- | Stoke | 9 |
\n",
"16 | Aston Villa | 8 |
\n",
"- | Watford | 8 |
\n",
"- | West Brom | 8 |
\n",
"19 | Crystal Palace | 6 |
\n",
"20 | Bournemouth | 5 |
"
],
"metadata": {},
"output_type": "display_data",
"text": [
""
]
}
],
"prompt_number": 2
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"They also had the best total shots ratio for the weekend:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"league_analysis.rank_teams_single_matches(weekend_matches, 'tsr')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"Position | Team | tsr |
---|
1 | West Ham | 0.8 |
\n",
"2 | Man City | 0.75 |
\n",
"3 | Arsenal | 0.68 |
\n",
"4 | Leicester | 0.65 |
\n",
"5 | Norwich | 0.6206896551724138 |
\n",
"6 | Swansea | 0.6086956521739131 |
\n",
"7 | Everton | 0.5454545454545454 |
\n",
"8 | Chelsea | 0.5294117647058824 |
\n",
"- | Sunderland | 0.5294117647058824 |
\n",
"10 | Tottenham | 0.52 |
\n",
"11 | Liverpool | 0.48 |
\n",
"12 | Aston Villa | 0.47058823529411764 |
\n",
"- | West Brom | 0.47058823529411764 |
\n",
"14 | Man United | 0.45454545454545453 |
\n",
"15 | Stoke | 0.391304347826087 |
\n",
"16 | Newcastle | 0.3793103448275862 |
\n",
"17 | Southampton | 0.35 |
\n",
"18 | Watford | 0.32 |
\n",
"19 | Bournemouth | 0.25 |
\n",
"20 | Crystal Palace | 0.2 |
"
],
"metadata": {},
"output_type": "display_data",
"text": [
""
]
}
],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To see just how dominant a tsr of 0.8 is, we look at matches so far within the league in which a team has recorded a total shots ratio of 0.8 or more. There have only been 4 such matches. Twice Newcastle have been on the recieving end. Incredibly West Ham have been both on the receiving end and, are now, the team dishing out the shots."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"matches_so_far = league_analysis.get_matches(epl, '01/08/2015', '19/10/2015')\n",
"high_tsr_matches = (m for m in matches_so_far if m.home_tsr >= 0.8 or m.away_tsr >= 0.8)\n",
"league_analysis.display_given_matches(high_tsr_matches)\n",
"display(HTML('There have been {0} matches in total'.format(len(matches_so_far))))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"\n",
"
\n",
" | Home | Away |
\n",
" Team | Swansea | Newcastle |
\n",
" Goals | 2 | 0 |
\n",
" Shots | 19 | 4 |
\n",
" SOT | 6 | 2 |
\n",
" \n",
"
\n",
"
\n",
"\n",
"
\n",
" | Home | Away |
\n",
" Team | Newcastle | Arsenal |
\n",
" Goals | 0 | 1 |
\n",
" Shots | 1 | 22 |
\n",
" SOT | 0 | 9 |
\n",
" \n",
"
\n",
"
\n",
"\n",
"
\n",
" | Home | Away |
\n",
" Team | Man City | West Ham |
\n",
" Goals | 1 | 2 |
\n",
" Shots | 27 | 6 |
\n",
" SOT | 8 | 3 |
\n",
" \n",
"
\n",
"
\n",
"\n",
"
\n",
" | Home | Away |
\n",
" Team | Crystal Palace | West Ham |
\n",
" Goals | 1 | 3 |
\n",
" Shots | 6 | 24 |
\n",
" SOT | 1 | 4 |
\n",
" \n",
"
\n",
"
"
],
"metadata": {},
"output_type": "display_data",
"text": [
""
]
},
{
"html": [
"There have been 90 matches in total"
],
"metadata": {},
"output_type": "display_data",
"text": [
""
]
}
],
"prompt_number": 4
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This week it wasn't just the shots but the shots on target. For this West Ham were third best in the league this weekend, behind the title contenders Manchester City and (yes) Arsenal."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"league_analysis.rank_teams_single_matches(weekend_matches, 'sotr')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"Position | Team | sotr |
---|
1 | Man City | 0.9166666666666666 |
\n",
"2 | Arsenal | 0.8571428571428571 |
\n",
"3 | West Ham | 0.8 |
\n",
"4 | Chelsea | 0.75 |
\n",
"5 | Man United | 0.7 |
\n",
"6 | Sunderland | 0.6666666666666666 |
\n",
"7 | Tottenham | 0.5714285714285714 |
\n",
"8 | Leicester | 0.5384615384615384 |
\n",
"9 | Newcastle | 0.5 |
\n",
"- | Norwich | 0.5 |
\n",
"- | Swansea | 0.5 |
\n",
"- | Stoke | 0.5 |
\n",
"13 | Southampton | 0.46153846153846156 |
\n",
"14 | Liverpool | 0.42857142857142855 |
\n",
"15 | West Brom | 0.3333333333333333 |
\n",
"16 | Everton | 0.3 |
\n",
"17 | Aston Villa | 0.25 |
\n",
"18 | Crystal Palace | 0.2 |
\n",
"19 | Watford | 0.14285714285714285 |
\n",
"20 | Bournemouth | 0.08333333333333333 |
"
],
"metadata": {},
"output_type": "display_data",
"text": [
""
]
}
],
"prompt_number": 5
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The lingering worry for West Ham fans will be that all of these shots have come they were only 15th equal for their target ratio, that is the ratio of their total shots that were on target."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"league_analysis.rank_teams_single_matches(weekend_matches, 'target_ratio',\n",
" stat_header_name='Target Ratio')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"Position | Team | Target Ratio |
---|
1 | Man City | 0.4230769230769231 |
\n",
"2 | Man United | 0.4117647058823529 |
\n",
"3 | Newcastle | 0.35294117647058826 |
\n",
"4 | Southampton | 0.3 |
\n",
"5 | Arsenal | 0.2608695652173913 |
\n",
"6 | Chelsea | 0.25 |
\n",
"- | Norwich | 0.25 |
\n",
"8 | Tottenham | 0.23529411764705882 |
\n",
"9 | Leicester | 0.21212121212121213 |
\n",
"10 | Everton | 0.2 |
\n",
"- | Liverpool | 0.2 |
\n",
"12 | Sunderland | 0.18181818181818182 |
\n",
"- | Stoke | 0.18181818181818182 |
\n",
"14 | Bournemouth | 0.16666666666666666 |
\n",
"15 | Crystal Palace | 0.14285714285714285 |
\n",
"- | West Ham | 0.14285714285714285 |
\n",
"17 | Swansea | 0.125 |
\n",
"18 | Aston Villa | 0.1111111111111111 |
\n",
"- | Watford | 0.1111111111111111 |
\n",
"- | West Brom | 0.1111111111111111 |
"
],
"metadata": {},
"output_type": "display_data",
"text": [
""
]
}
],
"prompt_number": 6
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And they still have a pretty large PDO, significantly higher than the second placed team, Manchester United, who are themselves something of an outlier:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"league_analysis.display_statistic_rankings(epl, 'pdo')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"Position | Team | pdo |
---|
1 | West Ham | 0.2337507453786523 |
\n",
"2 | Man United | 0.13257575757575757 |
\n",
"3 | Everton | 0.09285714285714286 |
\n",
"4 | Arsenal | 0.07500000000000001 |
\n",
"5 | Crystal Palace | 0.07046070460704607 |
\n",
"6 | Newcastle | 0.06071428571428572 |
\n",
"7 | Stoke | 0.06062424969987995 |
\n",
"8 | Chelsea | 0.03205128205128205 |
\n",
"9 | Leicester | 0.009469696969696961 |
\n",
"10 | West Brom | 0.0034453057708871415 |
\n",
"11 | Man City | -0.009009009009008973 |
\n",
"12 | Tottenham | -0.022321428571428575 |
\n",
"13 | Watford | -0.0231578947368421 |
\n",
"14 | Aston Villa | -0.025641025641025605 |
\n",
"15 | Sunderland | -0.04538461538461536 |
\n",
"16 | Swansea | -0.04949314251639833 |
\n",
"17 | Norwich | -0.10298102981029805 |
\n",
"18 | Liverpool | -0.1515151515151515 |
\n",
"19 | Bournemouth | -0.1523809523809524 |
\n",
"20 | Southampton | -0.15598290598290598 |
"
],
"metadata": {},
"output_type": "display_data",
"text": [
""
]
}
],
"prompt_number": 7
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Watford 0-3 Arsenal, Manchester City 5-1 Bournemouth\n",
"\n",
"Two very dominate victories. These two feature at the top end of the tables above for this week. Team of the week here could easily go to Arsenal, although as we see above the Manchester City total shot ratio and shots on target ratio are both better than Arsenal's, let's not forget Arsenal were away from home."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Everton 0-3 Manchester United\n",
"\n",
"Manchester United continue to make very good use of the shots that they have. Everton actually managed more shots than United, but United had 7 out of 10 shots on target, that is a very high target ratio beaten only by their Manchester rivals this week. A continuing theme is that United seem capable of scoring a high percentage of their shots on target, here scoring 3 of the 7, which is just higher than they have managed all season, which puts them 4th in the league:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"league_analysis.display_statistic_rankings(epl, 'goals_sot_for_ratio')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"Position | Team | goals_sot_for_ratio |
---|
1 | West Ham | 0.5128205128205128 |
\n",
"2 | Newcastle | 0.4 |
\n",
"3 | Leicester | 0.3958333333333333 |
\n",
"4 | Man United | 0.375 |
\n",
"5 | Chelsea | 0.358974358974359 |
\n",
"6 | Everton | 0.34285714285714286 |
\n",
"7 | Norwich | 0.34146341463414637 |
\n",
"8 | Bournemouth | 0.3333333333333333 |
\n",
"9 | Man City | 0.32432432432432434 |
\n",
"10 | Sunderland | 0.32 |
\n",
"11 | Aston Villa | 0.3076923076923077 |
\n",
"12 | Crystal Palace | 0.2926829268292683 |
\n",
"13 | Southampton | 0.28846153846153844 |
\n",
"14 | Stoke | 0.2647058823529412 |
\n",
"15 | West Brom | 0.25925925925925924 |
\n",
"16 | Arsenal | 0.25 |
\n",
"17 | Watford | 0.24 |
\n",
"18 | Swansea | 0.23255813953488372 |
\n",
"19 | Tottenham | 0.19642857142857142 |
\n",
"20 | Liverpool | 0.18181818181818182 |
"
],
"metadata": {},
"output_type": "display_data",
"text": [
""
]
}
],
"prompt_number": 8
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Coupled with this is a propensity for a high proportion of their shots to be on target, second only to Manchester City:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"league_analysis.display_statistic_rankings(epl, 'sot_for_ratio')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"Position | Team | sot_for_ratio |
---|
1 | Man City | 0.4134078212290503 |
\n",
"2 | Man United | 0.40404040404040403 |
\n",
"3 | Tottenham | 0.38620689655172413 |
\n",
"4 | Newcastle | 0.38461538461538464 |
\n",
"5 | Stoke | 0.37362637362637363 |
\n",
"6 | Southampton | 0.36363636363636365 |
\n",
"- | Arsenal | 0.36363636363636365 |
\n",
"8 | Crystal Palace | 0.35344827586206895 |
\n",
"9 | Swansea | 0.3524590163934426 |
\n",
"10 | Bournemouth | 0.35106382978723405 |
\n",
"11 | Leicester | 0.34782608695652173 |
\n",
"12 | Liverpool | 0.33587786259541985 |
\n",
"13 | Everton | 0.32710280373831774 |
\n",
"14 | West Ham | 0.30952380952380953 |
\n",
"15 | Norwich | 0.3082706766917293 |
\n",
"16 | West Brom | 0.3068181818181818 |
\n",
"17 | Sunderland | 0.2976190476190476 |
\n",
"18 | Chelsea | 0.291044776119403 |
\n",
"19 | Aston Villa | 0.26262626262626265 |
\n",
"20 | Watford | 0.22522522522522523 |
"
],
"metadata": {},
"output_type": "display_data",
"text": [
""
]
}
],
"prompt_number": 9
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Southampton 2-2 Leicester\n",
"\n",
"Incredible match with Leicester managing 26 shots on target against a side that is generally managing to avoid shots against, Southampton are still only 16th with 103 which includes the 26 from Leicester:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"league_analysis.display_statistic_rankings(epl, 'shots_against')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"Position | Team | shots_against |
---|
1 | Newcastle | 163 |
\n",
"- | Crystal Palace | 163 |
\n",
"3 | Sunderland | 149 |
\n",
"4 | Stoke | 136 |
\n",
"- | West Ham | 136 |
\n",
"6 | West Brom | 132 |
\n",
"7 | Leicester | 123 |
\n",
"- | Everton | 123 |
\n",
"9 | Norwich | 122 |
\n",
"10 | Chelsea | 119 |
\n",
"11 | Aston Villa | 117 |
\n",
"12 | Watford | 116 |
\n",
"- | Swansea | 116 |
\n",
"14 | Tottenham | 115 |
\n",
"15 | Liverpool | 104 |
\n",
"16 | Southampton | 103 |
\n",
"17 | Arsenal | 99 |
\n",
"18 | Bournemouth | 94 |
\n",
"19 | Man United | 86 |
\n",
"20 | Man City | 78 |
"
],
"metadata": {},
"output_type": "display_data",
"text": [
""
]
}
],
"prompt_number": 10
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Newcastle 6-2 Norwich\n",
"\n",
"As [others have pointed out](http://statsbomb.com/2015/10/fun-order-and-klopp-week-9-in-the-premier-league/) it is not often a team concedes 6 and then scores 6 in the next match. More interesting here is that Newcastle had exactly 6 shots on target and scored with all six. How very Manchester United of them. I suspect this will be a statistical blip, so far still not very much for Newcastle fans to get excited about, other than:\n",
"\n",
"# West Brom 1-0 Sunderland\n",
"\n",
"It seems like the north east teams will indeed both be involved in a scrap for relegation. It seems more likely that Sunderland will avoid a scrap only by being so far behind safety that their relegation is assured from Christmas onwards. This week, away from home, they actually managed to out-shoot their opponents, just a shame their opponents were West Brom. Tony Pulis does genuinely appear to have some ability to get more (points) from a team than their shot numbers suggest they should."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Tottenham 0-0 Liverpool\n",
"\n",
"Not a terribly exciting match for Liverpool's new manager. I think both of these teams are not getting the points they deserve. These two teams lie just above Southampton in the shots against column. Liverpool are 18th in the league for PDO, so they may have so far been a bit unlucky. As for Tottenham, they just aren't scoring very often. These two are the bottom teams in the league for shooting percentage, that is the percentage of their shots on target that are goals."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Swansea 0-1 Stoke\n",
"\n",
"I generally think Swansea are pretty decent mid-table side. No major worries. They were probably a touch unlucky to come away with nothing. Stoke fans have more cause for concern, but a good away 3 points was this."
]
}
],
"metadata": {}
}
]
}