Data Analysis
Assets:
SQL Code │ Tableau Visualisation
Background
Who ranks as football’s best ever striker?
Names like Pele, Messi, Maradona, and Cristano Ronaldo often come up in the conversation. But what about Steve Bull?
For die-hard supporters of Wolverhampton Wanderers, Steve Bull is the greatest striker of them all.
As one of my best friends once said, as he was interviewed as a 13 year old, live on ITV news: ‘Bully is the best striker ever’.
Stephen George Bull MBE, known as Bully, is the all-time record goalscorer for Wolves. He scored an incredible 306 goals in 561 matches for the club over a stellar thirteen year career.
After retiring from playing in 1999, Bully was recognised for his achievements by Wolves when they named a stand after him at their stadium – Molineux.
Bully’s story is well-known among Wolves supporters, but I wanted to bring his goalscoring achievements and exploits to a wider audience.
Ask
For this data analysis project, I wanted to answer the following questions:
- Which team(s) did Bully score the most goals against?
- What competitions did he score the most goals in?
- Which season was Bully’s best for goalscoring?
- Was Bully’s goalscoring more prolific in home or away matches?
Prepare:
To complete my analysis, the first step was accessing and preparing the necessary data to answer my questions.
This proved to be incredibly difficult!
While there’s lots of information about Steve Bull online, I couldn’t find an existing dataset that included all the matches where he scored his goals for Wolves.
So, I created one from scratch!
Leveraging three amazing sources (11vs11.com, wolves-stats.co.uk, and wolvescompletehistory.co.uk), I was able to look through the archives and painstakingly piece together all of Bully’s matches and goals – all 306 of them.
Process:
I collated and cleaned all of my data using Google Sheets. This was because Bully’s goalscoring feats only spanned 223 rows of data.
To clean and transform Bully’s data, prior to analysis, I performed the following steps:
- Used simple formulas, such as
=LEFT
and=REPLACE
, to capture certain parts of information from one column and copy the data across into another column. For example, when copying the data into my spreadsheet, I sometimes had the match result (e.g., Win, Lose or Draw) and scoreline in the same cell and I wanted to split out the information into two separate columns. - Created an individual sheet for each of Bully’s 13 seasons with Wolves and then collated and centralised his career data into a separate sheet.
- The match dates I copied into my spreadsheet defaulted to strings, so these were converted back into dates using the
=DATEVALUE
formula. - There was a quirk within Google Sheets that defaulted my dates into US formatting and timezones, so I changed these settings to the UK, where Bully’s games were played.
- I introduced filters to my spreadsheet in order to test the data for any anomalies, such as blank cells. Some of the data I collated always put the Wolves result on the left-hand-side, e.g., 1-0, 2-1, even for occasions where Wolves were the away team. For the purposes of my analysis, I wanted Wolves results to appear on the right-hand-side when they were the away team, so I cleaned this up accordingly, using the ‘Win/Lose/Draw’ filter to check my data against the results.
- I was also able to use the filters to start getting a picture of Bully’s goalscoring feats, such as filtering his goals by home/away matches, or different types of competitions (cup vs league) and checking the
SUMS
.
Analyse:
With my data prepared and cleaned, the next stage of my project was to begin analysing Bully’s data to answer the key questions.
I used a combination of Google Sheets and SQL for the analysis stage.
To begin with, I used Google Sheets to create some Pivot Tables, where I was able to begin getting a better understanding of my dataset.
For example, I created a Pivot Table that grouped ‘Opponents’ in the rows and SUM
of ‘Total Number of Goals’ in the columns. This immediately gave me the answer to ‘Which team(s) did Bully score the most goals against?
I was also able to create simple charts, based on these Pivot Tables, to visualise my output at-a-glance.
For SQL, I used Microsoft SQL Server and SSMS (SQL Server Management Studio 20) to write and run some simple queries to answer my questions.
Results:
Steve Bull scored 306 goals in 561 games for Wolves over 13 years, which gave him a goals per game ratio of 0.55. He scored in 223 different matches to reach his 306 goals club record.
Bully scored the decisive winning goal 22 times in 1-0 wins for Wolves during his career.
19 of these 1-0 wins came in the league, meaning Bully’s goals, in these 1-0 games, helped to secure 57 league points for Wolves over the years.
These tight wins were instrumental in helping Wolves to achieve three promotions from the Fourth Division through to the First Division. The club were promoted over the course of six years from the depths of the bottom tier to Division One.
Bully’s most prolific goalscoring season came in 1987/88, where he scored 52 goals for the club in 33 different matches. These 52 goals in a single season is a club record.
His second best goalscoring season came the following season in 1988/89, where he scored 50 goals in 30 different matches.
Bully’s worst season for goals came in his final season with the club, where a knee injury began to derail his career. He scored four goals in six games during the 1998/99 season.
Bully scored 18 hat-tricks for Wolves during his career, which is a club record. A hat-trick is where a player scores three or more goals in a single game. Bully scored 4 goals in a single match on three occasions and three goals in a single match 15 times.
He scored a brace (two goals) in a single match 44 times and he scored a single goal in 161 different games.
Bully scored his first goal for Wolves against Cardiff City, in a narrow 0-1 away win, on 02/12/1986 in the Freight/Rover Trophy.
His 100th goal came against Bristol City on 24/01/1989 in a 3-0 home win in the Sherpa Van Trophy. Bull’s 200th goal was scored against Leicester City in the First Division on 18/08/1992 in a 3-0 home win. Bully scored his 300th Wolves goal on 18/02/1998 against Bradford City in a 2-1 home win.
Bully’s final goal (#306) came on 26/09/1998 against Bury in a 1-0 First Division win.
When it came to goals, Bully and Wolves wins were synonymous with one another. Bully scored 219 of his goals (71.57%) in matches where Wolves went on to win. He scored 57 times in draws (18.63% of his goals) and 30 times during losses (9.80% of his goals).
63% of Bully’s 306 goals (193) came in home matches at Molineux, while 37% of his goals (113) came on the road in away matches.
82% of Bully’s Wolves goals (250) came in the league (Fourth through to the First Division), while 18% of his goals (56) came in cup competitions and league play-off games.
Bully’s goals came across eleven different league and cup competitions. He scored the most goals in the First Division (94 goals) which works out as 30.7% of his career goals with Wolves.
Throughout his career with Wolves, Bully scored against 76 different teams across league and cup competitions.
A famous Wolves terrace chant (‘Stevie Bull’s a Tatter’) claims that when Wolves play arch-rivals West Bromwich Albion, Bully ‘scores all ******* night’.
But that’s not true!
Steve Bull only managed to score four times against West Brom during his career with Wolves.
The lyrics probably need updating to Bristol City or Port Vale (although the song probably wouldn’t be as catchy). That’s because Bully scored against these two teams on 13 occasions. His most goals against a single club.
Share
While I did some preliminary data visualisations using Google Sheets, I used Tableau to bring Bully’s data to life and answer my key questions.
I used a series of different charts and followed best practices to build the dashboard.
The centrepiece for the visualisation is a radial chart, which documents every single one of Bully’s 306 goals based on each of his 13 seasons.
Each goal on the axis is represented by a shape to indicate whether the goal came in a win, loss, or draw for Wolves.
I also used different colours to denote the amount of goals scored in a single match, with a richer and darker gold documenting matches where Bully scored 2 or more goals. The size of each plot is also adjusted based on the amount of goals Bully scored in a single match. The larger the plot, the more goals were scored.
For Bully’s goals against 76 different clubs, I used a Beeswarm chart to showcase the most goals scored against an individual club, through to the least.
Inspiration:
For my radial chart, I took huge inspiration from Simon Beaumont, who specialses in creating magnificent sports themed data visualisations in Tableau.
Thanks:
My thanks and appreciation go to the owners of the three websites I used to collate Bully’s data – 11vs11.com, wolves-stats.co.uk, and wolvescompletehistory.co.uk.
My thanks also go to the man himself – Steve Bull – for everything he did, and continues to do for Wolves. This project is not officially affiliated with Steve Bull or Wolverhampton Wanderers in any way.
Assets:
SQL Code │ Tableau Visualisation
See more of my projects.