Increase in gaming from avoiding covid-19

Covid-19 has more people playing video games

At the time of writing this many business are encouraging employees to work from home in order to avoid the spread of covid-19. Many other businesses are cutting hours, working on skeleton crews, or shutting down all together especially in areas seeing a large number of cases. Schools and universities across the world are closing and/or going virtual. In America especially, today was the first day a large number of people were encouraged/forced to stay home. So, are people carrying on productively from their homes or taking some time to relax? I looked at how many more people were playing video games this Monday compared to the past year of Mondays.

Monday the 16th was NOT your average day on Steam

Using https://steamdb.info/ I gathered the number of people playing games on Steam for the past year and a day. For everyday of the week, I normalized the number of players online for a given day of the week so we can compare apples to apples (and Mondays to Mondays, not Mondays to Saturdays).
Details: I z-scored the number of players by the average number of players for that day of the week. This just means that for an average Monday you would expect a value around 0. If there are more people than normal playing it will be greater than 0. Importantly, these data are normalized separately for each day of the week so we are seeing how different is any given day of the week to that day’s normal activity.

The below heatmap shows the normalized number players per day of the week (starting with Monday on the left-most column) for each week (rows; day-month-year) for the past year. Darker, purpler shades mean less people, lighter more yellow shades mean more people relative to that day of the week. There’s a ton of interesting things in here, like the peak during Christmas break and drought of players between summer and Christmas. But as for Monday the 16th, there is a massive spike! Monday the 16th is the most abnormal day in the past year with a normalized value of 3.36. The next closest is 2.88 on Saturday the 14th, indicating people may have been already practicing social distancing over the past weekend. So how abnormal was the 16th?

We don’t see Mondays like this unless it’s Christmas

Next I looked specifically at Monday’s and plotted the distribution of daily player numbers as a histogram. We can see that normally the peak number of players on a Monday is between 4M and 4.5M people (74% of Mondays have less than 4.5M people). The red data point all the way over at 5,487,638 is from today, Monday the 16th. The only other Monday that is close is the Monday after Christmas (30th of Jan) at 5,213,571 as, I assume, family gatherings wrap up and people have some time to play games before heading back to work. Thus, Monday the 16th saw an additional 1.2M gamers compared to your average Monday of the past year; a 28% increase. This Monday looked more much like a Saturday or Sunday than a weekday in terms of number of people playing. Even still, the average weekend this past year had a mere 5.1M gamers compared to this Monday’s 5.5M.

Play more games, stop covid-19 spreading

I hope you found these data interesting. I’ll try to make an update post as more and more people are isolating themselves to help stop the spread of covid-19. Will the work-at-home laissez faire attitude continue? Or will the novelty of gaming during work wear off? On the more unfortunate side, if mass lay offs come, will people take some time to game instead of trying to head back into the job market? We’ll find out!

Please stay safe and follow CDC guidelines (https://www.cdc.gov/coronavirus/2019-ncov/index.html) regarding covid-19.


I made these graphs with Python using Matplotlib. Code is below.

#heatmap
fig, ax = plt.subplots()
im = ax.imshow(normHeatMap3, interpolation=’nearest’, aspect=’auto’)
y_label_list = dates[range(0,53,4)]
ax.set_yticks(range(0,53,4))
ax.set_yticklabels(y_label_list)
x_label_list = [‘M’,’T’,’W’,’T’,’F’,’S’,’S’]
ax.set_xticks(range(0,7))
ax.set_xticklabels(x_label_list)
ax.xaxis.tick_top()
cbar = fig.colorbar(im, ax=ax)
cbar.ax.get_yaxis().labelpad = 15
cbar.set_label(‘Z-score’,size=18, rotation=270)

#histogram
f, ax = plt.subplots()
ax.hist(data,bins=list(range(3500000,5700000,100000)),color =”#006ad4″,ec=’black’);
plt.ylabel(‘Frequency’,fontsize = 16)
plt.xlabel(‘Peak # of players’,fontsize = 16)
plt.title(‘Histogram of the # of peak gamers on Steam on a Monday’,fontsize=16)
#commas on x axis
ax.get_xaxis().set_major_formatter(tkr.FuncFormatter(lambda x, p: format(int(x), ‘,’)))
# make max bin red
bar_value_to_label = data.max()
min_distance = float(“inf”) # initialize min_distance with infinity
index_of_bar_to_label = 0
for i, rectangle in enumerate(ax.patches): # iterate over every bar
tmp = abs( # tmp = distance from middle of the bar to bar_value_to_label
(rectangle.get_x() +
(rectangle.get_width() * (1 / 2))) – bar_value_to_label)
if tmp < min_distance: # we are searching for the bar with x cordinate
# closest to bar_value_to_label
min_distance = tmp
index_of_bar_to_label = i
ax.patches[index_of_bar_to_label].set_color(‘r’)
ax.patches[index_of_bar_to_label].set_edgecolor(‘k’)

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.