Unlocking Data Secrets: Is Rogers Place the Secret Behind the Edmonton Oilers’ Stunning Transformation?
Over the past 15 years, the Edmonton Oilers have experienced significant changes in their performance on the ice. To understand this evolution, we can break down their performance into two main periods: Pre-Rogers Place (2009–2015) and Post-Rogers Place (2016–2022/23). By comparing these periods, we can see clear trends and improvements in various aspects of the team’s game. In this post, we’ll explore the key data points that highlight the Oilers’ journey, discuss the importance of data analysis in understanding these changes, and show how you can use Python (Python code will be placed at the end of this article) to analyze similar sports statistics.
Performance Evolution of the Edmonton Oilers in the Last 15 Years
Performance Before Rogers Place (2009–2016)
During the period before moving to Rogers Place, the Oilers had several challenging seasons. They finished at or near the bottom of the league standings multiple times, which allowed them to draft high-profile players such as Taylor Hall (2010), Ryan Nugent-Hopkins (2011), and Connor McDavid (2015). Despite these high draft picks, the team struggled with consistency and only made one playoff appearance in the 2016 season, where they were eliminated in the second round.
Performance After Moving to Rogers Place (2016-Present)
The Oilers’ move to Rogers Place in 2016 marked a turning point. Since then, the team has shown significant improvement:
Playoff Appearances: The Oilers have made multiple playoff appearances, including a notable run to the Western Conference Finals in 2022. Their performance has been bolstered by the emergence of superstars like Connor McDavid and Leon Draisaitl, who have consistently been among the league’s top scorers (NHL).
Besides the overall results and classification, we can perform a deeper analysis of the general statistics for each period. Let’s see how it looks:
Analysis of table data
Pre-Rogers Place (2009–2015): The Oilers played 574 games, securing 181 wins and 312 losses with 81 overtime/shootout losses. They earned 443 points with a points percentage of 0.386. They scored 1341 goals and conceded 1688. The power play percentage was 18.3% and the penalty kill percentage was 80.1%. The longest win streak was 7 games.
Post-Rogers Place (2016–2022/23): In 574 games, the Oilers achieved 280 wins and 224 losses with 70 overtime/shootout losses. They accumulated 630 points, resulting in a points percentage of 0.549. They scored 1613 goals and conceded 1456. The power play percentage improved to 22.5% and the penalty kill percentage to 81.0%. The longest win streak was 9 games.
Overall (2009–2022/23): The team played a total of 1148 games, winning 461 and losing 536, with 151 overtime/shootout losses. They earned 1073 points with a points percentage of 0.467. They scored 2954 goals and conceded 3144. The overall power play percentage was 20.4% and the penalty kill percentage was 80.6%.
Current Season (2023–2024): In the 2023–2024 season, the Oilers played 82 games, recording 49 wins and 27 losses with 6 overtime/shootout losses. They accumulated 104 points with a points percentage of 0.634. They scored 292 goals and conceded 236, with a power play percentage of 26.34% and a penalty kill percentage of 79.46%. The longest win streak was 16 games.
Beyond Basic Analysis: Extracting Detailed Insights
It’s not enough to simply analyze the information in the table; we also need to work with the numbers to extract more detailed and precise insights that can inform decisions and strategies. Knowing the average performance per season over multiple periods is essential for making better comparisons with the current season. To do this, you need to calculate the averages of the data columns for 2009–2015, 2016–2023, and overall. For the points percentage, power play percentage, penalty kill percentage, and max win streak, we can use the existing values since they are already calculated as percentages or are constants.
How to Create Average Columns in Excel:
1. Open your Excel file and navigate to the sheet with your data.
2. Insert new columns next to the columns you want to average.
3. Use a simple division to calculate the averages for each period. For example:
— For the Pre-Rogers Place period, if you want to calculate the average of “Games Played” per season, use the formula =B2/7 if the total games played over the period is in cell B2.
— For the Post-Rogers Place period, use the formula =C2/7.
— For the overall period, use the formula =D2/14.
Repeat this process for each statistic you want to average, except for Points Percentage, Power Play Percentage, Penalty Kill Percentage, and Max Win Streak, which should remain as is or be recalculated if desired.
The Result will be
The Role of Data Analysis in Understanding the Oilers’ Improvement
Data analysis is crucial for understanding how the Edmonton Oilers have improved over the years and identifying areas where they still need to grow. By looking at statistics such as win-loss records, points, goals for and against, and special teams' performance, we can gain insights into the factors contributing to their success. For instance, the increase in their points percentage from 0.386 in the Pre-Rogers Place era to 0.549 in the Post-Rogers Place era indicates a significant improvement in their overall performance.
Moreover, data analysis helps us pinpoint specific areas of improvement. For example, the Oilers’ power play percentage increased from 18.3% to 22.5%, and even further to 26.34% in the current season. This suggests that their special teams’ strategy has evolved and become more effective. Similarly, examining their goals against data can reveal improvements in defensive strategies and goaltending.
Analysis of Charts
Let’s look at the charts provided to analyze the Edmonton Oilers’ performance:
Average Goals For Comparison:
— The average goals for the Pre-Rogers Place period is lower compared to the Post-Rogers Place period and the current season.
— The Post-Rogers Place period shows a noticeable increase in goals scored.
— The current season has the highest average goals, indicating improved offensive performance.
Average Wins Comparison:
— There is a clear increase in the number of wins from the Pre-Rogers Place period to the Post-Rogers Place period.
— The current season has the highest number of wins, demonstrating the team’s growth and success.
Penalty Kill Percentage Comparison:
— The penalty kill percentage remains relatively stable across all periods, with slight improvements in the Post-Rogers Place period and the current season.
Power Play Percentage Comparison:
— The power play percentage has steadily improved from the Pre-Rogers Place period to the Post-Rogers Place period and the current season, showing effective special teams play.
These charts visually represent the significant improvements in the Oilers’ performance over the years, highlighting the benefits of data analysis in understanding and tracking these changes.
Conclusion
So, is Rogers Place the Secret Behind the Edmonton Oilers’ Stunning Transformation? With the data and information presented, it might be tempting to conclude that. However, the answer is no. While the data does show significant improvement after moving to Rogers Place, we must be cautious with the information we see. Data can easily be shaped to support specific narratives, which may not always reflect the complete truth.
Indeed, the Oilers have improved significantly since moving to Rogers Place, but this is not the sole reason for their success. Other factors have contributed to their improvement:
- Connor McDavid: McDavid joined the Oilers in 2015 and has been a transformative player. His skills and leadership have been pivotal in the team’s performance, making him one of the most impactful players in the NHL (The Hockey Writers) (The Hockey Writers).
- Leon Draisaitl: Another key player, Draisaitl has developed into a toptier talent, complementing McDavid and significantly boosting the team’s offensive capabilities (The Hockey Writers).
- Coaching: Todd McLellan’s coaching from 2015 to 2018 brought stability and strategic depth to the team, which was essential during the transition period (Oil On Whyte) (The Hockey Writers).
- Team Management: Strategic investments and smart trades, such as acquiring key players like Zack Kassian and Cam Talbot, have also played crucial roles in the team’s improvement. The management’s ability to build a strong, well-rounded roster has been vital (Oil On Whyte).
- Other Key Players: Players like Ryan Nugent-Hopkins and Darnell Nurse have also been significant contributors, providing depth and leadership within the team (The Hockey Writers).
The purpose of this analysis is not only to teach data analysis techniques but also to highlight the importance of thorough research. We must always look deeper and be aware that numbers can be manipulated to tell a specific story while hiding other relevant aspects. It’s essential to consider all possible factors and not jump to conclusions based on data alone. Always remember to verify and contextualize the data you encounter.
Python Code to Transform and Analyze Excel Data
Here’s a Python script that accesses an Excel file, analyzes the table, and creates average columns:
import pandas as pd
# Load the Excel file
file_path = r'C:\Fodler\Oilers Data 15 yr.xlsx'
try:
df = pd.read_excel(file_path)
print(f"Successfully loaded file: {file_path}")
except FileNotFoundError:
print(f"File not found: {file_path}")
exit()
# Print the DataFrame structure to understand its layout
print("DataFrame Structure:\n", df.head())
# Define the number of seasons for each period
pre_rogers_seasons = 7
post_rogers_seasons = 7
overall_seasons = 14
# Calculate the averages per season for relevant columns
df['Pre-Rogers Avg'] = df['Pre-Rogers Place (2009-2015)'] / pre_rogers_seasons
df['Post-Rogers Avg'] = df['Post-Rogers Place (2016-2022/23)'] / post_rogers_seasons
df['Overall Avg'] = df['Overall (2009-2022/23)'] / overall_seasons
print("Calculated averages for relevant columns.")
# Specific columns that should not be averaged
columns_to_maintain = ['Points Percentage', 'Power Play Percentage', 'Penalty Kill Percentage', 'Max Win Streak']
# Check if columns exist in the DataFrame before updating
for column in columns_to_maintain:
if column not in df['Statistic'].values:
# Add a new row with the column name if it does not exist
new_row = pd.DataFrame({'Statistic': [column],
'Pre-Rogers Place (2009-2015)': [0],
'Post-Rogers Place (2016-2022/23)': [0],
'Overall (2009-2022/23)': [0],
'Pre-Rogers Avg': [0],
'Post-Rogers Avg': [0],
'Overall Avg': [0]})
df = pd.concat([df, new_row], ignore_index=True)
print(f"Added missing row for {column}")
# Maintain the original values in the new columns
df.loc[df['Statistic'] == column, 'Pre-Rogers Avg'] = df.loc[df['Statistic'] == column, 'Pre-Rogers Place (2009-2015)']
df.loc[df['Statistic'] == column, 'Post-Rogers Avg'] = df.loc[df['Statistic'] == column, 'Post-Rogers Place (2016-2022/23)']
df.loc[df['Statistic'] == column, 'Overall Avg'] = df.loc[df['Statistic'] == column, 'Overall (2009-2022/23)']
print(f"Maintained original values for {column}")
# Save the updated dataframe back to Excel
output_file_path = r'C:\Folder\Oilers Data 15 yr Updated.xlsx'
try:
df.to_excel(output_file_path, index=False)
print(f"Averages per season calculated and saved to: {output_file_path}")
except Exception as e:
print(f"Failed to save the Excel file: {e}")
This script uses the Pandas library to read the Excel file, calculate the averages per season for each period by dividing the sum of the values by the number of seasons, and keep the existing values for Points Percentage, Power Play Percentage, Penalty Kill Percentage, and Max Win Streak. The updated data is then saved back to a new Excel file.
To illustrate how you can analyze sports data using Python, we’ll provide a simple example. Let’s say we want to compare the Oilers’ win percentages before and after moving to Rogers Place. Here’s a basic Python code snippet to get you started:
# Sample data
pre_rogers = {'seasons_played': 7, 'games_played': 574, 'wins': 181}
post_rogers = {'seasons_played': 7, 'games_played': 574, 'wins': 280}
# Calculate win percentages
pre_rogers_win_pct = pre_rogers['wins'] / pre_rogers['games_played'] * 100
post_rogers_win_pct = post_rogers['wins'] / post_rogers['games_played'] * 100
# Print results
print(f"Pre-Rogers Place Win Percentage: {pre_rogers_win_pct:.2f}%")
print(f"Post-Rogers Place Win Percentage: {post_rogers_win_pct:.2f}%")
This code will calculate and print the win percentages for the Oilers in the Pre-Rogers Place and Post-Rogers Place periods, giving you a quick insight into how their performance has changed.
Now, let’s dive into a slightly more complex Python code that will help us plot charts. This will take our data analysis to the next level, allowing us to visualize our data for better insights and presentation. Plotting charts is an excellent way to make sense of large datasets and communicate our findings effectively. Ready to see how it’s done? Let’s get started!
import pandas as pd
import matplotlib.pyplot as plt
import mpld3
# Load the data
file_path = r"C:\FOLDER\Oilers Data 15 yr - Copy.xlsx"
data = pd.read_excel(file_path)
# Display the first few rows to understand the structure
print(data.head())
# Define the column names based on the dataset structure
average_2009_2015_col = 'AVERAGE 2009-2015'
average_2016_2022_23_col = 'AVERAGE 2016-2022/23'
average_2009_2022_23_col = 'AVERAGE 2009 - 2022/23'
current_season_col = 'Current Season (2023-2024)'
# Set the color pattern to follow the Oilers' colors
colors = ['#041E42', '#FF4C00', '#041E42', '#FF4C00']
# Function to save and show plot
def save_and_show_plot(title, labels, values, ylabel, filename):
plt.figure(figsize=(10, 6))
plt.bar(labels, values, color=colors)
plt.xlabel('Period')
plt.ylabel(ylabel)
plt.title(title)
plt.savefig(filename)
mpld3.save_html(plt.gcf(), filename.replace('.png', '.html'))
plt.show()
# Extracting numeric values for plotting
def get_values_for_plot(stat):
return [
data.loc[data['Statistic'] == stat, average_2009_2015_col].values[0],
data.loc[data['Statistic'] == stat, average_2016_2022_23_col].values[0],
data.loc[data['Statistic'] == stat, average_2009_2022_23_col].values[0],
data.loc[data['Statistic'] == stat, current_season_col].values[0]
]
# Plotting Wins
save_and_show_plot(
'Average Wins Comparison',
['Average 2009-2015', 'Average 2016-2022/23', 'Average 2009-2022/23', 'Current Season'],
get_values_for_plot('Wins'),
'Average Wins',
'average_wins.png'
)
# Plotting Points
save_and_show_plot(
'Average Points Comparison',
['Average 2009-2015', 'Average 2016-2022/23', 'Average 2009-2022/23', 'Current Season'],
get_values_for_plot('Points'),
'Average Points',
'average_points.png'
)
# Plotting Goals For
save_and_show_plot(
'Average Goals For Comparison',
['Average 2009-2015', 'Average 2016-2022/23', 'Average 2009-2022/23', 'Current Season'],
get_values_for_plot('Goals For'),
'Average Goals For',
'average_goals_for.png'
)
# Plotting Power Play Percentage
save_and_show_plot(
'Power Play Percentage Comparison',
['Average 2009-2015', 'Average 2016-2022/23', 'Average 2009-2022/23', 'Current Season'],
get_values_for_plot('Power Play Percentage'),
'Power Play Percentage',
'power_play_percentage.png'
)
# Plotting Penalty Kill Percentage
save_and_show_plot(
'Penalty Kill Percentage Comparison',
['Average 2009-2015', 'Average 2016-2022/23', 'Average 2009-2022/23', 'Current Season'],
get_values_for_plot('Penalty Kill Percentage'),
'Penalty Kill Percentage',
'penalty_kill_percentage.png'
)
Make sure to verify the output files to confirm that the charts were generated correctly.
Sources and Disclaimer
Sources: Sporting News, Sportsnaut, The Hockey Writers, Champs or Chumps
Please note that the data used in this analysis was collected from various online sources and may contain discrepancies. This analysis is not affiliated with or officially endorsed by the Edmonton Oilers. The purpose of this post is to demonstrate the importance of data analysis and how to perform it effectively. The author has made every effort to ensure the accuracy of the data, but it is not guaranteed to be entirely precise. This analysis is for educational purposes only and should not be considered an official representation of the team’s performance.
Additionally, the author does not authorize the publication of this information in any media outlet without prior permission. This work is intended solely for demonstration and educational purposes. Unauthorized use, distribution, or publication of this material is prohibited and may result in legal action.
By accessing and using this analysis, you agree to hold the author harmless from any claims, liabilities, or damages arising from the use or misuse of the information provided.