<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Daniel Sánchez Moares</title>
    <description>The latest articles on Forem by Daniel Sánchez Moares (@danisanchezdevx).</description>
    <link>https://forem.com/danisanchezdevx</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3914552%2Fa59e7ee6-0c1e-4c71-b63b-c2465f41eced.jpeg</url>
      <title>Forem: Daniel Sánchez Moares</title>
      <link>https://forem.com/danisanchezdevx</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/danisanchezdevx"/>
    <language>en</language>
    <item>
      <title>Analyzing Steam Games 2025: Genres, Players and User Ratings</title>
      <dc:creator>Daniel Sánchez Moares</dc:creator>
      <pubDate>Sat, 09 May 2026 07:13:04 +0000</pubDate>
      <link>https://forem.com/evolve-space/analyzing-steam-games-2025-genres-players-and-user-ratings-556d</link>
      <guid>https://forem.com/evolve-space/analyzing-steam-games-2025-genres-players-and-user-ratings-556d</guid>
      <description>&lt;p&gt;As part of my &lt;strong&gt;Master in Data Science &amp;amp; AI at Evolve&lt;/strong&gt;, I worked on a data analysis project using a real Steam games dataset from 2025.&lt;/p&gt;

&lt;p&gt;The goal of the project was to practice the full workflow of a data analysis project: understanding the dataset, cleaning it, transforming variables, creating visualizations and explaining the results in a way that is easy to understand.&lt;/p&gt;

&lt;p&gt;The main question I wanted to answer was:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which Steam genres have the highest average estimated users per game, and which ones have the highest average playtime?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Later, I expanded the analysis with two additional questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Are there clear differences between free and paid games?&lt;/li&gt;
&lt;li&gt;Is there any relationship between positive ratings, estimated users and average playtime?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Dataset
&lt;/h2&gt;

&lt;p&gt;The dataset used in this project was &lt;strong&gt;Steam Games dataset 2025&lt;/strong&gt;, downloaded from Kaggle.&lt;/p&gt;

&lt;p&gt;It contains around &lt;strong&gt;95,000 games&lt;/strong&gt; and &lt;strong&gt;47 columns&lt;/strong&gt;, including information such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;game name;&lt;/li&gt;
&lt;li&gt;release date;&lt;/li&gt;
&lt;li&gt;genres;&lt;/li&gt;
&lt;li&gt;price;&lt;/li&gt;
&lt;li&gt;estimated owners;&lt;/li&gt;
&lt;li&gt;average playtime;&lt;/li&gt;
&lt;li&gt;positive and negative reviews.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One important detail is that the original CSV file is not included in the GitHub repository because it is too large. Instead, the repository explains where the file should be placed in order to reproduce the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data cleaning and transformation
&lt;/h2&gt;

&lt;p&gt;Before analyzing the data, I had to transform several columns.&lt;/p&gt;

&lt;p&gt;For example, the &lt;code&gt;estimated_owners&lt;/code&gt; column does not contain an exact number of users. It contains ranges such as &lt;code&gt;100000 - 200000&lt;/code&gt;. To work with this variable, I used the midpoint of each range as an approximation.&lt;/p&gt;

&lt;p&gt;I also converted &lt;code&gt;average_playtime_forever&lt;/code&gt; from minutes to hours, separated games with multiple genres, translated the main genre names into Spanish for the final report, and created summary tables for the analysis.&lt;/p&gt;

&lt;p&gt;One of the most important decisions was not to use total estimated users by genre as the main metric. A single game can belong to several genres, so summing users by genre can produce inflated numbers. Instead, I focused on &lt;strong&gt;average estimated users per game&lt;/strong&gt;, which gave a more realistic comparison between genres.&lt;/p&gt;

&lt;h2&gt;
  
  
  Main findings
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffl7oqhdl4lrslhsgqy90.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffl7oqhdl4lrslhsgqy90.png" alt="Bar chart showing the top Steam genres by average estimated users per game, with Massively Multiplayer leading, followed by Free To Play, Action, RPG and Strategy" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Among genres with at least 1,000 games, the genres with the highest average estimated users per game were:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Massively Multiplayer&lt;/li&gt;
&lt;li&gt;Free To Play&lt;/li&gt;
&lt;li&gt;Action&lt;/li&gt;
&lt;li&gt;RPG&lt;/li&gt;
&lt;li&gt;Strategy&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This showed that popularity is not only about how many games a genre has, but also about how many users an average game in that genre can attract.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkrtqzsta14sxcly3hr52.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkrtqzsta14sxcly3hr52.png" alt="Bar chart showing the Steam genres with the highest average playtime, with Simulation leading, followed by Massively Multiplayer, Casual, Adventure and Action" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When analyzing average playtime, the ranking changed. The genres with the highest average playtime were:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Simulation&lt;/li&gt;
&lt;li&gt;Massively Multiplayer&lt;/li&gt;
&lt;li&gt;Casual&lt;/li&gt;
&lt;li&gt;Adventure&lt;/li&gt;
&lt;li&gt;Action&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This was one of the most interesting parts of the project. The genres with the most estimated users were not always the same genres with the highest playtime. In other words, popularity and retention are related, but they are not the same thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Free games vs paid games
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbup2w2eemjyns4zlufl9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbup2w2eemjyns4zlufl9.png" alt="Comparison chart between free and paid Steam games showing that free games have more average estimated users while paid games have higher average playtime" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also compared free and paid games.&lt;/p&gt;

&lt;p&gt;Free games had a higher average number of estimated users. This makes sense because they have no economic barrier to entry, so more users can try them.&lt;/p&gt;

&lt;p&gt;However, paid games had higher average playtime. My interpretation is that users who pay for a game may be more likely to spend more time playing it.&lt;/p&gt;

&lt;p&gt;Interestingly, the average positive rating was very similar between free and paid games.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ratings and popularity
&lt;/h2&gt;

&lt;p&gt;In the last part of the project, I analyzed whether positive ratings were strongly related to estimated users or average playtime.&lt;/p&gt;

&lt;p&gt;To make this analysis more reliable, I filtered games with at least 50 reviews. This was important because games with very few reviews can have extreme percentages that are not representative.&lt;/p&gt;

&lt;p&gt;The result was that positive ratings had a very weak relationship with both estimated users and playtime. A game can be popular without having exceptionally high ratings, and a highly rated game does not necessarily have a massive number of users.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Notes
&lt;/h2&gt;

&lt;p&gt;Some methodological decisions were important for keeping the analysis consistent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;estimated_owners&lt;/code&gt; was converted from ranges into approximate numeric values using the midpoint of each range.&lt;/li&gt;
&lt;li&gt;Genres were exploded so that each game could be counted once per genre.&lt;/li&gt;
&lt;li&gt;Genres with fewer than 1,000 games were filtered out in the main genre comparison to avoid unstable rankings.&lt;/li&gt;
&lt;li&gt;Games with fewer than 50 reviews were excluded from the ratings analysis to reduce noise.&lt;/li&gt;
&lt;li&gt;Correlation was interpreted carefully, since it does not imply causation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I learned
&lt;/h2&gt;

&lt;p&gt;One of the main things I learned is that in data analysis, getting a result is not enough. The result also needs to make sense.&lt;/p&gt;

&lt;p&gt;At one point, the total estimated users by genre produced very large numbers. Instead of accepting them directly, I reviewed the metric and realized that using average users per game was a better approach for the question I was trying to answer.&lt;/p&gt;

&lt;p&gt;I also practiced:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cleaning and transforming real-world data;&lt;/li&gt;
&lt;li&gt;creating new variables;&lt;/li&gt;
&lt;li&gt;working with grouped summaries;&lt;/li&gt;
&lt;li&gt;building visualizations;&lt;/li&gt;
&lt;li&gt;explaining limitations;&lt;/li&gt;
&lt;li&gt;preparing a project to be shared publicly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also used AI support during the project, mainly to help structure the work, review code, improve explanations and detect possible interpretation issues. The analysis decisions and final interpretation were reviewed step by step as part of the learning process.&lt;/p&gt;

&lt;h2&gt;
  
  
  GitHub repository
&lt;/h2&gt;

&lt;p&gt;You can find the full project here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/DaniSanchezDevx/Proyecto-Master-DataScience-Evolve-Daniel-Sanchez-Moares" rel="noopener noreferrer"&gt;https://github.com/DaniSanchezDevx/Proyecto-Master-DataScience-Evolve-Daniel-Sanchez-Moares&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This academic project was developed during the &lt;strong&gt;Master in Data Science &amp;amp; AI at Evolve&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://evolve.es" rel="noopener noreferrer"&gt;https://evolve.es&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>datascience</category>
      <category>pandas</category>
      <category>jupyter</category>
    </item>
    <item>
      <title>How I built my developer portfolio with React and TanStack Start — my project at Evolve</title>
      <dc:creator>Daniel Sánchez Moares</dc:creator>
      <pubDate>Tue, 05 May 2026 19:07:49 +0000</pubDate>
      <link>https://forem.com/evolve-space/building-my-developer-portfolio-as-a-data-science-masters-project-11f2</link>
      <guid>https://forem.com/evolve-space/building-my-developer-portfolio-as-a-data-science-masters-project-11f2</guid>
      <description>&lt;p&gt;A developer portfolio is more than a personal website. In my case, I wanted to solve a very practical problem: I needed a single place where I could present my profile, organize my technical projects, and make it easy for people to contact me. As I kept building projects related to Python, automation, backend development, and data-oriented tools, it became clear that I needed a portfolio that felt professional, maintainable, and real.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj3fjry3znri7en450v00.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj3fjry3znri7en450v00.png" alt=" " width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This project was especially interesting to me because it was not only about design. It was also about architecture, content organization, deployment, and user experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  The project environment
&lt;/h2&gt;

&lt;p&gt;Instead of working with a dataset, this project was built around a real frontend and deployment environment. The main challenge was to create a site that could combine presentation and structure without becoming difficult to maintain.&lt;/p&gt;

&lt;p&gt;The portfolio was built with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;TanStack Start&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;React 19&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TypeScript&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tailwind CSS 4&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;typed Markdown content collections&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vercel&lt;/strong&gt; for deployment&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resend&lt;/strong&gt; for the contact form&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The content includes several structured sections: About, Skills, Projects, Experience, Education, Resume, and Contact. One important requirement was that the portfolio should support both &lt;strong&gt;Spanish and English&lt;/strong&gt;, work well on desktop and mobile, and include a real contact form instead of a static email link.&lt;/p&gt;

&lt;h2&gt;
  
  
  The process
&lt;/h2&gt;

&lt;p&gt;The first step was defining the structure of the portfolio. I wanted a homepage with section-based navigation, but also standalone routes for pages like &lt;code&gt;/resume&lt;/code&gt;, &lt;code&gt;/projects&lt;/code&gt;, and &lt;code&gt;/contact&lt;/code&gt;. This made the project feel more complete and easier to navigate.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1bm9dvb032q9h1b6lfnu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1bm9dvb032q9h1b6lfnu.png" alt=" " width="800" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The next step was content management. Instead of hardcoding projects, work experience, and education directly in components, I used Markdown files with typed frontmatter. That decision made the project much easier to scale, because adding or updating content became a matter of editing structured files instead of modifying UI code.&lt;/p&gt;

&lt;p&gt;After that, I focused on the interface itself. I built clear sections for the main information and paid special attention to the projects area. Rather than using a basic static grid, I implemented an interactive card deck. The main card opens the GitHub repository, while side cards can be brought to the front by clicking them. I chose this approach because it made the section more dynamic without hurting usability.&lt;/p&gt;

&lt;p&gt;I also added theme switching, bilingual support, responsive design improvements, and a contact form connected to a server-side API route. Finally, I deployed the site to Vercel and configured the environment variables needed for email sending.&lt;/p&gt;

&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;p&gt;The final result is a portfolio that is fully deployed and publicly accessible. It includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a responsive layout&lt;/li&gt;
&lt;li&gt;dark and light mode&lt;/li&gt;
&lt;li&gt;language switching between Spanish and English&lt;/li&gt;
&lt;li&gt;interactive project cards&lt;/li&gt;
&lt;li&gt;a functional contact form&lt;/li&gt;
&lt;li&gt;a detailed resume page&lt;/li&gt;
&lt;li&gt;structured project, education, and experience content&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From a technical point of view, one of the best outcomes was having a project that is visually polished while still being easy to maintain. The use of typed content collections and a clean route structure helped a lot with that.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqp6ukmg5wt7f2xckboj5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqp6ukmg5wt7f2xckboj5.png" alt=" " width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also documented the project properly in GitHub, including screenshots and setup instructions, so it can be presented as a complete academic and professional project.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned
&lt;/h2&gt;

&lt;p&gt;One of the main things I learned is that a portfolio is itself a product. It is not only a container for other projects, but also a direct reflection of how you think about development.&lt;/p&gt;

&lt;p&gt;I also learned the value of separating content from presentation, especially in projects that will continue evolving over time. If I had to improve something in the future, I would spend more time on SEO, richer project detail pages, and perhaps more analytics around how visitors interact with the site.&lt;/p&gt;

&lt;p&gt;A logical next step would be to keep expanding the portfolio with new projects and technical articles, turning it into a stronger public record of my work.&lt;/p&gt;

&lt;p&gt;You can find the GitHub repository here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/DaniSanchezDevx/Proyecto-Master-DataScience-Evolve-DanielJoseSanchezMoares" rel="noopener noreferrer"&gt;Proyecto-Master-DataScience-Evolve-DanielJoseSanchezMoares&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This project was developed during my Master's at Evolve&lt;br&gt;
(&lt;a href="https://evolve.es" rel="noopener noreferrer"&gt;https://evolve.es&lt;/a&gt;).&lt;/p&gt;

</description>
      <category>datascience</category>
      <category>react</category>
      <category>typescript</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
