Alright, let’s talk about my deep dive into UD Oliveirense. I’ve been messing around with football data lately, and this Portuguese club caught my eye. It wasn’t love at first sight, more like morbid curiosity after seeing their name pop up in some transfer rumors linked to bigger teams.

First things first: I started by scraping data. I’m talking about match results, player stats, league standings – the whole shebang. Used Python with Beautiful Soup and Requests. It was a real pain in the butt, honestly. Different websites had different formats, some had weird encoding, and others just plain blocked my scraper after a few requests. Had to implement rotating proxies and user agents just to get the info I needed.
Once I had the data, the real fun began: cleaning it. You wouldn’t believe the inconsistencies. Player names misspelled, dates in different formats, missing data… it was a nightmare. Used Pandas to wrangle the data into shape. Spent a good chunk of time just standardizing everything.
Then came the analysis. What I really wanted to figure out was: What’s their play style? Are they good at home or away? Who are their key players? I started simple, looking at goals scored, goals conceded, possession stats. Standard stuff. But then I got a bit fancier. I tried to calculate some expected goals (xG) using the data I had, which was a total disaster. The data wasn’t granular enough to get anything meaningful.
So, I pivoted. Instead of xG, I focused on passing networks. I tried to map out who was passing to whom and how often. Used NetworkX for this. It was cool to visualize the passing patterns, but again, the data was too limited. I couldn’t distinguish between short passes, long passes, through balls, etc.
Next, I tried looking at individual player performance. I calculated things like pass completion rate, shots on target, tackles won. Tried to identify their key players based on these metrics. This was a bit more successful. I could see who was consistently performing well and who was struggling. Used Matplotlib and Seaborn to visualize the player stats. Made some cool looking charts, even if the insights were limited.

Then, I dove into their home and away form. Were they significantly better at home? Did they play differently? Turns out, yeah, they were a bit better at home, but not dramatically. The difference in their stats was marginal.
Finally, I looked at their historical performance. How had they done in previous seasons? Were they improving or declining? Used the historical data to plot their league position over time. It was a bit all over the place, to be honest. No clear trend of improvement or decline. Just a mid-table team bouncing around.
In conclusion? UD Oliveirense are… well, they’re a team. My analysis didn’t reveal any hidden gems or earth-shattering insights. The data was too limited to do anything truly sophisticated. But, I did learn a lot about data scraping, cleaning, and analysis. And hey, maybe I can use these skills for a different project down the line.
- Scraped website data using Python, Beautiful Soup, and Requests.
- Cleaned and standardized the data using Pandas.
- Analyzed team performance, including goals scored, goals conceded, and possession.
- Attempted to calculate expected goals (xG).
- Visualized passing networks using NetworkX.
- Evaluated individual player performance using Matplotlib and Seaborn.
- Compared home and away form.
- Examined historical performance.