TopEDH

Analysis of most-played cards in the Commander format of Magic the Gathering.

About Magic the Gathering

Magic: The Gathering (MTG; also known as Magic) is a trading card game created by Richard Garfield.

First published in 1993 by Wizards of the Coast, Magic was the first trading card game produced and it continues to thrive, with approximately twenty million players as of 2015. Magic can be played by two or more players in various formats, the most common of which uses a deck of 60+ cards, either in person with printed cards or using a deck of virtual cards through the Internet-based Magic: The Gathering Online, on a smartphone or tablet, or other programs.

Each game represents a battle between wizards known as "planeswalkers", who employ spells, artifacts, and creatures depicted on individual Magic cards to defeat their opponents. Although the original concept of the game drew heavily from the motifs of traditional fantasy role-playing games such as Dungeons & Dragons, the gameplay of Magic bears little similarity to pencil-and-paper adventure games, while having substantially more cards and more complex rules than many other card games.

New cards are released on a regular basis through expansion sets. An organized tournament system played at an international level and a worldwide community of professional Magic players has developed, as well as a substantial secondary market for Magic cards. Certain Magic cards can be valuable due to their rarity and utility in gameplay. Prices range from a few cents to thousands of dollars.

(From Wikipedia)

About the Commander Format

Created and popularized by fans, the Commander (also known as "EDH") variant is usually played in casual Free-for-All multiplayer games, although two-player games are also popular. Each player's deck is headed by a legendary creature (a character within the game world) designated as that deck's commander. A player's choice of commander determines which other cards can be played in the deck (while except for basic lands, each card in the deck must have a different name).

(From MTG Salvation Wiki)

About TopEDH

TopEDH is a report designed to assist Commander players in purchasing decisions. By combining pricing data and decklists, we look at a "decks/dollar" metric called "Value". In other words, how many unique decks (one per commander) would a player want to put this card in, divided by how much they will pay for the card. In this way, players can optimize their purchasing to fill as many slots as possible within a budget.

A Note About Power Level

While the "power" of a card is difficult to quantify, one might suspect that the occurences of a card in decks indicates its gameplay value.

Unfortunately, this is not the case. By direct observation, an expert can see that functionally similar but stronger cards sometimes appear at lower occurences. We suspect this relates to age, release count, and presence on the Reserved List, and prevelance of play in other formats. Further analysis may incorporate these factors to optimize for quality of card purchases in addition to quantity.

Setup

% matplotlib inline

import numpy, pandas, seaborn

edh = pandas.read_csv( " /home/aaron/src/python/topedh/output.csv " , delimiter = " ; " )

Highest Occurences Overall

Occurences: The number of commanders among decks in which this card often sees play. By measuring a card based on which decks it can be found, we neutralize the effect of commander popularity on a card's rating in this list. Otherwise, cards played with popular commanders would be artificially inflated.

Occurences were scraped from edhrec.com using Beautiful Soup.

Basic Stats

mean = numpy.mean(edh[ ' occurences ' ]) std = numpy.std(edh[ ' occurences ' ]) median = numpy.median(edh[ ' occurences ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 9.068072866730585 Standard Deviation: 21.036265630734256 Median: 3.0

tscores = (edh[ ' occurences ' ] - mean) / std tscores = list ( zip (edh[ ' title ' ], edh[ ' occurences ' ], edh[ ' occurences ' ] / 489 , tscores)) df = pandas.DataFrame( data = tscores, columns = [ ' Title ' , ' Commanders ' , ' VS S. Ring ' , ' Z-Score (Commanders) ' ]) df = df.sort_values( ' Z-Score (Commanders) ' , ascending = 0 ) df[: 25 ]

Title Commanders VS S. Ring Z-Score (Commanders) 0 sol ring 489 1.000000 22.814502 1 temple of the false god 394 0.805726 18.298491 2 lightning greaves 373 0.762781 17.300215 3 swiftfoot boots 365 0.746421 16.919920 4 reliquary tower 349 0.713701 16.159329 5 solemn simulacrum 328 0.670757 15.161052 6 evolving wilds 252 0.515337 11.548244 7 command tower 239 0.488753 10.930264 8 terramorphic expanse 232 0.474438 10.597505 9 caged sun 232 0.474438 10.597505 10 gilded lotus 229 0.468303 10.454894 11 nykthos, shrine to nyx 220 0.449898 10.027061 12 burnished hart 187 0.382413 8.458342 13 thran dynamo 186 0.380368 8.410805 14 darksteel ingot 184 0.376278 8.315731 15 sensei's divining top 181 0.370143 8.173120 16 expedition map 177 0.361963 7.982972 17 myriad landscape 177 0.361963 7.982972 18 skullclamp 176 0.359918 7.935435 19 demonic tutor 170 0.347648 7.650214 20 diabolic tutor 166 0.339468 7.460066 21 cyclonic rift 160 0.327198 7.174844 22 bojuka bog 159 0.325153 7.127307 23 swords to plowshares 158 0.323108 7.079770 24 commander's sphere 154 0.314928 6.889622

Highest Playable Value Overall

Here we define playable value to be occurences divided by price. Or, in other words "decks per dollar". Price has been adjusted from the mid value found at dawnglare.com. Cards without a listed price are assumed to be $0.50, which could be wildly incorrect. These cards are relatively cheap and played in many decks. Price Data was accessed on 6/5/2016.

d = { ' Title ' : edh[ ' title ' ], ' Value ' : edh[ ' value ' ], ' Type ' : edh[ ' type ' ]} df = pandas.DataFrame( data = d) df = df.sort_values( ' Value ' , ascending = 0 ) df[: 25 ]

Title Type Value 1 temple of the false god Land 788.00 3 swiftfoot boots Artifact — Equipment 730.00 6 evolving wilds Land 504.00 8 terramorphic expanse Land 464.00 12 burnished hart Artifact Creature — Elk 374.00 14 darksteel ingot Artifact 368.00 20 diabolic tutor Sorcery 332.00 24 commander's sphere Artifact 308.00 29 mind stone Artifact 298.00 37 rogue's passage Land 284.00 49 acidic slime Creature — Ooze 238.00 59 steel hellkite Artifact Creature — Dragon 202.00 0 sol ring Artifact 196.39 63 everflowing chalice Artifact 196.00 22 bojuka bog Land 184.88 70 halimar depths Land 184.00 76 hedron archive Artifact 178.00 79 buried ruin Land 174.00 41 oblivion ring Enchantment 172.73 7 command tower Land 170.71 84 vandalblast Sorcery 170.00 91 reclamation sage Creature — Elf Shaman 166.00 90 blue sun's zenith Instant 166.00 93 dissipate Instant 162.00 47 krosan grip Instant 161.33

mean = numpy.mean(df[ ' Value ' ]) std = numpy.std(df[ ' Value ' ]) median = numpy.median(df[ ' Value ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 9.697279824681504 Standard Deviation: 24.832352551986812 Median: 4.0

Occurences by Color

d = { ' Title ' : edh[ ' title ' ], ' Commanders ' : edh[ ' occurences ' ], ' Color ' : edh[ ' colors ' ]} df = pandas.DataFrame( data = d) df = df.sort_values( ' Commanders ' , ascending = 0 )

Colorless

df[df[ ' Color ' ] == ' C ' ][: 50 ]

Color Commanders Title 0 C 489 sol ring 1 C 394 temple of the false god 2 C 373 lightning greaves 3 C 365 swiftfoot boots 4 C 349 reliquary tower 5 C 328 solemn simulacrum 6 C 252 evolving wilds 7 C 239 command tower 8 C 232 terramorphic expanse 9 C 232 caged sun 10 C 229 gilded lotus 11 C 220 nykthos, shrine to nyx 12 C 187 burnished hart 13 C 186 thran dynamo 14 C 184 darksteel ingot 15 C 181 sensei's divining top 16 C 177 expedition map 17 C 177 myriad landscape 18 C 176 skullclamp 22 C 159 bojuka bog 24 C 154 commander's sphere 25 C 154 arcane lighthouse 28 C 150 urborg, tomb of yawgmoth 29 C 149 mind stone 31 C 148 strip mine 33 C 148 gauntlet of power 37 C 142 rogue's passage 40 C 136 extraplanar lens 42 C 131 thought vessel 46 C 122 ghost quarter 51 C 115 chromatic lantern 59 C 101 steel hellkite 63 C 98 everflowing chalice 64 C 98 worn powerstone 66 C 98 darksteel plate 70 C 92 halimar depths 71 C 92 nevinyrral's disk 72 C 91 cabal coffers 76 C 89 hedron archive 79 C 87 buried ruin 83 C 86 mimic vat 88 C 84 mind's eye 101 C 79 sword of feast and famine 103 C 78 elixir of immortality 109 C 75 whispersilk cloak 110 C 75 loxodon warhammer 111 C 75 sword of the animist 114 C 74 staff of nin 120 C 72 mana vault 122 C 71 thespian's stage

dfstats = df[df[ ' Color ' ] == ' C ' ] mean = numpy.mean(dfstats[ ' Commanders ' ]) std = numpy.std(dfstats[ ' Commanders ' ]) median = numpy.median(dfstats[ ' Commanders ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 18.0 Standard Deviation: 38.54764293794291 Median: 6.0

White

df[df[ ' Color ' ] == ' W ' ][: 25 ]

Color Commanders Title 23 W 158 swords to plowshares 32 W 148 path to exile 35 W 146 sun titan 39 W 136 wrath of god 41 W 133 oblivion ring 43 W 131 return to dust 48 W 121 austere command 50 W 117 enlightened tutor 52 W 110 day of judgment 99 W 79 condemn 113 W 75 elspeth, sun's champion 121 W 72 land tax 124 W 70 grand abolisher 128 W 70 elesh norn, grand cenobite 130 W 69 true conviction 142 W 64 elspeth, knight-errant 153 W 61 avacyn, angel of hope 156 W 60 karmic guide 162 W 59 oblation 163 W 59 ghostly prison 205 W 52 mother of runes 202 W 52 emeria shepherd 215 W 50 cathars' crusade 235 W 49 weathered wayfarer 232 W 49 luminarch ascension

dfstats = df[df[ ' Color ' ] == ' W ' ] mean = numpy.mean(dfstats[ ' Commanders ' ]) std = numpy.std(dfstats[ ' Commanders ' ]) median = numpy.median(dfstats[ ' Commanders ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 7.431226765799257 Standard Deviation: 15.675256671877563 Median: 2.0

Blue

Hinder and Spell Crumple still see strong play despite the changes to the tuck rule.

Preordain, Brainstorm, Ponder are not considered Commander staples, but find their way into the top 25 blue cards.

df[df[ ' Color ' ] == ' U ' ][: 25 ]

Color Commanders Title 21 U 160 cyclonic rift 34 U 146 counterspell 36 U 143 rhystic study 58 U 105 phyrexian metamorph 56 U 105 brainstorm 61 U 100 rite of replication 62 U 99 clever impersonator 65 U 98 fact or fiction 69 U 96 mystical tutor 80 U 87 ponder 81 U 87 hinder 90 U 83 blue sun's zenith 92 U 82 propaganda 93 U 81 dissipate 102 U 79 consecrated sphinx 112 U 75 spell crumple 117 U 73 capsize 126 U 70 thassa, god of the sea 141 U 64 fabricate 145 U 63 trinket mage 144 U 63 mulldrifter 149 U 62 preordain 159 U 60 leyline of anticipation 154 U 60 rewind 166 U 59 cryptic command

dfstats = df[df[ ' Color ' ] == ' U ' ] mean = numpy.mean(dfstats[ ' Commanders ' ]) std = numpy.std(dfstats[ ' Commanders ' ]) median = numpy.median(dfstats[ ' Commanders ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 6.897548161120841 Standard Deviation: 15.038217896117773 Median: 2.0

Black

Black is the only color that has a card in the top 20.

Vampiric Tutor is functionally similar to Demonic Tutor and Diabolic Tutor.

Demonic Tutor is the highest ranked tutor card.

df[df[ ' Color ' ] == ' B ' ][: 25 ]

Color Commanders Title 19 B 170 demonic tutor 20 B 166 diabolic tutor 27 B 152 phyrexian arena 53 B 109 liliana vess 57 B 105 decree of pain 67 B 98 sheoldred, whispering one 73 B 91 damnation 75 B 90 crypt ghast 85 B 85 grave titan 86 B 84 black sun's zenith 87 B 84 rune-scarred demon 94 B 81 hero's downfall 95 B 81 dictate of erebos 97 B 81 vampiric tutor 98 B 80 sidisi, undead vizier 100 B 79 whip of erebos 107 B 76 erebos, god of the dead 108 B 76 grave pact 115 B 74 exsanguinate 116 B 73 increasing ambition 118 B 72 bloodgift demon 119 B 72 go for the throat 131 B 68 gray merchant of asphodel 138 B 66 fleshbag marauder 143 B 63 read the bones

dfstats = df[df[ ' Color ' ] == ' B ' ] mean = numpy.mean(dfstats[ ' Commanders ' ]) std = numpy.std(dfstats[ ' Commanders ' ]) median = numpy.median(dfstats[ ' Commanders ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 9.044421487603305 Standard Deviation: 17.851982373543997 Median: 3.0

Red

Red doesn't have any colors in the top 50.

There are no tutors in the top 25.

df[df[ ' Color ' ] == ' R ' ][: 25 ]

Color Commanders Title 54 R 107 chaos warp 55 R 107 blasphemous act 84 R 85 vandalblast 146 R 63 anger 179 R 56 reforge the soul 191 R 54 purphoros, god of the forge 231 R 49 insurrection 237 R 48 wild ricochet 246 R 47 warstorm surge 266 R 45 faithless looting 304 R 43 wheel of fortune 295 R 43 inferno titan 294 R 43 hammer of purphoros 339 R 40 urabrask the hidden 342 R 39 reverberate 384 R 36 ogre battledriver 397 R 35 comet storm 429 R 34 balefire dragon 427 R 34 hellkite tyrant 450 R 33 koth of the hammer 455 R 33 kiki-jiki, mirror breaker 441 R 33 dictate of the twin gods 438 R 33 outpost siege 496 R 31 gratuitous violence 483 R 31 zealous conscripts

dfstats = df[df[ ' Color ' ] == ' R ' ] mean = numpy.mean(dfstats[ ' Commanders ' ]) std = numpy.std(dfstats[ ' Commanders ' ]) median = numpy.median(dfstats[ ' Commanders ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 5.695278969957082 Standard Deviation: 9.564635507429793 Median: 2.0

Green

Green has eight tutors in the top 25, the most of any color.

df[df[ ' Color ' ] == ' G ' ][: 25 ]

Color Commanders Title 26 G 153 cultivate 30 G 148 kodama's reach 38 G 140 eternal witness 44 G 127 beast within 45 G 126 sakura-tribe elder 47 G 121 krosan grip 49 G 119 acidic slime 60 G 101 green sun's zenith 68 G 98 oracle of mul daya 74 G 90 explosive vegetation 77 G 89 harmonize 78 G 88 garruk wildspeaker 82 G 87 asceticism 89 G 84 sylvan library 91 G 83 reclamation sage 96 G 81 avenger of zendikar 104 G 77 skyshroud claim 105 G 76 yavimaya elder 106 G 76 wood elves 123 G 70 rampant growth 127 G 70 birds of paradise 135 G 67 chord of calling 137 G 66 terastodon 139 G 65 worldly tutor 150 G 62 tooth and nail

dfstats = df[df[ ' Color ' ] == ' G ' ] mean = numpy.mean(dfstats[ ' Commanders ' ]) std = numpy.std(dfstats[ ' Commanders ' ]) median = numpy.median(dfstats[ ' Commanders ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 8.590405904059041 Standard Deviation: 16.843433033874295 Median: 3.0

WU (Azorius)

df[df[ ' Color ' ] == ' WU ' ][: 10 ]

Color Commanders Title 254 WU 47 supreme verdict 378 WU 37 venser, the sojourner 436 WU 33 render silent 462 WU 32 detention sphere 518 WU 30 sphinx's revelation 807 WU 20 narset transcendent 1149 WU 14 steel of the godhead 1339 WU 12 grand arbiter augustin iv 1312 WU 12 ojutai's command 1393 WU 11 azorius charm

dfstats = df[df[ ' Color ' ] == ' WU ' ] mean = numpy.mean(dfstats[ ' Commanders ' ]) std = numpy.std(dfstats[ ' Commanders ' ]) median = numpy.median(dfstats[ ' Commanders ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 6.175675675675675 Standard Deviation: 8.98400697351795 Median: 2.0

UB (Dimir)

df[df[ ' Color ' ] == ' UB ' ][: 10 ]

Color Commanders Title 769 UB 20 notion thief 867 UB 18 evil twin 953 UB 17 baleful strix 944 UB 17 wrexial, the risen deep 1090 UB 15 memory plunder 1167 UB 14 havengul lich 1255 UB 13 ashiok, nightmare weaver 1325 UB 12 consuming aberration 1434 UB 11 lazav, dimir mastermind 1417 UB 11 dimir doppelganger

dfstats = df[df[ ' Color ' ] == ' UB ' ] mean = numpy.mean(dfstats[ ' Commanders ' ]) std = numpy.std(dfstats[ ' Commanders ' ]) median = numpy.median(dfstats[ ' Commanders ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 4.860215053763441 Standard Deviation: 4.346773362326279 Median: 3.0

BR (Rakdos)

df[df[ ' Color ' ] == ' BR ' ][: 10 ]

Color Commanders Title 287 BR 44 terminate 363 BR 38 dreadbore 663 BR 23 rakdos charm 1169 BR 14 mogis, god of slaughter 1127 BR 14 deathbringer thoctar 1320 BR 12 rakdos, lord of riots 1291 BR 12 sire of insanity 1588 BR 10 kolaghan's command 1571 BR 10 master of cruelties 1673 BR 9 rakdos's return

dfstats = df[df[ ' Color ' ] == ' BR ' ] mean = numpy.mean(dfstats[ ' Commanders ' ]) std = numpy.std(dfstats[ ' Commanders ' ]) median = numpy.median(dfstats[ ' Commanders ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 4.935897435897436 Standard Deviation: 7.077120491486564 Median: 2.5

RG (Gruul)

df[df[ ' Color ' ] == ' RG ' ][: 10 ]

Color Commanders Title 498 RG 31 xenagos, god of revels 484 RG 31 hull breach 533 RG 29 xenagos, the reveler 614 RG 25 fires of yavimaya 675 RG 23 decimate 705 RG 22 mina and denn, wildborn 856 RG 19 arlinn kord 906 RG 18 domri rade 961 RG 17 sarkhan vol 1040 RG 15 savage ventmaw

dfstats = df[df[ ' Color ' ] == ' RG ' ] mean = numpy.mean(dfstats[ ' Commanders ' ]) std = numpy.std(dfstats[ ' Commanders ' ]) median = numpy.median(dfstats[ ' Commanders ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 6.666666666666667 Standard Deviation: 7.562700869692289 Median: 3.0

WB (Orzhov)

df[df[ ' Color ' ] == ' WB ' ][: 10 ]

Color Commanders Title 385 WB 36 utter end 409 WB 35 mortify 407 WB 35 merciless eviction 424 WB 34 anguished unmaking 868 WB 18 ashen rider 964 WB 17 sorin, grim nemesis 1027 WB 16 sorin, lord of innistrad 1106 WB 15 athreos, god of passage 1162 WB 14 angel of despair 1174 WB 14 debtors' knell

dfstats = df[df[ ' Color ' ] == ' WB ' ] mean = numpy.mean(dfstats[ ' Commanders ' ]) std = numpy.std(dfstats[ ' Commanders ' ]) median = numpy.median(dfstats[ ' Commanders ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 8.357142857142858 Standard Deviation: 8.937138746802122 Median: 5.5

UR (Izzet)

df[df[ ' Color ' ] == ' UR ' ][: 10 ]

Color Commanders Title 745 UR 21 counterflux 1086 UR 15 niv-mizzet, the firemind 1256 UR 13 ral zarek 1351 UR 12 keranos, god of storms 1304 UR 12 izzet charm 1411 UR 11 hypersonic dragon 1408 UR 11 goblin electromancer 1397 UR 11 dack's duplicate 1741 UR 9 dack fayden 1622 UR 9 melek, izzet paragon

dfstats = df[df[ ' Color ' ] == ' UR ' ] mean = numpy.mean(dfstats[ ' Commanders ' ]) std = numpy.std(dfstats[ ' Commanders ' ]) median = numpy.median(dfstats[ ' Commanders ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 4.8076923076923075 Standard Deviation: 4.565920842074981 Median: 3.0

BG (Golgari)

df[df[ ' Color ' ] == ' BG ' ][: 10 ]

Color Commanders Title 344 BG 39 putrefy 719 BG 22 vraska the unseen 809 BG 20 maelstrom pulse 849 BG 19 deathrite shaman 887 BG 18 jarad, golgari lich lord 896 BG 18 pernicious deed 1007 BG 16 deadbridge chant 1091 BG 15 the gitrog monster 1063 BG 15 golgari charm 1059 BG 15 deathreap ritual

dfstats = df[df[ ' Color ' ] == ' BG ' ] mean = numpy.mean(dfstats[ ' Commanders ' ]) std = numpy.std(dfstats[ ' Commanders ' ]) median = numpy.median(dfstats[ ' Commanders ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 7.081967213114754 Standard Deviation: 7.263867646044558 Median: 4.0

RW (Boros)

df[df[ ' Color ' ] == ' WR ' ][: 10 ]

Color Commanders Title 470 WR 32 boros charm 604 WR 26 iroas, god of victory 626 WR 25 aurelia, the warleader 671 WR 23 assemble the legion 721 WR 22 gisela, blade of goldnight 857 WR 19 nahiri, the harbinger 1173 WR 14 ajani vengeant 1252 WR 13 balefire liege 1278 WR 12 deflecting palm 1284 WR 12 legion's initiative

dfstats = df[df[ ' Color ' ] == ' WR ' ] mean = numpy.mean(dfstats[ ' Commanders ' ]) std = numpy.std(dfstats[ ' Commanders ' ]) median = numpy.median(dfstats[ ' Commanders ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 5.569444444444445 Standard Deviation: 6.763518128099889 Median: 3.0

GU (Simic)

df[df[ ' Color ' ] == ' UG ' ][: 10 ]

Color Commanders Title 410 UG 35 prophet of kruphix 699 UG 22 coiling oracle 751 UG 21 progenitor mimic 755 UG 21 kruphix, god of horizons 791 UG 20 kiora, the crashing wave 776 UG 20 altered ego 834 UG 19 mystic snake 871 UG 18 prime speaker zegana 978 UG 16 plasm capture 1085 UG 15 kiora, master of the depths

dfstats = df[df[ ' Color ' ] == ' UG ' ] mean = numpy.mean(dfstats[ ' Commanders ' ]) std = numpy.std(dfstats[ ' Commanders ' ]) median = numpy.median(dfstats[ ' Commanders ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 7.84 Standard Deviation: 7.510952003574515 Median: 5.5

Other

Three or more colors.

mask = (df[ ' Color ' ].str.len() >= 3 ) dfother = df.loc[mask] dfother[: 10 ]

Color Commanders Title 907 UBR 18 nicol bolas, planeswalker 1305 UBR 12 cruel ultimatum 1419 UBR 11 crosis's charm 1537 WUG 10 bant charm 1565 WUG 10 wargate 1638 WUB 9 magister sphinx 1915 WUBRG 8 maelstrom nexus 1783 WRG 8 naya charm 1784 WRG 8 titanic ultimatum 2062 WUB 7 sphinx of the steel wind

dfstats = dfother mean = numpy.mean(dfstats[ ' Commanders ' ]) std = numpy.std(dfstats[ ' Commanders ' ]) median = numpy.median(dfstats[ ' Commanders ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 2.7245508982035926 Standard Deviation: 2.460866578924113 Median: 2.0

Value by Color

d = { ' Title ' : edh[ ' title ' ], ' Price ' : edh[ ' priceAdjusted ' ], ' Commanders ' : edh[ ' occurences ' ], ' Value ' : edh[ ' value ' ], ' Color ' : edh[ ' colors ' ]} df = pandas.DataFrame( data = d) df = df.sort_values( ' Value ' , ascending = 0 )

Colorless

df[df[ ' Color ' ] == ' C ' ][: 50 ]

Color Commanders Price Title Value 1 C 394 0.50 temple of the false god 788.00 3 C 365 0.50 swiftfoot boots 730.00 6 C 252 0.50 evolving wilds 504.00 8 C 232 0.50 terramorphic expanse 464.00 12 C 187 0.50 burnished hart 374.00 14 C 184 0.50 darksteel ingot 368.00 24 C 154 0.50 commander's sphere 308.00 29 C 149 0.50 mind stone 298.00 37 C 142 0.50 rogue's passage 284.00 59 C 101 0.50 steel hellkite 202.00 0 C 489 2.49 sol ring 196.39 63 C 98 0.50 everflowing chalice 196.00 22 C 159 0.86 bojuka bog 184.88 70 C 92 0.50 halimar depths 184.00 76 C 89 0.50 hedron archive 178.00 79 C 87 0.50 buried ruin 174.00 7 C 239 1.40 command tower 170.71 103 C 78 0.50 elixir of immortality 156.00 114 C 74 0.50 staff of nin 148.00 129 C 69 0.50 barren moor 138.00 133 C 67 0.50 secluded steppe 134.00 42 C 131 0.98 thought vessel 133.67 4 C 349 2.84 reliquary tower 122.89 151 C 61 0.50 oran-rief, the vastwood 122.00 172 C 57 0.50 forgotten cave 114.00 173 C 57 0.50 wayfarer's bauble 114.00 64 C 98 0.89 worn powerstone 110.11 183 C 55 0.50 trading post 110.00 188 C 54 0.50 lonely sandbar 108.00 25 C 154 1.45 arcane lighthouse 106.21 203 C 52 0.50 tranquil thicket 104.00 209 C 51 0.50 unstable obelisk 102.00 109 C 75 0.75 whispersilk cloak 100.00 18 C 176 1.77 skullclamp 99.44 236 C 48 0.50 crypt of agadeem 96.00 2 C 373 3.94 lightning greaves 94.67 247 C 47 0.50 blighted woodland 94.00 110 C 75 0.83 loxodon warhammer 90.36 16 C 177 1.98 expedition map 89.39 280 C 44 0.50 spine of ish sah 88.00 282 C 44 0.50 rakdos signet 88.00 293 C 43 0.50 mortuary mire 86.00 307 C 42 0.50 azorius chancery 84.00 46 C 122 1.47 ghost quarter 82.99 317 C 41 0.50 opal palace 82.00 319 C 41 0.50 kher keep 82.00 318 C 41 0.50 rakdos carnarium 82.00 320 C 41 0.50 selesnya sanctuary 82.00 5 C 328 4.00 solemn simulacrum 82.00 343 C 39 0.50 fireshrieker 78.00

dfstats = df[df[ ' Color ' ] == ' C ' ] mean = numpy.mean(dfstats[ ' Value ' ]) std = numpy.std(dfstats[ ' Value ' ]) median = numpy.median(dfstats[ ' Value ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 17.270638641875514 Standard Deviation: 47.778902031984686 Median: 4.0

White

df[df[ ' Color ' ] == ' W ' ][: 25 ]

Color Commanders Price Title Value 41 W 133 0.77 oblivion ring 172.73 99 W 79 0.50 condemn 158.00 130 W 69 0.50 true conviction 138.00 162 W 59 0.50 oblation 118.00 43 W 131 1.19 return to dust 110.08 202 W 52 0.50 emeria shepherd 104.00 215 W 50 0.50 cathars' crusade 100.00 224 W 49 0.50 banishing light 98.00 249 W 47 0.50 marshal's anthem 94.00 268 W 45 0.50 mentor of the meek 90.00 281 W 44 0.50 spear of heliod 88.00 356 W 38 0.50 mass calcify 76.00 382 W 36 0.50 angel of serenity 72.00 396 W 35 0.50 sunblast angel 70.00 406 W 35 0.50 sphere of safety 70.00 35 W 146 2.10 sun titan 69.52 444 W 33 0.50 open the armory 66.00 442 W 33 0.50 fiend hunter 66.00 23 W 158 2.42 swords to plowshares 65.29 537 W 28 0.50 silverblade paladin 56.00 552 W 27 0.50 angelic skirmisher 54.00 583 W 26 0.50 gift of immortality 52.00 588 W 26 0.50 adarkar valkyrie 52.00 52 W 110 2.20 day of judgment 50.00 609 W 25 0.50 captain of the watch 50.00

dfstats = df[df[ ' Color ' ] == ' W ' ] mean = numpy.mean(dfstats[ ' Value ' ]) std = numpy.std(dfstats[ ' Value ' ]) median = numpy.median(dfstats[ ' Value ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 7.940585501858733 Standard Deviation: 15.15487508920651 Median: 2.985

Blue

df[df[ ' Color ' ] == ' U ' ][: 25 ]

Color Commanders Price Title Value 90 U 83 0.50 blue sun's zenith 166.00 93 U 81 0.50 dissipate 162.00 34 U 146 1.00 counterspell 146.00 144 U 63 0.50 mulldrifter 126.00 145 U 63 0.50 trinket mage 126.00 154 U 60 0.50 rewind 120.00 176 U 56 0.50 archaeomancer 112.00 56 U 105 0.95 brainstorm 110.53 189 U 54 0.50 dissolve 108.00 194 U 53 0.50 curse of the swine 106.00 210 U 51 0.50 treasure cruise 102.00 223 U 49 0.50 negate 98.00 258 U 46 0.50 dig through time 92.00 65 U 98 1.09 fact or fiction 89.91 310 U 42 0.50 rapid hybridization 84.00 341 U 39 0.50 stormtide leviathan 78.00 370 U 37 0.50 reality shift 74.00 371 U 37 0.50 swan song 74.00 408 U 35 0.50 high tide 70.00 416 U 34 0.50 bident of thassa 68.00 61 U 100 1.52 rite of replication 65.79 80 U 87 1.33 ponder 65.41 508 U 30 0.50 future sight 60.00 504 U 30 0.50 mana leak 60.00 524 U 29 0.50 cancel 58.00

dfstats = df[df[ ' Color ' ] == ' U ' ] mean = numpy.mean(dfstats[ ' Value ' ]) std = numpy.std(dfstats[ ' Value ' ]) median = numpy.median(dfstats[ ' Value ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 7.9557618213660355 Standard Deviation: 16.224316825945767 Median: 2.275

Black

df[df[ ' Color ' ] == ' B ' ][: 25 ]

Color Commanders Price Title Value 20 B 166 0.5 diabolic tutor 332.0 116 B 73 0.5 increasing ambition 146.0 118 B 72 0.5 bloodgift demon 144.0 131 B 68 0.5 gray merchant of asphodel 136.0 138 B 66 0.5 fleshbag marauder 132.0 143 B 63 0.5 read the bones 126.0 148 B 62 0.5 butcher of malakir 124.0 167 B 58 0.5 sign in blood 116.0 168 B 58 0.5 doom blade 116.0 193 B 53 0.5 disciple of bolas 106.0 212 B 50 0.5 mutilate 100.0 214 B 50 0.5 murder 100.0 227 B 49 0.5 phyrexian reclamation 98.0 226 B 49 0.5 harvester of souls 98.0 238 B 48 0.5 archfiend of depravity 96.0 248 B 47 0.5 sepulchral primordial 94.0 257 B 46 0.5 grave betrayal 92.0 267 B 45 0.5 profane command 90.0 291 B 43 0.5 sudden spoiling 86.0 292 B 43 0.5 magus of the coffers 86.0 306 B 42 0.5 reassembling skeleton 84.0 308 B 42 0.5 victimize 84.0 321 B 41 0.5 tragic slip 82.0 316 B 41 0.5 palace siege 82.0 315 B 41 0.5 merciless executioner 82.0

dfstats = df[df[ ' Color ' ] == ' B ' ] mean = numpy.mean(dfstats[ ' Value ' ]) std = numpy.std(dfstats[ ' Value ' ]) median = numpy.median(dfstats[ ' Value ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 9.864566115702477 Standard Deviation: 21.352338028294376 Median: 4.0

Red

df[df[ ' Color ' ] == ' R ' ][: 25 ]

Color Commanders Price Title Value 84 R 85 0.5 vandalblast 170.0 237 R 48 0.5 wild ricochet 96.0 246 R 47 0.5 warstorm surge 94.0 266 R 45 0.5 faithless looting 90.0 294 R 43 0.5 hammer of purphoros 86.0 295 R 43 0.5 inferno titan 86.0 342 R 39 0.5 reverberate 78.0 384 R 36 0.5 ogre battledriver 72.0 397 R 35 0.5 comet storm 70.0 441 R 33 0.5 dictate of the twin gods 66.0 438 R 33 0.5 outpost siege 66.0 480 R 31 0.5 feldon of the third path 62.0 483 R 31 0.5 zealous conscripts 62.0 510 R 30 0.5 hoarding dragon 60.0 540 R 28 0.5 mizzium mortars 56.0 555 R 27 0.5 hellkite charger 54.0 557 R 27 0.5 dualcaster mage 54.0 559 R 27 0.5 furnace of rath 54.0 584 R 26 0.5 hoard-smelter dragon 52.0 617 R 25 0.5 charmbreaker devils 50.0 611 R 25 0.5 vicious shadows 50.0 646 R 24 0.5 kazuul, tyrant of the cliffs 48.0 665 R 23 0.5 impact tremors 46.0 707 R 22 0.5 ruination 44.0 704 R 22 0.5 chandra's ignition 44.0

dfstats = df[df[ ' Color ' ] == ' R ' ] mean = numpy.mean(dfstats[ ' Value ' ]) std = numpy.std(dfstats[ ' Value ' ]) median = numpy.median(dfstats[ ' Value ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 7.479302575107301 Standard Deviation: 12.907750310407643 Median: 4.0

Green

df[df[ ' Color ' ] == ' G ' ][: 25 ]

Color Commanders Price Title Value 49 G 119 0.50 acidic slime 238.00 91 G 83 0.50 reclamation sage 166.00 47 G 121 0.75 krosan grip 161.33 45 G 126 0.79 sakura-tribe elder 159.49 30 G 148 1.03 kodama's reach 143.69 123 G 70 0.50 rampant growth 140.00 137 G 66 0.50 terastodon 132.00 26 G 153 1.19 cultivate 128.57 175 G 56 0.50 elvish mystic 112.00 184 G 55 0.50 farhaven elf 110.00 213 G 50 0.50 soul of the harvest 100.00 225 G 49 0.50 rampaging baloths 98.00 239 G 48 0.50 shamanic revelation 96.00 269 G 45 0.50 zendikar resurgent 90.00 309 G 42 0.50 overwhelming stampede 84.00 105 G 76 0.94 yavimaya elder 80.85 355 G 38 0.50 harrow 76.00 386 G 36 0.50 overrun 72.00 403 G 35 0.50 genesis hydra 70.00 405 G 35 0.50 thunderfoot baloth 70.00 419 G 34 0.50 farseek 68.00 420 G 34 0.50 evolutionary leap 68.00 185 G 55 0.81 llanowar elves 67.90 437 G 33 0.50 archetype of endurance 66.00 461 G 32 0.50 karametra's acolyte 64.00

dfstats = df[df[ ' Color ' ] == ' G ' ] mean = numpy.mean(dfstats[ ' Value ' ]) std = numpy.std(dfstats[ ' Value ' ]) median = numpy.median(dfstats[ ' Value ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 9.26203874538745 Standard Deviation: 18.50107765372194 Median: 4.0

WU (Azorius)

df[df[ ' Color ' ] == ' WU ' ][: 10 ]

Color Commanders Price Title Value 436 WU 33 0.5 render silent 66.0 462 WU 32 0.5 detention sphere 64.0 1393 WU 11 0.5 azorius charm 22.0 1517 WU 10 0.5 medomai the ageless 20.0 1649 WU 9 0.5 daxos of meletis 18.0 1616 WU 9 0.5 mistmeadow witch 18.0 1757 WU 8 0.5 lavinia of the tenth 16.0 2022 WU 7 0.5 isperia, supreme judge 14.0 2021 WU 7 0.5 righteous authority 14.0 2017 WU 7 0.5 azorius guildmage 14.0

dfstats = df[df[ ' Color ' ] == ' WU ' ] mean = numpy.mean(dfstats[ ' Value ' ]) std = numpy.std(dfstats[ ' Value ' ]) median = numpy.median(dfstats[ ' Value ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 6.516756756756757 Standard Deviation: 11.043546496081005 Median: 2.0

UB (Dimir)

df[df[ ' Color ' ] == ' UB ' ][: 10 ]

Color Commanders Price Title Value 769 UB 20 0.5 notion thief 40.0 867 UB 18 0.5 evil twin 36.0 1367 UB 11 0.5 silumgar's command 22.0 1417 UB 11 0.5 dimir doppelganger 22.0 1523 UB 10 0.5 soul manipulation 20.0 1521 UB 10 0.5 psychic strike 20.0 1625 UB 9 0.5 mirko vosk, mind drinker 18.0 1789 UB 8 0.5 whispering madness 16.0 1817 UB 8 0.5 lim-dûl's vault 16.0 1993 UB 7 0.5 duskmantle guildmage 14.0

dfstats = df[df[ ' Color ' ] == ' UB ' ] mean = numpy.mean(dfstats[ ' Value ' ]) std = numpy.std(dfstats[ ' Value ' ]) median = numpy.median(dfstats[ ' Value ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 5.798279569892472 Standard Deviation: 7.003240513168282 Median: 4.0

BR (Rakdos)

df[df[ ' Color ' ] == ' BR ' ][: 10 ]

Color Commanders Price Title Value 663 BR 23 0.50 rakdos charm 46.00 1127 BR 14 0.50 deathbringer thoctar 28.00 1291 BR 12 0.50 sire of insanity 24.00 1673 BR 9 0.50 rakdos's return 18.00 1684 BR 9 0.50 havoc festival 18.00 1676 BR 9 0.50 kolaghan, the storm's fury 18.00 1810 BR 8 0.50 torrent of souls 16.00 287 BR 44 2.93 terminate 15.02 363 BR 38 2.92 dreadbore 13.01 2256 BR 6 0.50 wrecking ball 12.00

dfstats = df[df[ ' Color ' ] == ' BR ' ] mean = numpy.mean(dfstats[ ' Value ' ]) std = numpy.std(dfstats[ ' Value ' ]) median = numpy.median(dfstats[ ' Value ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 5.485897435897437 Standard Deviation: 7.174526239321408 Median: 2.115

RG (Gruul)

df[df[ ' Color ' ] == ' RG ' ][: 10 ]

Color Commanders Price Title Value 484 RG 31 0.5 hull breach 62.0 614 RG 25 0.5 fires of yavimaya 50.0 705 RG 22 0.5 mina and denn, wildborn 44.0 1040 RG 15 0.5 savage ventmaw 30.0 1227 RG 13 0.5 atarka, world render 26.0 1405 RG 11 0.5 spellbreaker behemoth 22.0 1487 RG 10 0.5 ruric thar, the unbowed 20.0 2041 RG 7 0.5 zhur-taa druid 14.0 2037 RG 7 0.5 clan defiance 14.0 1957 RG 7 0.5 rubblehulk 14.0

dfstats = df[df[ ' Color ' ] == ' RG ' ] mean = numpy.mean(dfstats[ ' Value ' ]) std = numpy.std(dfstats[ ' Value ' ]) median = numpy.median(dfstats[ ' Value ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 7.308194444444443 Standard Deviation: 11.1266836836285 Median: 2.88

WB (Orzhov)

df[df[ ' Color ' ] == ' WB ' ][: 10 ]

Color Commanders Price Title Value 385 WB 36 0.50 utter end 72.0 407 WB 35 0.50 merciless eviction 70.0 409 WB 35 0.79 mortify 44.3 868 WB 18 0.50 ashen rider 36.0 1197 WB 13 0.50 debt to the deathless 26.0 1195 WB 13 0.50 ayli, eternal pilgrim 26.0 1269 WB 12 0.50 vizkopa guildmage 24.0 1407 WB 11 0.50 teysa, envoy of ghosts 22.0 1413 WB 11 0.50 obzedat's aid 22.0 1641 WB 9 0.50 treasury thrull 18.0

dfstats = df[df[ ' Color ' ] == ' WB ' ] mean = numpy.mean(dfstats[ ' Value ' ]) std = numpy.std(dfstats[ ' Value ' ]) median = numpy.median(dfstats[ ' Value ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 10.04535714285714 Standard Deviation: 15.064585239689725 Median: 4.0

UR (Izzet)

df[df[ ' Color ' ] == ' UR ' ][: 10 ]

Color Commanders Price Title Value 745 UR 21 0.5 counterflux 42.0 1304 UR 12 0.5 izzet charm 24.0 1397 UR 11 0.5 dack's duplicate 22.0 1408 UR 11 0.5 goblin electromancer 22.0 1411 UR 11 0.5 hypersonic dragon 22.0 1650 UR 9 0.5 jori en, ruin diver 18.0 1606 UR 9 0.5 niv-mizzet, dracogenius 18.0 1612 UR 9 0.5 mercurial chemister 18.0 1622 UR 9 0.5 melek, izzet paragon 18.0 2135 UR 6 0.5 epic experiment 12.0

dfstats = df[df[ ' Color ' ] == ' UR ' ] mean = numpy.mean(dfstats[ ' Value ' ]) std = numpy.std(dfstats[ ' Value ' ]) median = numpy.median(dfstats[ ' Value ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 7.2761538461538455 Standard Deviation: 8.271511384971669 Median: 4.0

BG (Golgari)

df[df[ ' Color ' ] == ' BG ' ][: 10 ]

Color Commanders Price Title Value 344 BG 39 0.5 putrefy 78.0 1059 BG 15 0.5 deathreap ritual 30.0 1063 BG 15 0.5 golgari charm 30.0 1137 BG 14 0.5 reaper of the wilds 28.0 1128 BG 14 0.5 jarad's orders 28.0 1661 BG 9 0.5 corpsejack menace 18.0 1656 BG 9 0.5 gaze of granite 18.0 1840 BG 8 0.5 grisly salvage 16.0 2046 BG 7 0.5 korozda guildmage 14.0 2011 BG 7 0.5 varolz, the scar-striped 14.0

dfstats = df[df[ ' Color ' ] == ' BG ' ] mean = numpy.mean(dfstats[ ' Value ' ]) std = numpy.std(dfstats[ ' Value ' ]) median = numpy.median(dfstats[ ' Value ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 7.728524590163937 Standard Deviation: 11.717977618279955 Median: 3.63

RW (Boros)

df[df[ ' Color ' ] == ' WR ' ][: 10 ]

Color Commanders Price Title Value 671 WR 23 0.5 assemble the legion 46.0 1278 WR 12 0.5 deflecting palm 24.0 1284 WR 12 0.5 legion's initiative 24.0 1526 WR 10 0.5 tajic, blade of the legion 20.0 1486 WR 10 0.5 aurelia's fury 20.0 1490 WR 10 0.5 master warcraft 20.0 1651 WR 9 0.5 firemane avenger 18.0 1683 WR 9 0.5 glory of warfare 18.0 1940 WR 7 0.5 nobilis of war 14.0 2161 WR 6 0.5 agrus kos, wojek veteran 12.0

dfstats = df[df[ ' Color ' ] == ' WR ' ] mean = numpy.mean(dfstats[ ' Value ' ]) std = numpy.std(dfstats[ ' Value ' ]) median = numpy.median(dfstats[ ' Value ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 6.165138888888888 Standard Deviation: 7.3488360743301735 Median: 4.0

GU (Simic)

df[df[ ' Color ' ] == ' UG ' ][: 10 ]

Color Commanders Price Title Value 699 UG 22 0.50 coiling oracle 44.00 776 UG 20 0.50 altered ego 40.00 871 UG 18 0.50 prime speaker zegana 36.00 978 UG 16 0.50 plasm capture 32.00 1047 UG 15 0.50 trygon predator 30.00 410 UG 35 1.58 prophet of kruphix 22.15 1388 UG 11 0.50 urban evolution 22.00 1594 UG 9 0.50 kiora's follower 18.00 1603 UG 9 0.50 bring to light 18.00 1771 UG 8 0.50 edric, spymaster of trest 16.00

dfstats = df[df[ ' Color ' ] == ' UG ' ] mean = numpy.mean(dfstats[ ' Value ' ]) std = numpy.std(dfstats[ ' Value ' ]) median = numpy.median(dfstats[ ' Value ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))

Mean: 9.469 Standard Deviation: 10.699574243865968 Median: 4.96

Other

Three or more colors.

mask = (df[ ' Color ' ].str.len() >= 3 ) dfother = df.loc[mask] dfother[: 10 ]

Color Commanders Price Title Value 1305 UBR 12 0.50 cruel ultimatum 24.00 1419 UBR 11 0.50 crosis's charm 22.00 1638 WUB 9 0.50 magister sphinx 18.00 1783 WRG 8 0.50 naya charm 16.00 1784 WRG 8 0.50 titanic ultimatum 16.00 2028 URG 7 0.50 temur ascendancy 14.00 2018 UBR 7 0.50 slave of bolas 14.00 2166 UBR 6 0.50 grixis charm 12.00 2253 URG 6 0.50 surrak dragonclaw 12.00 1537 WUG 10 0.91 bant charm 10.99

dfstats = dfother mean = numpy.mean(dfstats[ ' Value ' ]) std = numpy.std(dfstats[ ' Value ' ]) median = numpy.median(dfstats[ ' Value ' ]) print ( " Mean: " + str (mean)) print ( " Standard Deviation: " + str (std)) print ( " Median: " + str (median))