{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# EPL 19-20th March 2016\n",
"\n",
"Another week another win for Leicester and another step taken towards the premier league title. Here is the usual look at the underlying shot statistics for the weekend's matches."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"
\n",
" | Home | Away |
\n",
" Team | Chelsea | West Ham |
\n",
" Goals | 2 | 2 |
\n",
" Shots | 22 | 13 |
\n",
" SOT | 5 | 6 |
\n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n",
" | Home | Away |
\n",
" Team | Crystal Palace | Leicester |
\n",
" Goals | 0 | 1 |
\n",
" Shots | 12 | 8 |
\n",
" SOT | 4 | 3 |
\n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n",
" | Home | Away |
\n",
" Team | Everton | Arsenal |
\n",
" Goals | 0 | 2 |
\n",
" Shots | 8 | 11 |
\n",
" SOT | 2 | 3 |
\n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n",
" | Home | Away |
\n",
" Team | Swansea | Aston Villa |
\n",
" Goals | 1 | 0 |
\n",
" Shots | 10 | 12 |
\n",
" SOT | 1 | 2 |
\n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n",
" | Home | Away |
\n",
" Team | Watford | Stoke |
\n",
" Goals | 1 | 2 |
\n",
" Shots | 9 | 9 |
\n",
" SOT | 4 | 6 |
\n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n",
" | Home | Away |
\n",
" Team | West Brom | Norwich |
\n",
" Goals | 0 | 1 |
\n",
" Shots | 10 | 7 |
\n",
" SOT | 0 | 1 |
\n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n",
" | Home | Away |
\n",
" Team | Man City | Man United |
\n",
" Goals | 0 | 1 |
\n",
" Shots | 26 | 5 |
\n",
" SOT | 2 | 3 |
\n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n",
" | Home | Away |
\n",
" Team | Newcastle | Sunderland |
\n",
" Goals | 1 | 1 |
\n",
" Shots | 17 | 14 |
\n",
" SOT | 8 | 4 |
\n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n",
" | Home | Away |
\n",
" Team | Southampton | Liverpool |
\n",
" Goals | 3 | 2 |
\n",
" Shots | 16 | 18 |
\n",
" SOT | 5 | 9 |
\n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n",
" | Home | Away |
\n",
" Team | Tottenham | Bournemouth |
\n",
" Goals | 3 | 0 |
\n",
" Shots | 17 | 2 |
\n",
" SOT | 8 | 0 |
\n",
" \n",
"
\n",
"
Position | Team | Points |
---|
1 | Leicester | 66 |
\n",
"2 | Tottenham | 61 |
\n",
"3 | Arsenal | 55 |
\n",
"4 | Man City | 51 |
\n",
"5 | West Ham | 50 |
\n",
"- | Man United | 50 |
\n",
"7 | Southampton | 47 |
\n",
"8 | Stoke | 46 |
\n",
"9 | Liverpool | 44 |
\n",
"10 | Chelsea | 41 |
\n",
"11 | West Brom | 39 |
\n",
"12 | Bournemouth | 38 |
\n",
"- | Everton | 38 |
\n",
"14 | Watford | 37 |
\n",
"15 | Swansea | 36 |
\n",
"16 | Crystal Palace | 33 |
\n",
"17 | Norwich | 28 |
\n",
"18 | Sunderland | 26 |
\n",
"19 | Newcastle | 25 |
\n",
"20 | Aston Villa | 16 |
\n",
"
Position | Team | Team Rating |
---|
1 | Tottenham | 0.24710791087088907 |
\n",
"2 | Man City | 0.2389774252864094 |
\n",
"3 | Liverpool | 0.14474279925123518 |
\n",
"4 | Arsenal | 0.11075857211421597 |
\n",
"5 | Leicester | 0.06704884032040781 |
\n",
"6 | Chelsea | 0.06000709018853358 |
\n",
"7 | Southampton | 0.0564910678235171 |
\n",
"8 | Man United | 0.04970145468954883 |
\n",
"9 | Everton | 0.04134731500654405 |
\n",
"10 | West Ham | 0.01702386906932641 |
\n",
"11 | Bournemouth | -0.017487104921353552 |
\n",
"12 | Watford | -0.044764865254164565 |
\n",
"13 | Swansea | -0.07266532147459098 |
\n",
"14 | Stoke | -0.07437775266011082 |
\n",
"15 | Crystal Palace | -0.08166059447588073 |
\n",
"16 | Norwich | -0.1320042244399923 |
\n",
"17 | West Brom | -0.14293860336833414 |
\n",
"18 | Sunderland | -0.144966402635897 |
\n",
"19 | Newcastle | -0.1792828769890239 |
\n",
"20 | Aston Villa | -0.19994132690032004 |
\n",
"
Position | Team | PDO |
---|
1 | Leicester | 0.11928904428904424 |
\n",
"2 | West Ham | 0.0843942054433714 |
\n",
"3 | Man United | 0.07763645998940116 |
\n",
"4 | Everton | 0.0712962962962963 |
\n",
"5 | Arsenal | 0.06744186046511627 |
\n",
"6 | West Brom | 0.052837209302325605 |
\n",
"7 | Watford | 0.05106179909329517 |
\n",
"8 | Stoke | 0.050529100529100535 |
\n",
"9 | Chelsea | 0.03754130112794807 |
\n",
"10 | Sunderland | 0.019047619047619035 |
\n",
"11 | Southampton | 0.007892606583917938 |
\n",
"12 | Tottenham | -0.0008254656141979955 |
\n",
"13 | Man City | -0.002348244687096379 |
\n",
"14 | Swansea | -0.02093984172561103 |
\n",
"15 | Crystal Palace | -0.04778243741263183 |
\n",
"16 | Norwich | -0.061407440609592134 |
\n",
"17 | Bournemouth | -0.10338445267054469 |
\n",
"18 | Liverpool | -0.10624868504102669 |
\n",
"19 | Newcastle | -0.11723565670934089 |
\n",
"20 | Aston Villa | -0.14504241412877206 |
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"import league_analysis\n",
"from IPython.display import display, HTML\n",
"epl = league_analysis.epl\n",
"display(HTML(league_analysis.blog_weekly_header(epl, '19/03/2016', '20/03/2016')))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Chelsea 2-2 West Ham\n",
"\n",
"Cracking game. A draw is probably about a fair result here. Chelsea had 9 more shots, but one fewer on target, this chimes well with the fact that Chelsea spent a good proportion of this match behind, including a late proportion of the game (which increases urgency). Since we're talking about Chelsea, this seems a good point to show the latest runs, with Chelsea unbeaten for 14 games.\n",
"\n",
""
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"Position | Team | Winning Run |
---|
1 | Leicester | 3 |
\n",
"2 | Southampton | 2 |
\n",
"- | Tottenham | 2 |
\n",
"4 | Stoke | 1 |
\n",
"- | Arsenal | 1 |
\n",
"- | Norwich | 1 |
\n",
"- | Swansea | 1 |
\n",
"- | Man United | 1 |
\n",
"9 | Aston Villa | 0 |
\n",
"- | Crystal Palace | 0 |
\n",
"- | Bournemouth | 0 |
\n",
"- | Liverpool | 0 |
\n",
"- | West Brom | 0 |
\n",
"- | Everton | 0 |
\n",
"- | Chelsea | 0 |
\n",
"- | Newcastle | 0 |
\n",
"- | West Ham | 0 |
\n",
"- | Sunderland | 0 |
\n",
"- | Man City | 0 |
\n",
"- | Watford | 0 |
\n",
"Position | Team | Unbeaten Run |
---|
1 | Chelsea | 14 |
\n",
"2 | Leicester | 5 |
\n",
"- | West Ham | 5 |
\n",
"4 | Southampton | 3 |
\n",
"- | Sunderland | 3 |
\n",
"- | Tottenham | 3 |
\n",
"7 | Arsenal | 2 |
\n",
"- | Norwich | 2 |
\n",
"9 | Stoke | 1 |
\n",
"- | Swansea | 1 |
\n",
"- | Newcastle | 1 |
\n",
"- | Man United | 1 |
\n",
"13 | Aston Villa | 0 |
\n",
"- | Crystal Palace | 0 |
\n",
"- | Bournemouth | 0 |
\n",
"- | Liverpool | 0 |
\n",
"- | West Brom | 0 |
\n",
"- | Everton | 0 |
\n",
"- | Man City | 0 |
\n",
"- | Watford | 0 |
\n",
"Position | Team | Winless |
---|
1 | Crystal Palace | 13 |
\n",
"2 | Aston Villa | 6 |
\n",
"3 | Newcastle | 5 |
\n",
"4 | Sunderland | 4 |
\n",
"- | Watford | 4 |
\n",
"6 | Everton | 2 |
\n",
"- | Chelsea | 2 |
\n",
"- | Man City | 2 |
\n",
"9 | Bournemouth | 1 |
\n",
"- | Liverpool | 1 |
\n",
"- | West Brom | 1 |
\n",
"- | West Ham | 1 |
\n",
"13 | Stoke | 0 |
\n",
"- | Arsenal | 0 |
\n",
"- | Leicester | 0 |
\n",
"- | Southampton | 0 |
\n",
"- | Norwich | 0 |
\n",
"- | Swansea | 0 |
\n",
"- | Man United | 0 |
\n",
"- | Tottenham | 0 |
\n",
"Position | Team | Losing |
---|
1 | Aston Villa | 6 |
\n",
"2 | Watford | 3 |
\n",
"3 | Crystal Palace | 2 |
\n",
"- | Everton | 2 |
\n",
"5 | Bournemouth | 1 |
\n",
"- | Liverpool | 1 |
\n",
"- | West Brom | 1 |
\n",
"- | Man City | 1 |
\n",
"9 | Stoke | 0 |
\n",
"- | Arsenal | 0 |
\n",
"- | Leicester | 0 |
\n",
"- | Southampton | 0 |
\n",
"- | Norwich | 0 |
\n",
"- | Chelsea | 0 |
\n",
"- | Swansea | 0 |
\n",
"- | Newcastle | 0 |
\n",
"- | West Ham | 0 |
\n",
"- | Man United | 0 |
\n",
"- | Sunderland | 0 |
\n",
"- | Tottenham | 0 |
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"league_analysis.display_current_runs(epl)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"However, Chelsea's important 14 game unbeaten run, should be teppered a little with the fact that they have only won 6 of those matches, including being out-shot by Norwich and a rather flattering 3-0 away win at Selhurst Park."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
\n",
" | Home | Away |
\n",
" Team | Chelsea | Sunderland |
\n",
" Goals | 3 | 1 |
\n",
" Shots | 17 | 11 |
\n",
" SOT | 7 | 3 |
\n",
" \n",
"
\n",
"
\n",
"\n",
"
\n",
" | Home | Away |
\n",
" Team | Crystal Palace | Chelsea |
\n",
" Goals | 0 | 3 |
\n",
" Shots | 8 | 10 |
\n",
" SOT | 4 | 4 |
\n",
" \n",
"
\n",
"
\n",
"\n",
"
\n",
" | Home | Away |
\n",
" Team | Arsenal | Chelsea |
\n",
" Goals | 0 | 1 |
\n",
" Shots | 9 | 12 |
\n",
" SOT | 1 | 6 |
\n",
" \n",
"
\n",
"
\n",
"\n",
"
\n",
" | Home | Away |
\n",
" Team | Chelsea | Newcastle |
\n",
" Goals | 5 | 1 |
\n",
" Shots | 15 | 10 |
\n",
" SOT | 5 | 4 |
\n",
" \n",
"
\n",
"
\n",
"\n",
"
\n",
" | Home | Away |
\n",
" Team | Southampton | Chelsea |
\n",
" Goals | 1 | 2 |
\n",
" Shots | 7 | 16 |
\n",
" SOT | 2 | 4 |
\n",
" \n",
"
\n",
"
\n",
"\n",
"
\n",
" | Home | Away |
\n",
" Team | Norwich | Chelsea |
\n",
" Goals | 1 | 2 |
\n",
" Shots | 13 | 10 |
\n",
" SOT | 2 | 2 |
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"def chelsea_win(game):\n",
" if game.HomeTeam == 'Chelsea':\n",
" return game.FTHG > game.FTAG\n",
" else:\n",
" assert game.AwayTeam == 'Chelsea'\n",
" return game.FTAG > game.FTHG\n",
"league_analysis.display_given_matches(g for g in epl.team_stats['Chelsea'].games[-14:] if chelsea_win(g))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is why if we look at the form over the past 10 games, Chelsea are good, but Tottenham are better and Leicester have scored more points."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"Position | Team | Points |
---|
1 | Tottenham | 25 |
\n",
"2 | Leicester | 23 |
\n",
"3 | Southampton | 20 |
\n",
"4 | Chelsea | 18 |
\n",
"- | West Ham | 18 |
\n",
"6 | Bournemouth | 17 |
\n",
"- | Swansea | 17 |
\n",
"- | Man United | 17 |
\n",
"9 | Stoke | 14 |
\n",
"- | Liverpool | 14 |
\n",
"11 | Arsenal | 13 |
\n",
"- | West Brom | 13 |
\n",
"13 | Everton | 12 |
\n",
"- | Man City | 12 |
\n",
"15 | Sunderland | 11 |
\n",
"16 | Newcastle | 8 |
\n",
"- | Watford | 8 |
\n",
"18 | Aston Villa | 5 |
\n",
"- | Norwich | 5 |
\n",
"20 | Crystal Palace | 2 |
\n",
"Position | Team | Team Rating |
---|
1 | Tottenham | 0.35769122037296497 |
\n",
"2 | Man City | 0.2148074228227645 |
\n",
"3 | Liverpool | 0.14934454714598783 |
\n",
"4 | Chelsea | 0.12769303380864183 |
\n",
"5 | Leicester | 0.1003351268960672 |
\n",
"6 | Everton | 0.06779691954104167 |
\n",
"7 | West Ham | 0.048957310546536896 |
\n",
"8 | Bournemouth | 0.016068563393227375 |
\n",
"9 | Arsenal | 0.015888066604995383 |
\n",
"10 | Southampton | -0.011874072061767577 |
\n",
"11 | Man United | -0.05287525405172468 |
\n",
"12 | Swansea | -0.05837103536890509 |
\n",
"13 | Stoke | -0.07017369579390914 |
\n",
"14 | Sunderland | -0.0752421364932708 |
\n",
"15 | Newcastle | -0.07841208183422443 |
\n",
"16 | West Brom | -0.15962556306306305 |
\n",
"17 | Crystal Palace | -0.1634253452739026 |
\n",
"18 | Watford | -0.17095507433742735 |
\n",
"19 | Norwich | -0.2018366677906411 |
\n",
"20 | Aston Villa | -0.27905743894907975 |
\n",
"Position | Team | PDO |
---|
1 | Swansea | 0.1777777777777778 |
\n",
"2 | Leicester | 0.17373737373737375 |
\n",
"3 | Southampton | 0.1718266253869969 |
\n",
"4 | West Ham | 0.1256921373200443 |
\n",
"5 | Chelsea | 0.10425531914893615 |
\n",
"6 | Man United | 0.09477124183006536 |
\n",
"7 | West Brom | 0.09234234234234234 |
\n",
"8 | Sunderland | 0.07751196172248803 |
\n",
"9 | Bournemouth | 0.05128205128205132 |
\n",
"10 | Arsenal | 0.0478723404255319 |
\n",
"11 | Everton | 0.023352361183186288 |
\n",
"12 | Watford | -0.007692307692307693 |
\n",
"13 | Man City | -0.012733446519524627 |
\n",
"14 | Tottenham | -0.026606425702811243 |
\n",
"15 | Liverpool | -0.028310104529616742 |
\n",
"16 | Stoke | -0.0892857142857143 |
\n",
"17 | Norwich | -0.13008130081300817 |
\n",
"18 | Crystal Palace | -0.18210262828535667 |
\n",
"19 | Aston Villa | -0.21153846153846154 |
\n",
"20 | Newcastle | -0.3472222222222222 |
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"stats = league_analysis.last_x_game_stats(epl, 10)\n",
"display(HTML(league_analysis.header_stat_tables(epl, stats=stats)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Crystal Palace 0-1 Leicester City\n",
"\n",
"A collision of two teams, one currently out-performing their numbers the other currently under-performing their numbers and so it proved in the game. Last week we pointed out that Leicester beat Newcastle with their only shot on target of the game. This week was more even but it's hard not to feel some sympathy for Palace here. Okay so Palace spent quite a bit of this match behind, but still.\n",
"\n",
"I really think this will be a fascinating end to the season. On paper I don't think Leicester have enough to finish the season without dropping 5 more points than Tottenham, but I would have made the same prediction about the previous 10 matches as well. Either Leicester really have found a way to beat their numbers, or winning the title will likely require their luck to continue.\n",
"\n",
"To be clear, this is Newcastle and Crystal Palace we're talking about here. In the past 10 games they rate 15th and 17th for team rating."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"Leicester | Tottenham |
---|
Southampton (H) | Liverpool (A) |
\n",
"Sunderland (A) | Man United (H) |
\n",
"West Ham (H) | Stoke (A) |
\n",
"Swansea (H) | West Brom (H) |
\n",
"Man United (A) | Chelsea (A) |
\n",
"Everton (H) | Southampton (H) |
\n",
"Chelsea (A) | Newcastle (A) |
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"league_analysis.compare_fixtures(epl, ['Leicester', 'Tottenham'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Southampton will be a very tough test for Leicester next week, but Liverpool then Manchester United are pretty tough asks for Tottenham. Final day of the season could be interesting, if Tottenham need to make up 3 points on Leicester, it would be tough to bet against it."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Everton 0-2 Arsenal\n",
"\n",
"A good away win for Arsenal, far from dominating the game, but somewhat controlled it."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Swansea 1-0 Aston Villa\n",
"\n",
"At times Villa have been abject, and at times you have had to feel a touch sorry for them. This is reflected in the fact that Villa now have the lowest PDO in the league. However, let's not forget they also have the lowest team rating. They certainly deserve to be relegated, but don't quite deserve to be 9 points adrift."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Watford 1-2 Stoke\n",
"\n",
"Very good game. Stoke continue to confound analysts. They certainly **seem** like a better team than their 14th ranked team rating suggests. Will be interesting to see if they can remain in the top half of the league. It's hard to see them surpassing any of the teams above them, unless perhaps West Ham crumble. But Chelsea and Liverpool are hot on their tails. That would still keep Stoke in 10th, and the others are probably just a bit too far back. So I predict 10th for Stoke."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# West Brom 0-1 Norwich\n",
"\n",
"Norwich certainly needed that. One of those games that neither team particularly deserved to win, with just a single shot on target all game, in total."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Manchester City 0-1 Manchester United\n",
"\n",
"Any hope of the title is surely gone now for Manchester City and they turn their attention more to the prospect of missing out on the Champions' League next season. They were certainly a bit unlucky to have lost this, in a similar way to failing to win at Norwich last week. In both games though, despite creating a lot of chances, they have not actually achieved many shots on target. Still, 26 shots is a fairly incredible number, here are the games this season in which a team has taken 26 or more shots and failed to win:"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
\n",
" | Home | Away |
\n",
" Team | Chelsea | Crystal Palace |
\n",
" Goals | 1 | 2 |
\n",
" Shots | 26 | 13 |
\n",
" SOT | 9 | 6 |
\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 | Southampton | Leicester |
\n",
" Goals | 2 | 2 |
\n",
" Shots | 14 | 26 |
\n",
" SOT | 6 | 7 |
\n",
" \n",
"
\n",
"
\n",
"\n",
"
\n",
" | Home | Away |
\n",
" Team | Liverpool | West Brom |
\n",
" Goals | 2 | 2 |
\n",
" Shots | 28 | 4 |
\n",
" SOT | 8 | 2 |
\n",
" \n",
"
\n",
"
\n",
"\n",
"
\n",
" | Home | Away |
\n",
" Team | Stoke | Crystal Palace |
\n",
" Goals | 1 | 2 |
\n",
" Shots | 26 | 12 |
\n",
" SOT | 5 | 3 |
\n",
" \n",
"
\n",
"
\n",
"\n",
"
\n",
" | Home | Away |
\n",
" Team | Everton | West Brom |
\n",
" Goals | 0 | 1 |
\n",
" Shots | 34 | 5 |
\n",
" SOT | 6 | 1 |
\n",
" \n",
"
\n",
"
\n",
"\n",
"
\n",
" | Home | Away |
\n",
" Team | Tottenham | Arsenal |
\n",
" Goals | 2 | 2 |
\n",
" Shots | 26 | 10 |
\n",
" SOT | 11 | 4 |
\n",
" \n",
"
\n",
"
\n",
"\n",
"
\n",
" | Home | Away |
\n",
" Team | Man City | Man United |
\n",
" Goals | 0 | 1 |
\n",
" Shots | 26 | 5 |
\n",
" SOT | 2 | 3 |
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"def high_shooting_losers(game):\n",
" return (game.HS >= 26 and game.FTHG <= game.FTAG) or (game.AS >= 26 and game.FTAG <= game.FTHG)\n",
"league_analysis.display_given_matches(g for g in epl.matches if high_shooting_losers(g))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Just 8 games. Of those, strangely 5 of them were loses, this probably reflects the stronger team being behind and throwing more caution to the wind as the game progresses. Note, in only one of these games has the high shooting team failed to even score. Can the red Manchesters beat out the sky blue Manchesters to the 4th Champions' League spot?"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"Man United | Man City | Arsenal |
---|
Everton (H) | Bournemouth (A) | Watford (H) |
\n",
"Tottenham (A) | West Brom (H) | West Ham (A) |
\n",
"Aston Villa (H) | Chelsea (A) | Crystal Palace (H) |
\n",
"Crystal Palace (H) | Newcastle (A) | West Brom (H) |
\n",
"Leicester (H) | Stoke (H) | Sunderland (A) |
\n",
"Norwich (A) | Southampton (A) | Norwich (H) |
\n",
"West Ham (A) | Arsenal (H) | Man City (A) |
\n",
"Bournemouth (H) | Swansea (A) | Aston Villa (H) |
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"league_analysis.compare_fixtures(epl, ['Man United', 'Man City', 'Arsenal'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A couple of tricky games in the offing for Manchester United, but City will be wary of the Arsenal game in the penultimate match of the season. Saying that, Arsenal may well be wary of just that match themselves. Manchester City have a game in hand on Arsenal and in the last ten games Arsenal have a team rating ranked only 9th whereas City are ranked second. Fortunately for Arsenal, Manchester United are ranked even worse at 11th. My prediction, City, Arsenal, United."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Newcastle 1-1 Sunderland\n",
"\n",
"Newcastle probably deserved a win here and that is somewhat emblematic of their season since the January transfer window. They are quite clearly showing improved form, but not getting much return from it. Wins for both Norwich and Swansea must have increased tension in the North East. However, as we have noted before, Swansea have a quite trecherous final four games to navigate, and Stoke, and then Chelsea, next don't look overly inviting either. Swansea now have 36 points, they may well have to hope that that is enough. Can Newcastle pick up 11 points? It's certainly possible, they will be looking for 6 points in their final two matches.\n",
"\n",
"Can Crystal Palace survive? They have a bit of a better run-in than Swansea, but their current form is pretty bad. If I had to bet I'd say Norwich aren't looking good and one of Newcastle and Sunderland, probably seperated by a point or even goal difference."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"Newcastle | Sunderland | Norwich | Crystal Palace | Swansea |
---|
Norwich (A) | West Brom (H) | Newcastle (H) | West Ham (A) | Stoke (A) |
\n",
"Southampton (A) | Leicester (H) | Crystal Palace (A) | Norwich (H) | Chelsea (H) |
\n",
"Swansea (H) | Norwich (A) | Sunderland (H) | Arsenal (A) | Newcastle (A) |
\n",
"Man City (H) | Arsenal (H) | Arsenal (A) | Man United (A) | Leicester (A) |
\n",
"Liverpool (A) | Stoke (A) | Man United (H) | Everton (H) | Liverpool (H) |
\n",
"Crystal Palace (H) | Chelsea (H) | Watford (H) | Newcastle (A) | West Ham (A) |
\n",
"Aston Villa (A) | Everton (H) | Everton (A) | Stoke (H) | Man City (H) |
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"league_analysis.compare_fixtures(epl, ['Newcastle', 'Sunderland', 'Norwich', 'Crystal Palace', 'Swansea'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Southampton 3-2 Liverpool\n",
"\n",
"Wow, an incredible game. Not the first time we've said that about a Liverpool game this season. Liverpool should be higher up the league, and doing so with entertaining football. Things look pretty good for Liverpool for next season, and also for Southampton, if with perhaps slightly lower expectations."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Tottenham 3-0 Bournemouth\n",
"\n",
"Bournemouth are generally a decent team and deserve to be in the league for next season (which they almost certainly will be). But Tottenham are a *great* team. When a great team gets in front early on, it can be difficult to make things happen for their opposition, and Bournemouth just did not have that in them. A team rating of greater than 0.3 for the last ten games means Tottenham are now top overall for team rating. Both very good number for Tottenham, and they should go on and win the league. There, I said it. Tottenham should win the league and Leicester should be second."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Thanks for reading."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.4.3"
},
"nikola": {
"category": "",
"date": "2016-03-22 11:21:17 UTC",
"description": "",
"link": "",
"slug": "epl-19-20th-march-2016",
"tags": "",
"title": "EPL 19-20th March 2016",
"type": "text"
}
},
"nbformat": 4,
"nbformat_minor": 0
}