Using Streamlit as a Dashboarding Framework in Sports Analytics
In this article, I explain the usefulness of the Streamlit framework and provide specific examples of how it can be applied within an analytics department for a team.
What is Streamlit?
Streamlit is an open-source Python library that allows you to quickly build and share interactive web applications for data science and machine learning projects. While this one-line description is quite accurate, Streamlit’s true power becomes even more evident with a closer look. Essentially, Streamlit serves as a dashboarding framework that can act as the end-all visualization tool for a project—similar to Tableau or Power BI, but with some notable differences. For one, Streamlit functions like a website: you can share a link with users who can then interact with the visualizations according to their needs, making it highly customizable and user-friendly.
Another major advantage is that Streamlit is tightly integrated with GitHub, which simplifies collaboration and enables teams to continuously update data within the visualizations effortlessly. Best of all, Streamlit is entirely free, with no paywall like those associated with Tableau or Power BI. In our case, where we lack software engineers to build a website framework for visualizations and need a cost-effective solution, Streamlit has been the perfect answer. With our recent expansion from 8 to 16 teams, Streamlit has allowed us to scale up our reports without the steep costs.
How can this apply to what I do?
That’s the key question. Over the last six months, I've gained substantial experience with Streamlit and seen just how practical it can be. I’ve used it to build a post-match review app, develop complex player development plans, and even create simple training reports. Based on this, I’m convinced Streamlit should be in every young analyst’s toolkit—it’s an invaluable resource for building custom, interactive tools that make data insights more accessible and actionable.
Training Report
Bolts Training Report
Let’s start with a simple yet impactful example: a training report for our Sports Science coach at the Bolts. This report shows the average weekly training load for each player, detailing metrics like total distance and high-intensity distance. It includes both an interactive table and a scatterplot (built with the Plotly library), offering our sports scientist a clear view of each player's performance. The scatterplot, in particular, helps identify underperforming players who might benefit from additional physical training or targeted development.
What’s especially useful is that the report is tailored to the Bolts, dynamically adjusting to the selected team and working seamlessly across all 18 teams in the club. The data is updated weekly or bi-weekly by querying our physical data provider’s API and uploading new files to GitHub. Streamlit’s compatibility with Python libraries like Plotly, along with its built-in DataFrame-to-HTML conversion, makes this report intuitive and visually accessible—ensuring that our Sports Science coach can make informed decisions quickly and effectively.
Post-Match Review App
Bolts Post-Match Review App
This app is much more complex as it pulls data from multiple sources: our physical data provider, tactical data provider, and in-house metrics such as expected goals (xG). The result is an automated post-match report, filtered by the team name, opponent, and match date and is presented to the players after a game. Most of the report comes from data tagged by our tactical data provider and within that framework, there are several different areas that we need to query such as the starting lineup, the player positions and time within that position, and the overall team data. These various data sets are combined to create a comprehensive post-match review that’s accessible and engaging for young players.
Streamlit’s integration of Python and HTML makes this transition very smooth and easy to work with. Its expandable chart feature, for instance, is particularly useful for our dynamic xG chart—where players can hover over points to see names and xG values, and even click a link to watch a video of each shot, merging video and data analysis in a single interface. If everyone is interested, If there's enough interest, I’d be glad to write a dedicated article covering the Post-Match Review App in depth, because that in itself was a massive project.
Conclusion
Thank you all for reading! Streamlit has been an incredible tool for generating dynamic reports, and I’m excited to continue using it and potentially uncover new features as I work on building a comprehensive database for the Bolts. As a senior seeking opportunities in sports analytics, I invite anyone interested in my work to check out my GitHub, where I’ve shared various projects, models, and visualizations. Also, feel free to connect with me on LinkedIn or Twitter—I’d love to chat. See you next time!