EPL 28-29 November 2015
EPL November 28-29th 2015
Another brief look at the shot statistics that were behind the results in the top flight of English football over the weekend.
%matplotlib inline
import league_analysis
from IPython.display import display, HTML
epl = league_analysis.epl
weekend_matches = league_analysis.get_matches(epl, '28/11/2015', '29/11/2015')
league_analysis.display_given_matches(weekend_matches)
league_analysis.display_match(epl, 'Aston Villa', 'Watford', '28/11/15')
Obviously worrying times for Aston Villa, who still have not won since the first day of the season.
after_game_no_dicts = league_analysis.collect_after_game_dicts(epl, '01/08/2015', '30/11/2015')
league_analysis.plot_changing_stats(epl, after_game_no_dicts, 'current_winless_run', rankings=False)
So a current winless run of 13, the next closest current is the rather unfortunate Bournemouth with 8, and even the next longest in the league at all is the 9 Sunderland accumulated before winning their 10th game.
This Game
However, on the face of it this wasn't actually that terrible a defeat. Though it says something that to look for the positive in a home game against a promoted side Villa have to suggest that they weren't dominated.
Watford though are starting to see a bit of an increase in return for what were at least acceptable performances.
league_analysis.display_match(epl, 'Bournemouth', 'Everton', '28/11/15')
Bournemouth just cannot seem to catch a break. I know they were behind for a lot of this game and may well feel pretty pleased about getting a point in the end, but the fact remains they are just not getting the rewards for their efforts.
pairs = [(stats.teamname, stats.pdo) for stats in epl.team_stats.values()]
league_analysis.display_ranked_table(['Team', 'PDO'], pairs)
league_analysis.display_match(epl, 'Crystal Palace', 'Newcastle', '28/11/15')
As much as it might be bad for Aston Villa, Newcastle's fortunate wins over Bournemouth and slightly less so Norwich have masked a very worrying start to the season as a continuation of the year. James Yorke at stats bomb looked at whether or not Swansea should sack Garry Monk concluding, probably not. But he goes on to say that Steve McClaren's position is not looking great. Though it was a good point that two obvious candidates to replace him for the rest of the season in Tony Pulis and Sam Allardyce are already employed in the EPL. Newcastle are now bottom of the league for team rating, a measure that combines a team's TSR, TSOTT and PDO, weighted by how much we think is skills based.
pairs = [(stats.teamname, stats.team_rating) for stats in epl.team_stats.values()]
league_analysis.display_ranked_table(['Team', 'Team Rating'], pairs)
league_analysis.display_match(epl, 'Leicester', 'Man United', '28/11/15')
Well, Jamie Vardy made his 11th straight game in the EPL with at least one goal. More importantly for those doubting that Leicester can maintain their level this was a pretty important point at home against a team in a similar league position, and not only that but it seems like the game merited a draw, they certainly were not unequivocally out-shot.
pairs = [(stats.teamname, stats.sot_for / stats.shots_for) for stats in epl.team_stats.values()]
league_analysis.display_ranked_table(['Team', 'SOTs/All Shots'], pairs)
pairs = [(stats.teamname, stats.tsr - stats.sotr) for stats in epl.team_stats.values()]
league_analysis.display_ranked_table(['Team', 'TSR - SOTR'], pairs)
Leicester are currently 6th in the league for team rating as the table above shows. Would it be so surprising if that is where they ended up? Certainly it seems that their current position is a bit of an over-performance. But suppose they end the season in 6th place for team rating, it would not take that much luck for them to finish in the top four.
league_analysis.display_match(epl, 'Man City', 'Southampton', '28/11/15')
Fairly routine home win, but generally Southampton did pretty reasonably here. They probably didn't earmark this game for any points anyway. They allowed a little more shots than is average for Manchester City (but that is both home and away average), particularly so for shots on target. However they managed more shots and shots on target than the average team against Man City does. Meaning that they competed pretty well, on another day could have sneaked a draw.
epl.compare_game_against_opponents('Man City', 'Southampton', '28/11/15')
Southampton in general are pretty similar at home to how they are away, they have the exact same points per game. They shoot a bit more often at home and have a slighlty better tsr, but they actually have a better sotr away from home.
league_analysis.compare_home_away_form(epl, 'Southampton')
league_analysis.display_match(epl, 'Sunderland', 'Stoke', '28/11/15')
Did not see this coming, but unlike a couple of recent victories for Sunderland, they actually deserved this one, at least in as far as shot counts are concerned. Are there signs of improvement for Sunderland? Arguably. Here is team rating plotted over the course of the season for the bottom 7 teams.
teams = ['Sunderland', 'Newcastle', 'Aston Villa', 'Bournemouth', 'Norwich', 'Swansea', 'Chelsea' ]
league_analysis.plot_changing_stats(epl, after_game_no_dicts, 'team_rating', teams=teams)
league_analysis.display_match(epl, 'Liverpool', 'Swansea', '29/11/15')
If you don't get any of your shots on target you are not going to score often. A good victory for Liverpool, but their fans may well feel like it was not as dominant as their victory over Manchester City.
league_analysis.display_match(epl, 'Norwich', 'Arsenal', '29/11/15')
I still think Arsenal are title contenders. They were on top here, but arguably Norwich did enough to earn a draw.
league_analysis.display_match(epl, 'Tottenham', 'Chelsea', '29/11/15')
Interesting, Chelsea somewhat snuffed the game out here. Given that a win was probably more urgent for the champions than their hosts that somewhat tells you where the two teams currently are. Tottenham fans should be more flattered than peeved.
league_analysis.display_match(epl, 'West Ham', 'West Brom', '29/11/15')
I pretty much give up trying to figure out West Ham. I guess they are good enough to be in the top half of the division.
They have significantly more points per game away from home than they do at home. But they are a better team at home. For sure there are some score-effects in play here, in particular big wins away to Arsenal and Manchester City contribute here.
league_analysis.compare_home_away_form(epl, 'West Ham')
As always thanks for reading.