• Welcome to Smashboards, the world's largest Super Smash Brothers community! Over 250,000 Smash Bros. fans from around the world have come to discuss these great games in over 19 million posts!

    You are currently viewing our boards as a visitor. Click here to sign up right now and start on your path in the Smash community!

Have some stats

mattk210

Smash Cadet
Joined
May 22, 2007
Messages
40
Location
Sydney, Australia
juggleguy said on MIOM he'd like to see stats for single-game entrants (enjoyed the most recent show btw, perfect set of 3 presenters). I counted them on the pools pages; here they are among some other stats. "gg" is injustice, not sure why they used that code.

game: [#entrants for just that game]/[#total entrants]
mvc3: 446/1292 (35%)
kof13: 117/434 (27%)
p4a: 130/402 (32%)
gg: 71/581 (12%)
ttt2: 138/356 (39%)
ssf4: 539/1598 (34%)
ssbm: 409/691 (59%)
mk9: 22/199 (11%)
sfxt: 36/543 (7%)

n: #players who entered n games
1: 1908
2: 1005
3: 429
4: 139
5: 45
6: 12
7: 2
8: 3
9: 0
average player entered 1.720576 games

Shoutouts to Joseph Macaranas ("Jayhawk"), Ernest Johnson and Luiz Gargaglione ("Lamg") for entering every game except Melee

game: [#players who entered ssbm and that game]/[#total entrants]
mvc3: 148/1292 (11%)
kof13: 35/434 (8%)
p4a: 51/402 (13%)
gg: 47/581 (8%)
ttt2: 25/356 (7%)
ssf4: 139/1598 (9%)
mk9: 16/199 (8%)
sfxt: 33/543 (6%)

As you may have noticed, the entrance numbers being thrown around are overstated. Probably a result of cancellations. In any case there are 691 entrants for melee, so evo doesn't quite double pound IV in entrance numbers.

Anyone is welcome to inspect the code and verify its output:

Code:
from __future__ import division
import urllib2
import re
import pickle
import os
 
if not os.path.exists("data"):
  os.makedirs("data")
 
try:
  bracketnames = pickle.load(open("data/bracketnames",'r'))
except IOError:
  html = urllib2.urlopen("http://evo2013.s3.amazonaws.com/brackets/index.html").read()
  bracketnames = re.findall('<a href="([^"]*).html">',html)
  pickle.dump(bracketnames,open("data/bracketnames",'w'))
bracketnames.sort(key = lambda bracketname: bracketname[:4] != "ssbm")
 
playergamelists = {}
gamecounts = {}
singlegamecounts = {}
withssbmgamecounts = {}
for bracketname in bracketnames:
  gamename = bracketname.split('_')[0]
  if gamename not in gamecounts:
    gamecounts[gamename] = singlegamecounts[gamename] = withssbmgamecounts[gamename] = 0
  try:
    playernames = pickle.load(open("data/playernames_%s"%bracketname,'r'))
  except IOError:
    print "scraping %s"%bracketname
    html = urllib2.urlopen("http://evo2013.s3.amazonaws.com/brackets/%s.html"%bracketname).read()
    playernames = re.findall('<div class="player-name">(.*?)&nbsp;</div>\s*<div class="player-handle">(.*?)&nbsp;</div>',html)
    playernames = [playername for playername in playernames
      if playername != ('','') and playername != ('Bye ', '')]
    pickle.dump(playernames,open("data/playernames_%s"%bracketname,'w'))
  for playername in playernames:
    if playername not in playergamelists:
      playergamelists[playername] = []
    playergamelists[playername] += [gamename]
    gamecounts[gamename] += 1
    if "ssbm" in playergamelists[playername]:
      withssbmgamecounts[gamename] += 1
 
entrancebreadthcounts = [0]*len(gamecounts)
for playername in playergamelists:
  playergamelist = playergamelists[playername]
  if len(playergamelist) == 1:
    singlegamecounts[playergamelist[0]] += 1
  entrancebreadthcounts[len(playergamelist)-1] += 1
 
print "\ngame: [#entrants for just that game]/[#total entrants]"
for gamename in gamecounts:
  gamecount = gamecounts[gamename]
  singlegamecount = singlegamecounts[gamename]
  print "%s: %i/%i (%i%%)"%(gamename,singlegamecount,gamecount,round(100*singlegamecount/gamecount))
 
print "\nn: #players who entered n games"
for nminus1,entrancebreadthcount in enumerate(entrancebreadthcounts):
  print "%i: %i"%(nminus1+1,entrancebreadthcount)
print "average player entered %f games"%(sum(gamecounts.values())/len(playergamelists))
 
print "\ngame: [#players who entered ssbm and that game]/[#total entrants]"
for gamename in gamecounts:
  if gamename == "ssbm":
    continue
  gamecount = gamecounts[gamename]
  withssbmgamecount = withssbmgamecounts[gamename]
  print "%s: %i/%i (%i%%)"%(gamename,withssbmgamecount,gamecount,round(100*withssbmgamecount/gamecount))
(im assuming players entered each game under the same name and there are no two people with the same real name/username pair)
 

Juggleguy

Smash Grimer
Premium
Joined
Aug 16, 2005
Messages
9,354
Location
Ann Arbor, MI
Nice job data parsing for that information. I really enjoy stats like these, they always produce a new perspective and a new talking point for discussion. Glad you enjoyed the latest MIOM episode.
 

Morin0

Smash Lord
Joined
Oct 9, 2007
Messages
1,907
Location
San Diego, CA
Cancellations? You mean some people got a refund? How? I asked MrWizard if refunds were allowed, and he said no.

hmm
 

smashmachine

Smash Lord
Joined
May 25, 2009
Messages
1,285
Persona and Marvel have the highest % of people also in Melee
not particularly surprised
 
Top Bottom