|
I've been learning Data Analysis and Data Visualization and I need practice projects. Post statistics you have always wanted to know or wondered about and I will see if I can find the data, and perform the analysis if I can find it. If you want to look at what datasets are available to analyze this is a good place to start: https://www.kaggle.com/datasets but you don't have to look it up first. It can be serious or silly but there's more serious data available than silly data. |
# ? Aug 17, 2023 23:40 |
|
|
# ? May 11, 2024 13:50 |
|
if you want a big project...i've been playing with pokemon data on and off for a while as a hobby because i'm a huge rec math nerd and a fellow dataviz/analyst. here's a question i might try to solve at the same time: suppose you're running a round robin tournament with all 151 of the gen 1 pokemon. that is, every pokemon fights every other pokemon once. for simplicity, you might make some assumptions, such as:
my question: which pokemon win the most points under these conditions? which win the fewest? |
# ? Aug 19, 2023 18:30 |
|
Dang, that's more than I know how to feasibly do yet, I'm barely at the "look I'm learning R" part of this. But I may come back to it when I know more |
# ? Aug 19, 2023 21:36 |
|
your friend sk posted:if you want a big project...i've been playing with pokemon data on and off for a while as a hobby because i'm a huge rec math nerd and a fellow dataviz/analyst. here's a question i might try to solve at the same time: This sounds very doable, but I've hit a bit of a snag. You see I have never played a pokemon game before and the dataset I've found only lists 2 attacks for each pokemon, normal and special, and it does not say anything about level or move power and what move acc is.
|
# ? Aug 25, 2023 19:59 |
|
Dumb Sex-Parrot posted:This sounds very doable, but I've hit a bit of a snag. You see I have never played a pokemon game before and the dataset I've found only lists 2 attacks for each pokemon, normal and special, and it does not say anything about level or move power and what move acc is. i think you're looking at movesets for Pokemon Go. this is a set i found on kaggle that i think has all the info: https://www.dropbox.com/scl/fi/54wfwhfp687gwnbhaso5y/pokedex.csv?rlkey=fbio8hzktb9ojygws5qkf30o3&dl=0 |
# ? Aug 25, 2023 20:43 |
|
I think I am at the point RStudio-wise where I could do that but I don't understand math well enough to know how to conceptualize a formula to calculate everything taking pokemon types into account, all those years of sleeping through math classes are biting me in the rear end Without types it would be as easy as just taking an average attack power from their available moves and comparing the stats but I don't know the math syntax for doing that while checking like a dozen conditionals to see if an additional multiplier needs to be included. I guess just really heavy use of if() statements and writing a separate calculation for each individual attack? actually I guess it would just be an if(attacktype=x and targettype=y) then basedamage*1.5 kind of deal for each type... and then calculating for each attack individually and taking an average of that? lmao I never went beyond basic geometry in school but I will figure this out conceptually eventually and then bruteforce the math. deep dish peat moss fucked around with this message at 21:08 on Aug 25, 2023 |
# ? Aug 25, 2023 20:59 |
|
Looking at the pokemon data I shudder at the thought of trying to sort through the moves using string searches. Look at this thing: quote:"{'Tackle': {'Type': 'Normal', 'Level': '—', 'Power': '40', 'Accuracy': '100', 'PP': '35', 'Effect %': '--', 'Description': 'A physical attack in which the user charges and slams into the target with its whole body.'}, 'Growl': {'Type': 'Normal', 'Level': '3', 'Power': '--', 'Accuracy': '100', 'PP': '40', 'Effect %': '--', 'Description': 'The user growls in an endearing way, making opposing Pokémon less wary. This lowers their Attack stat.'}, 'Vine Whip': {'Type': 'Grass', 'Level': '9', 'Power': '45', 'Accuracy': '100', 'PP': '25', 'Effect %': '--', 'Description': 'The target is struck with slender, whiplike vines to inflict damage.'}, 'Poison Powder': {'Type': 'Poison', 'Level': '13', 'Power': '--', 'Accuracy': '75', 'PP': '35', 'Effect %': '--', 'Description': 'The user scatters a cloud of poisonous dust that poisons the target.'}, 'Sleep Powder': {'Type': 'Grass', 'Level': '13', 'Power': '--', 'Accuracy': '75', 'PP': '15', 'Effect %': '--', 'Description': 'The user scatters a big cloud of sleep-inducing dust around the target.'}, 'Take Down': {'Type': 'Normal', 'Level': '15', 'Power': '90', 'Accuracy': '85', 'PP': '20', 'Effect %': '--', 'Description': 'A reckless, full-body charge attack for slamming into the target. This also damages the user a little.'}, 'Razor Leaf': {'Type': 'Grass', 'Level': '19', 'Power': '55', 'Accuracy': '95', 'PP': '25', 'Effect %': '--', 'Description': 'Sharp-edged leaves are launched to slash at the opposing Pokémon. Critical hits land more easily.'}, 'Sweet Scent': {'Type': 'Normal', 'Level': '21', 'Power': '--', 'Accuracy': '100', 'PP': '20', 'Effect %': '--', 'Description': \"A sweet scent that harshly lowers opposing Pokémon's evasiveness.\"}, 'Growth': {'Type': 'Normal', 'Level': '25', 'Power': '--', 'Accuracy': '--', 'PP': '20', 'Effect %': '--', 'Description': \"The user's body grows all at once, raising the Attack and Sp. Atk stats.\"}, 'Double-Edge': {'Type': 'Normal', 'Level': '27', 'Power': '120', 'Accuracy': '100', 'PP': '15', 'Effect %': '--', 'Description': 'A reckless, life-risking tackle. This also damages the user quite a lot.'}, 'Worry Seed': {'Type': 'Grass', 'Level': '31', 'Power': '--', 'Accuracy': '100', 'PP': '10', 'Effect %': '--', 'Description': \"A seed that causes worry is planted on the target. It prevents sleep by making the target's Ability Insomnia.\"}, 'Synthesis': {'Type': 'Grass', 'Level': '33', 'Power': '--', 'Accuracy': '--', 'PP': '5', 'Effect %': '--', 'Description': 'The user restores its own HP. The amount of HP regained varies with the weather.'}, 'Seed Bomb': {'Type': 'Grass', 'Level': '37', 'Power': '80', 'Accuracy': '100', 'PP': '15', 'Effect %': '--', 'Description': 'The user slams a barrage of hard-shelled seeds down on the target from above.'}}" And I think you're definitely on to something with the if/then statements.
|
# ? Aug 25, 2023 21:19 |
|
Dumb Sex-Parrot posted:Looking at the pokemon data I shudder at the thought of trying to sort through the moves using string searches. yeah it's awful, that's why I haven't done anything with it yet lol. it looks like it could be parsed as JSON maybe? I'd prefer a separate table of moves to cross reference though |
# ? Aug 25, 2023 21:59 |
|
I made a clean data set of Gen 1 pokemon moves. This does NOT include which pokemon have which moves, this is just the moves assigned a moveID and their stats listed out in a clean fashion. Notes:
I may go back later and add additional boolean columns for each status effect on each move but Also I haven't set up proper attributes or labels or anything yet it's just raw data deep dish peat moss fucked around with this message at 22:50 on Aug 25, 2023 |
# ? Aug 25, 2023 22:38 |
|
deep dish peat moss posted:I made a clean data set of Gen 1 pokemon moves. This does NOT include which pokemon have which moves, this is just the moves assigned a moveID and their stats listed out in a clean fashion.
|
# ? Aug 25, 2023 22:55 |
|
Goon project! Goon project!
|
# ? Aug 25, 2023 23:05 |
|
soon byob will truly be the best there ever was
|
# ? Aug 25, 2023 23:19 |
|
deep dish peat moss posted:I made a clean data set of Gen 1 pokemon moves. This does NOT include which pokemon have which moves, this is just the moves assigned a moveID and their stats listed out in a clean fashion. This is really great, and seems way better than my approach of doing string searches using regular expressions. That said I'm going to keep hammering away with the regex stuff as I feel I'm learning things.
|
# ? Aug 25, 2023 23:42 |
|
From here I think this formula should mostly work? ((movePOW * moveACC) + (attackerATK - targetDEF)) * (numberOfHits + additionalDamageTurns) = baseDamage -> if (moveType = [x]) and (defenderType = [a]) then (baseDamage * [modifier]) -> if (moveType = [y]) and (defenderType = [b]) then (baseDamage * [modifier]) etc... But I still need to figure out how I would calculate this on a matchup-by-matchup basis deep dish peat moss fucked around with this message at 00:15 on Aug 26, 2023 |
# ? Aug 26, 2023 00:11 |
|
deep dish peat moss posted:From here I think this formula should mostly work? if there's no random chance involved, you should be able to see which one does the larger proportion of its opponent's hp in damage. if pikachu hits for 20% of squirtle's health, and squirtle hits for 10% of pikachu's health, pikachu will win the fight there's an edge case around draws that may need to be checked as well, i'm too high to put it together right now |
# ? Aug 26, 2023 00:35 |
|
|
# ? May 11, 2024 13:50 |
|
today I'm learning how to use ggplot2 so here's a ribbon graph of move power compared to move accuracy which looks a lil bit like a floppy dong |
# ? Aug 28, 2023 23:22 |