From 6fe7ddbf773d5c254a5961b0ddc400462b6bfdfd Mon Sep 17 00:00:00 2001 From: Rubens Date: Tue, 8 Sep 2020 19:50:33 -0300 Subject: [PATCH 1/5] gera pasta bases --- bases/Pokemon.csv | 801 ++++++++++++++++++++++++++++++++++++++++++++++ bases/desktop.ini | 5 + 2 files changed, 806 insertions(+) create mode 100644 bases/Pokemon.csv create mode 100644 bases/desktop.ini diff --git a/bases/Pokemon.csv b/bases/Pokemon.csv new file mode 100644 index 0000000..8948acc --- /dev/null +++ b/bases/Pokemon.csv @@ -0,0 +1,801 @@ +#,Name,Type 1,Type 2,Total,HP,Attack,Defense,Sp. Atk,Sp. Def,Speed,Generation,Legendary +1,Bulbasaur,Grass,Poison,318,45,49,49,65,65,45,1,False +2,Ivysaur,Grass,Poison,405,60,62,63,80,80,60,1,False +3,Venusaur,Grass,Poison,525,80,82,83,100,100,80,1,False +3,VenusaurMega Venusaur,Grass,Poison,625,80,100,123,122,120,80,1,False +4,Charmander,Fire,,309,39,52,43,60,50,65,1,False +5,Charmeleon,Fire,,405,58,64,58,80,65,80,1,False +6,Charizard,Fire,Flying,534,78,84,78,109,85,100,1,False +6,CharizardMega Charizard X,Fire,Dragon,634,78,130,111,130,85,100,1,False +6,CharizardMega Charizard Y,Fire,Flying,634,78,104,78,159,115,100,1,False +7,Squirtle,Water,,314,44,48,65,50,64,43,1,False +8,Wartortle,Water,,405,59,63,80,65,80,58,1,False +9,Blastoise,Water,,530,79,83,100,85,105,78,1,False +9,BlastoiseMega Blastoise,Water,,630,79,103,120,135,115,78,1,False +10,Caterpie,Bug,,195,45,30,35,20,20,45,1,False +11,Metapod,Bug,,205,50,20,55,25,25,30,1,False +12,Butterfree,Bug,Flying,395,60,45,50,90,80,70,1,False +13,Weedle,Bug,Poison,195,40,35,30,20,20,50,1,False +14,Kakuna,Bug,Poison,205,45,25,50,25,25,35,1,False +15,Beedrill,Bug,Poison,395,65,90,40,45,80,75,1,False +15,BeedrillMega Beedrill,Bug,Poison,495,65,150,40,15,80,145,1,False +16,Pidgey,Normal,Flying,251,40,45,40,35,35,56,1,False +17,Pidgeotto,Normal,Flying,349,63,60,55,50,50,71,1,False +18,Pidgeot,Normal,Flying,479,83,80,75,70,70,101,1,False +18,PidgeotMega Pidgeot,Normal,Flying,579,83,80,80,135,80,121,1,False +19,Rattata,Normal,,253,30,56,35,25,35,72,1,False +20,Raticate,Normal,,413,55,81,60,50,70,97,1,False +21,Spearow,Normal,Flying,262,40,60,30,31,31,70,1,False +22,Fearow,Normal,Flying,442,65,90,65,61,61,100,1,False +23,Ekans,Poison,,288,35,60,44,40,54,55,1,False +24,Arbok,Poison,,438,60,85,69,65,79,80,1,False +25,Pikachu,Electric,,320,35,55,40,50,50,90,1,False +26,Raichu,Electric,,485,60,90,55,90,80,110,1,False +27,Sandshrew,Ground,,300,50,75,85,20,30,40,1,False +28,Sandslash,Ground,,450,75,100,110,45,55,65,1,False +29,Nidoran♀,Poison,,275,55,47,52,40,40,41,1,False +30,Nidorina,Poison,,365,70,62,67,55,55,56,1,False +31,Nidoqueen,Poison,Ground,505,90,92,87,75,85,76,1,False +32,Nidoran♂,Poison,,273,46,57,40,40,40,50,1,False +33,Nidorino,Poison,,365,61,72,57,55,55,65,1,False +34,Nidoking,Poison,Ground,505,81,102,77,85,75,85,1,False +35,Clefairy,Fairy,,323,70,45,48,60,65,35,1,False +36,Clefable,Fairy,,483,95,70,73,95,90,60,1,False +37,Vulpix,Fire,,299,38,41,40,50,65,65,1,False +38,Ninetales,Fire,,505,73,76,75,81,100,100,1,False +39,Jigglypuff,Normal,Fairy,270,115,45,20,45,25,20,1,False +40,Wigglytuff,Normal,Fairy,435,140,70,45,85,50,45,1,False +41,Zubat,Poison,Flying,245,40,45,35,30,40,55,1,False +42,Golbat,Poison,Flying,455,75,80,70,65,75,90,1,False +43,Oddish,Grass,Poison,320,45,50,55,75,65,30,1,False +44,Gloom,Grass,Poison,395,60,65,70,85,75,40,1,False +45,Vileplume,Grass,Poison,490,75,80,85,110,90,50,1,False +46,Paras,Bug,Grass,285,35,70,55,45,55,25,1,False +47,Parasect,Bug,Grass,405,60,95,80,60,80,30,1,False +48,Venonat,Bug,Poison,305,60,55,50,40,55,45,1,False +49,Venomoth,Bug,Poison,450,70,65,60,90,75,90,1,False +50,Diglett,Ground,,265,10,55,25,35,45,95,1,False +51,Dugtrio,Ground,,405,35,80,50,50,70,120,1,False +52,Meowth,Normal,,290,40,45,35,40,40,90,1,False +53,Persian,Normal,,440,65,70,60,65,65,115,1,False +54,Psyduck,Water,,320,50,52,48,65,50,55,1,False +55,Golduck,Water,,500,80,82,78,95,80,85,1,False +56,Mankey,Fighting,,305,40,80,35,35,45,70,1,False +57,Primeape,Fighting,,455,65,105,60,60,70,95,1,False +58,Growlithe,Fire,,350,55,70,45,70,50,60,1,False +59,Arcanine,Fire,,555,90,110,80,100,80,95,1,False +60,Poliwag,Water,,300,40,50,40,40,40,90,1,False +61,Poliwhirl,Water,,385,65,65,65,50,50,90,1,False +62,Poliwrath,Water,Fighting,510,90,95,95,70,90,70,1,False +63,Abra,Psychic,,310,25,20,15,105,55,90,1,False +64,Kadabra,Psychic,,400,40,35,30,120,70,105,1,False +65,Alakazam,Psychic,,500,55,50,45,135,95,120,1,False +65,AlakazamMega Alakazam,Psychic,,590,55,50,65,175,95,150,1,False +66,Machop,Fighting,,305,70,80,50,35,35,35,1,False +67,Machoke,Fighting,,405,80,100,70,50,60,45,1,False +68,Machamp,Fighting,,505,90,130,80,65,85,55,1,False +69,Bellsprout,Grass,Poison,300,50,75,35,70,30,40,1,False +70,Weepinbell,Grass,Poison,390,65,90,50,85,45,55,1,False +71,Victreebel,Grass,Poison,490,80,105,65,100,70,70,1,False +72,Tentacool,Water,Poison,335,40,40,35,50,100,70,1,False +73,Tentacruel,Water,Poison,515,80,70,65,80,120,100,1,False +74,Geodude,Rock,Ground,300,40,80,100,30,30,20,1,False +75,Graveler,Rock,Ground,390,55,95,115,45,45,35,1,False +76,Golem,Rock,Ground,495,80,120,130,55,65,45,1,False +77,Ponyta,Fire,,410,50,85,55,65,65,90,1,False +78,Rapidash,Fire,,500,65,100,70,80,80,105,1,False +79,Slowpoke,Water,Psychic,315,90,65,65,40,40,15,1,False +80,Slowbro,Water,Psychic,490,95,75,110,100,80,30,1,False +80,SlowbroMega Slowbro,Water,Psychic,590,95,75,180,130,80,30,1,False +81,Magnemite,Electric,Steel,325,25,35,70,95,55,45,1,False +82,Magneton,Electric,Steel,465,50,60,95,120,70,70,1,False +83,Farfetch'd,Normal,Flying,352,52,65,55,58,62,60,1,False +84,Doduo,Normal,Flying,310,35,85,45,35,35,75,1,False +85,Dodrio,Normal,Flying,460,60,110,70,60,60,100,1,False +86,Seel,Water,,325,65,45,55,45,70,45,1,False +87,Dewgong,Water,Ice,475,90,70,80,70,95,70,1,False +88,Grimer,Poison,,325,80,80,50,40,50,25,1,False +89,Muk,Poison,,500,105,105,75,65,100,50,1,False +90,Shellder,Water,,305,30,65,100,45,25,40,1,False +91,Cloyster,Water,Ice,525,50,95,180,85,45,70,1,False +92,Gastly,Ghost,Poison,310,30,35,30,100,35,80,1,False +93,Haunter,Ghost,Poison,405,45,50,45,115,55,95,1,False +94,Gengar,Ghost,Poison,500,60,65,60,130,75,110,1,False +94,GengarMega Gengar,Ghost,Poison,600,60,65,80,170,95,130,1,False +95,Onix,Rock,Ground,385,35,45,160,30,45,70,1,False +96,Drowzee,Psychic,,328,60,48,45,43,90,42,1,False +97,Hypno,Psychic,,483,85,73,70,73,115,67,1,False +98,Krabby,Water,,325,30,105,90,25,25,50,1,False +99,Kingler,Water,,475,55,130,115,50,50,75,1,False +100,Voltorb,Electric,,330,40,30,50,55,55,100,1,False +101,Electrode,Electric,,480,60,50,70,80,80,140,1,False +102,Exeggcute,Grass,Psychic,325,60,40,80,60,45,40,1,False +103,Exeggutor,Grass,Psychic,520,95,95,85,125,65,55,1,False +104,Cubone,Ground,,320,50,50,95,40,50,35,1,False +105,Marowak,Ground,,425,60,80,110,50,80,45,1,False +106,Hitmonlee,Fighting,,455,50,120,53,35,110,87,1,False +107,Hitmonchan,Fighting,,455,50,105,79,35,110,76,1,False +108,Lickitung,Normal,,385,90,55,75,60,75,30,1,False +109,Koffing,Poison,,340,40,65,95,60,45,35,1,False +110,Weezing,Poison,,490,65,90,120,85,70,60,1,False +111,Rhyhorn,Ground,Rock,345,80,85,95,30,30,25,1,False +112,Rhydon,Ground,Rock,485,105,130,120,45,45,40,1,False +113,Chansey,Normal,,450,250,5,5,35,105,50,1,False +114,Tangela,Grass,,435,65,55,115,100,40,60,1,False +115,Kangaskhan,Normal,,490,105,95,80,40,80,90,1,False +115,KangaskhanMega Kangaskhan,Normal,,590,105,125,100,60,100,100,1,False +116,Horsea,Water,,295,30,40,70,70,25,60,1,False +117,Seadra,Water,,440,55,65,95,95,45,85,1,False +118,Goldeen,Water,,320,45,67,60,35,50,63,1,False +119,Seaking,Water,,450,80,92,65,65,80,68,1,False +120,Staryu,Water,,340,30,45,55,70,55,85,1,False +121,Starmie,Water,Psychic,520,60,75,85,100,85,115,1,False +122,Mr. Mime,Psychic,Fairy,460,40,45,65,100,120,90,1,False +123,Scyther,Bug,Flying,500,70,110,80,55,80,105,1,False +124,Jynx,Ice,Psychic,455,65,50,35,115,95,95,1,False +125,Electabuzz,Electric,,490,65,83,57,95,85,105,1,False +126,Magmar,Fire,,495,65,95,57,100,85,93,1,False +127,Pinsir,Bug,,500,65,125,100,55,70,85,1,False +127,PinsirMega Pinsir,Bug,Flying,600,65,155,120,65,90,105,1,False +128,Tauros,Normal,,490,75,100,95,40,70,110,1,False +129,Magikarp,Water,,200,20,10,55,15,20,80,1,False +130,Gyarados,Water,Flying,540,95,125,79,60,100,81,1,False +130,GyaradosMega Gyarados,Water,Dark,640,95,155,109,70,130,81,1,False +131,Lapras,Water,Ice,535,130,85,80,85,95,60,1,False +132,Ditto,Normal,,288,48,48,48,48,48,48,1,False +133,Eevee,Normal,,325,55,55,50,45,65,55,1,False +134,Vaporeon,Water,,525,130,65,60,110,95,65,1,False +135,Jolteon,Electric,,525,65,65,60,110,95,130,1,False +136,Flareon,Fire,,525,65,130,60,95,110,65,1,False +137,Porygon,Normal,,395,65,60,70,85,75,40,1,False +138,Omanyte,Rock,Water,355,35,40,100,90,55,35,1,False +139,Omastar,Rock,Water,495,70,60,125,115,70,55,1,False +140,Kabuto,Rock,Water,355,30,80,90,55,45,55,1,False +141,Kabutops,Rock,Water,495,60,115,105,65,70,80,1,False +142,Aerodactyl,Rock,Flying,515,80,105,65,60,75,130,1,False +142,AerodactylMega Aerodactyl,Rock,Flying,615,80,135,85,70,95,150,1,False +143,Snorlax,Normal,,540,160,110,65,65,110,30,1,False +144,Articuno,Ice,Flying,580,90,85,100,95,125,85,1,True +145,Zapdos,Electric,Flying,580,90,90,85,125,90,100,1,True +146,Moltres,Fire,Flying,580,90,100,90,125,85,90,1,True +147,Dratini,Dragon,,300,41,64,45,50,50,50,1,False +148,Dragonair,Dragon,,420,61,84,65,70,70,70,1,False +149,Dragonite,Dragon,Flying,600,91,134,95,100,100,80,1,False +150,Mewtwo,Psychic,,680,106,110,90,154,90,130,1,True +150,MewtwoMega Mewtwo X,Psychic,Fighting,780,106,190,100,154,100,130,1,True +150,MewtwoMega Mewtwo Y,Psychic,,780,106,150,70,194,120,140,1,True +151,Mew,Psychic,,600,100,100,100,100,100,100,1,False +152,Chikorita,Grass,,318,45,49,65,49,65,45,2,False +153,Bayleef,Grass,,405,60,62,80,63,80,60,2,False +154,Meganium,Grass,,525,80,82,100,83,100,80,2,False +155,Cyndaquil,Fire,,309,39,52,43,60,50,65,2,False +156,Quilava,Fire,,405,58,64,58,80,65,80,2,False +157,Typhlosion,Fire,,534,78,84,78,109,85,100,2,False +158,Totodile,Water,,314,50,65,64,44,48,43,2,False +159,Croconaw,Water,,405,65,80,80,59,63,58,2,False +160,Feraligatr,Water,,530,85,105,100,79,83,78,2,False +161,Sentret,Normal,,215,35,46,34,35,45,20,2,False +162,Furret,Normal,,415,85,76,64,45,55,90,2,False +163,Hoothoot,Normal,Flying,262,60,30,30,36,56,50,2,False +164,Noctowl,Normal,Flying,442,100,50,50,76,96,70,2,False +165,Ledyba,Bug,Flying,265,40,20,30,40,80,55,2,False +166,Ledian,Bug,Flying,390,55,35,50,55,110,85,2,False +167,Spinarak,Bug,Poison,250,40,60,40,40,40,30,2,False +168,Ariados,Bug,Poison,390,70,90,70,60,60,40,2,False +169,Crobat,Poison,Flying,535,85,90,80,70,80,130,2,False +170,Chinchou,Water,Electric,330,75,38,38,56,56,67,2,False +171,Lanturn,Water,Electric,460,125,58,58,76,76,67,2,False +172,Pichu,Electric,,205,20,40,15,35,35,60,2,False +173,Cleffa,Fairy,,218,50,25,28,45,55,15,2,False +174,Igglybuff,Normal,Fairy,210,90,30,15,40,20,15,2,False +175,Togepi,Fairy,,245,35,20,65,40,65,20,2,False +176,Togetic,Fairy,Flying,405,55,40,85,80,105,40,2,False +177,Natu,Psychic,Flying,320,40,50,45,70,45,70,2,False +178,Xatu,Psychic,Flying,470,65,75,70,95,70,95,2,False +179,Mareep,Electric,,280,55,40,40,65,45,35,2,False +180,Flaaffy,Electric,,365,70,55,55,80,60,45,2,False +181,Ampharos,Electric,,510,90,75,85,115,90,55,2,False +181,AmpharosMega Ampharos,Electric,Dragon,610,90,95,105,165,110,45,2,False +182,Bellossom,Grass,,490,75,80,95,90,100,50,2,False +183,Marill,Water,Fairy,250,70,20,50,20,50,40,2,False +184,Azumarill,Water,Fairy,420,100,50,80,60,80,50,2,False +185,Sudowoodo,Rock,,410,70,100,115,30,65,30,2,False +186,Politoed,Water,,500,90,75,75,90,100,70,2,False +187,Hoppip,Grass,Flying,250,35,35,40,35,55,50,2,False +188,Skiploom,Grass,Flying,340,55,45,50,45,65,80,2,False +189,Jumpluff,Grass,Flying,460,75,55,70,55,95,110,2,False +190,Aipom,Normal,,360,55,70,55,40,55,85,2,False +191,Sunkern,Grass,,180,30,30,30,30,30,30,2,False +192,Sunflora,Grass,,425,75,75,55,105,85,30,2,False +193,Yanma,Bug,Flying,390,65,65,45,75,45,95,2,False +194,Wooper,Water,Ground,210,55,45,45,25,25,15,2,False +195,Quagsire,Water,Ground,430,95,85,85,65,65,35,2,False +196,Espeon,Psychic,,525,65,65,60,130,95,110,2,False +197,Umbreon,Dark,,525,95,65,110,60,130,65,2,False +198,Murkrow,Dark,Flying,405,60,85,42,85,42,91,2,False +199,Slowking,Water,Psychic,490,95,75,80,100,110,30,2,False +200,Misdreavus,Ghost,,435,60,60,60,85,85,85,2,False +201,Unown,Psychic,,336,48,72,48,72,48,48,2,False +202,Wobbuffet,Psychic,,405,190,33,58,33,58,33,2,False +203,Girafarig,Normal,Psychic,455,70,80,65,90,65,85,2,False +204,Pineco,Bug,,290,50,65,90,35,35,15,2,False +205,Forretress,Bug,Steel,465,75,90,140,60,60,40,2,False +206,Dunsparce,Normal,,415,100,70,70,65,65,45,2,False +207,Gligar,Ground,Flying,430,65,75,105,35,65,85,2,False +208,Steelix,Steel,Ground,510,75,85,200,55,65,30,2,False +208,SteelixMega Steelix,Steel,Ground,610,75,125,230,55,95,30,2,False +209,Snubbull,Fairy,,300,60,80,50,40,40,30,2,False +210,Granbull,Fairy,,450,90,120,75,60,60,45,2,False +211,Qwilfish,Water,Poison,430,65,95,75,55,55,85,2,False +212,Scizor,Bug,Steel,500,70,130,100,55,80,65,2,False +212,ScizorMega Scizor,Bug,Steel,600,70,150,140,65,100,75,2,False +213,Shuckle,Bug,Rock,505,20,10,230,10,230,5,2,False +214,Heracross,Bug,Fighting,500,80,125,75,40,95,85,2,False +214,HeracrossMega Heracross,Bug,Fighting,600,80,185,115,40,105,75,2,False +215,Sneasel,Dark,Ice,430,55,95,55,35,75,115,2,False +216,Teddiursa,Normal,,330,60,80,50,50,50,40,2,False +217,Ursaring,Normal,,500,90,130,75,75,75,55,2,False +218,Slugma,Fire,,250,40,40,40,70,40,20,2,False +219,Magcargo,Fire,Rock,410,50,50,120,80,80,30,2,False +220,Swinub,Ice,Ground,250,50,50,40,30,30,50,2,False +221,Piloswine,Ice,Ground,450,100,100,80,60,60,50,2,False +222,Corsola,Water,Rock,380,55,55,85,65,85,35,2,False +223,Remoraid,Water,,300,35,65,35,65,35,65,2,False +224,Octillery,Water,,480,75,105,75,105,75,45,2,False +225,Delibird,Ice,Flying,330,45,55,45,65,45,75,2,False +226,Mantine,Water,Flying,465,65,40,70,80,140,70,2,False +227,Skarmory,Steel,Flying,465,65,80,140,40,70,70,2,False +228,Houndour,Dark,Fire,330,45,60,30,80,50,65,2,False +229,Houndoom,Dark,Fire,500,75,90,50,110,80,95,2,False +229,HoundoomMega Houndoom,Dark,Fire,600,75,90,90,140,90,115,2,False +230,Kingdra,Water,Dragon,540,75,95,95,95,95,85,2,False +231,Phanpy,Ground,,330,90,60,60,40,40,40,2,False +232,Donphan,Ground,,500,90,120,120,60,60,50,2,False +233,Porygon2,Normal,,515,85,80,90,105,95,60,2,False +234,Stantler,Normal,,465,73,95,62,85,65,85,2,False +235,Smeargle,Normal,,250,55,20,35,20,45,75,2,False +236,Tyrogue,Fighting,,210,35,35,35,35,35,35,2,False +237,Hitmontop,Fighting,,455,50,95,95,35,110,70,2,False +238,Smoochum,Ice,Psychic,305,45,30,15,85,65,65,2,False +239,Elekid,Electric,,360,45,63,37,65,55,95,2,False +240,Magby,Fire,,365,45,75,37,70,55,83,2,False +241,Miltank,Normal,,490,95,80,105,40,70,100,2,False +242,Blissey,Normal,,540,255,10,10,75,135,55,2,False +243,Raikou,Electric,,580,90,85,75,115,100,115,2,True +244,Entei,Fire,,580,115,115,85,90,75,100,2,True +245,Suicune,Water,,580,100,75,115,90,115,85,2,True +246,Larvitar,Rock,Ground,300,50,64,50,45,50,41,2,False +247,Pupitar,Rock,Ground,410,70,84,70,65,70,51,2,False +248,Tyranitar,Rock,Dark,600,100,134,110,95,100,61,2,False +248,TyranitarMega Tyranitar,Rock,Dark,700,100,164,150,95,120,71,2,False +249,Lugia,Psychic,Flying,680,106,90,130,90,154,110,2,True +250,Ho-oh,Fire,Flying,680,106,130,90,110,154,90,2,True +251,Celebi,Psychic,Grass,600,100,100,100,100,100,100,2,False +252,Treecko,Grass,,310,40,45,35,65,55,70,3,False +253,Grovyle,Grass,,405,50,65,45,85,65,95,3,False +254,Sceptile,Grass,,530,70,85,65,105,85,120,3,False +254,SceptileMega Sceptile,Grass,Dragon,630,70,110,75,145,85,145,3,False +255,Torchic,Fire,,310,45,60,40,70,50,45,3,False +256,Combusken,Fire,Fighting,405,60,85,60,85,60,55,3,False +257,Blaziken,Fire,Fighting,530,80,120,70,110,70,80,3,False +257,BlazikenMega Blaziken,Fire,Fighting,630,80,160,80,130,80,100,3,False +258,Mudkip,Water,,310,50,70,50,50,50,40,3,False +259,Marshtomp,Water,Ground,405,70,85,70,60,70,50,3,False +260,Swampert,Water,Ground,535,100,110,90,85,90,60,3,False +260,SwampertMega Swampert,Water,Ground,635,100,150,110,95,110,70,3,False +261,Poochyena,Dark,,220,35,55,35,30,30,35,3,False +262,Mightyena,Dark,,420,70,90,70,60,60,70,3,False +263,Zigzagoon,Normal,,240,38,30,41,30,41,60,3,False +264,Linoone,Normal,,420,78,70,61,50,61,100,3,False +265,Wurmple,Bug,,195,45,45,35,20,30,20,3,False +266,Silcoon,Bug,,205,50,35,55,25,25,15,3,False +267,Beautifly,Bug,Flying,395,60,70,50,100,50,65,3,False +268,Cascoon,Bug,,205,50,35,55,25,25,15,3,False +269,Dustox,Bug,Poison,385,60,50,70,50,90,65,3,False +270,Lotad,Water,Grass,220,40,30,30,40,50,30,3,False +271,Lombre,Water,Grass,340,60,50,50,60,70,50,3,False +272,Ludicolo,Water,Grass,480,80,70,70,90,100,70,3,False +273,Seedot,Grass,,220,40,40,50,30,30,30,3,False +274,Nuzleaf,Grass,Dark,340,70,70,40,60,40,60,3,False +275,Shiftry,Grass,Dark,480,90,100,60,90,60,80,3,False +276,Taillow,Normal,Flying,270,40,55,30,30,30,85,3,False +277,Swellow,Normal,Flying,430,60,85,60,50,50,125,3,False +278,Wingull,Water,Flying,270,40,30,30,55,30,85,3,False +279,Pelipper,Water,Flying,430,60,50,100,85,70,65,3,False +280,Ralts,Psychic,Fairy,198,28,25,25,45,35,40,3,False +281,Kirlia,Psychic,Fairy,278,38,35,35,65,55,50,3,False +282,Gardevoir,Psychic,Fairy,518,68,65,65,125,115,80,3,False +282,GardevoirMega Gardevoir,Psychic,Fairy,618,68,85,65,165,135,100,3,False +283,Surskit,Bug,Water,269,40,30,32,50,52,65,3,False +284,Masquerain,Bug,Flying,414,70,60,62,80,82,60,3,False +285,Shroomish,Grass,,295,60,40,60,40,60,35,3,False +286,Breloom,Grass,Fighting,460,60,130,80,60,60,70,3,False +287,Slakoth,Normal,,280,60,60,60,35,35,30,3,False +288,Vigoroth,Normal,,440,80,80,80,55,55,90,3,False +289,Slaking,Normal,,670,150,160,100,95,65,100,3,False +290,Nincada,Bug,Ground,266,31,45,90,30,30,40,3,False +291,Ninjask,Bug,Flying,456,61,90,45,50,50,160,3,False +292,Shedinja,Bug,Ghost,236,1,90,45,30,30,40,3,False +293,Whismur,Normal,,240,64,51,23,51,23,28,3,False +294,Loudred,Normal,,360,84,71,43,71,43,48,3,False +295,Exploud,Normal,,490,104,91,63,91,73,68,3,False +296,Makuhita,Fighting,,237,72,60,30,20,30,25,3,False +297,Hariyama,Fighting,,474,144,120,60,40,60,50,3,False +298,Azurill,Normal,Fairy,190,50,20,40,20,40,20,3,False +299,Nosepass,Rock,,375,30,45,135,45,90,30,3,False +300,Skitty,Normal,,260,50,45,45,35,35,50,3,False +301,Delcatty,Normal,,380,70,65,65,55,55,70,3,False +302,Sableye,Dark,Ghost,380,50,75,75,65,65,50,3,False +302,SableyeMega Sableye,Dark,Ghost,480,50,85,125,85,115,20,3,False +303,Mawile,Steel,Fairy,380,50,85,85,55,55,50,3,False +303,MawileMega Mawile,Steel,Fairy,480,50,105,125,55,95,50,3,False +304,Aron,Steel,Rock,330,50,70,100,40,40,30,3,False +305,Lairon,Steel,Rock,430,60,90,140,50,50,40,3,False +306,Aggron,Steel,Rock,530,70,110,180,60,60,50,3,False +306,AggronMega Aggron,Steel,,630,70,140,230,60,80,50,3,False +307,Meditite,Fighting,Psychic,280,30,40,55,40,55,60,3,False +308,Medicham,Fighting,Psychic,410,60,60,75,60,75,80,3,False +308,MedichamMega Medicham,Fighting,Psychic,510,60,100,85,80,85,100,3,False +309,Electrike,Electric,,295,40,45,40,65,40,65,3,False +310,Manectric,Electric,,475,70,75,60,105,60,105,3,False +310,ManectricMega Manectric,Electric,,575,70,75,80,135,80,135,3,False +311,Plusle,Electric,,405,60,50,40,85,75,95,3,False +312,Minun,Electric,,405,60,40,50,75,85,95,3,False +313,Volbeat,Bug,,400,65,73,55,47,75,85,3,False +314,Illumise,Bug,,400,65,47,55,73,75,85,3,False +315,Roselia,Grass,Poison,400,50,60,45,100,80,65,3,False +316,Gulpin,Poison,,302,70,43,53,43,53,40,3,False +317,Swalot,Poison,,467,100,73,83,73,83,55,3,False +318,Carvanha,Water,Dark,305,45,90,20,65,20,65,3,False +319,Sharpedo,Water,Dark,460,70,120,40,95,40,95,3,False +319,SharpedoMega Sharpedo,Water,Dark,560,70,140,70,110,65,105,3,False +320,Wailmer,Water,,400,130,70,35,70,35,60,3,False +321,Wailord,Water,,500,170,90,45,90,45,60,3,False +322,Numel,Fire,Ground,305,60,60,40,65,45,35,3,False +323,Camerupt,Fire,Ground,460,70,100,70,105,75,40,3,False +323,CameruptMega Camerupt,Fire,Ground,560,70,120,100,145,105,20,3,False +324,Torkoal,Fire,,470,70,85,140,85,70,20,3,False +325,Spoink,Psychic,,330,60,25,35,70,80,60,3,False +326,Grumpig,Psychic,,470,80,45,65,90,110,80,3,False +327,Spinda,Normal,,360,60,60,60,60,60,60,3,False +328,Trapinch,Ground,,290,45,100,45,45,45,10,3,False +329,Vibrava,Ground,Dragon,340,50,70,50,50,50,70,3,False +330,Flygon,Ground,Dragon,520,80,100,80,80,80,100,3,False +331,Cacnea,Grass,,335,50,85,40,85,40,35,3,False +332,Cacturne,Grass,Dark,475,70,115,60,115,60,55,3,False +333,Swablu,Normal,Flying,310,45,40,60,40,75,50,3,False +334,Altaria,Dragon,Flying,490,75,70,90,70,105,80,3,False +334,AltariaMega Altaria,Dragon,Fairy,590,75,110,110,110,105,80,3,False +335,Zangoose,Normal,,458,73,115,60,60,60,90,3,False +336,Seviper,Poison,,458,73,100,60,100,60,65,3,False +337,Lunatone,Rock,Psychic,440,70,55,65,95,85,70,3,False +338,Solrock,Rock,Psychic,440,70,95,85,55,65,70,3,False +339,Barboach,Water,Ground,288,50,48,43,46,41,60,3,False +340,Whiscash,Water,Ground,468,110,78,73,76,71,60,3,False +341,Corphish,Water,,308,43,80,65,50,35,35,3,False +342,Crawdaunt,Water,Dark,468,63,120,85,90,55,55,3,False +343,Baltoy,Ground,Psychic,300,40,40,55,40,70,55,3,False +344,Claydol,Ground,Psychic,500,60,70,105,70,120,75,3,False +345,Lileep,Rock,Grass,355,66,41,77,61,87,23,3,False +346,Cradily,Rock,Grass,495,86,81,97,81,107,43,3,False +347,Anorith,Rock,Bug,355,45,95,50,40,50,75,3,False +348,Armaldo,Rock,Bug,495,75,125,100,70,80,45,3,False +349,Feebas,Water,,200,20,15,20,10,55,80,3,False +350,Milotic,Water,,540,95,60,79,100,125,81,3,False +351,Castform,Normal,,420,70,70,70,70,70,70,3,False +352,Kecleon,Normal,,440,60,90,70,60,120,40,3,False +353,Shuppet,Ghost,,295,44,75,35,63,33,45,3,False +354,Banette,Ghost,,455,64,115,65,83,63,65,3,False +354,BanetteMega Banette,Ghost,,555,64,165,75,93,83,75,3,False +355,Duskull,Ghost,,295,20,40,90,30,90,25,3,False +356,Dusclops,Ghost,,455,40,70,130,60,130,25,3,False +357,Tropius,Grass,Flying,460,99,68,83,72,87,51,3,False +358,Chimecho,Psychic,,425,65,50,70,95,80,65,3,False +359,Absol,Dark,,465,65,130,60,75,60,75,3,False +359,AbsolMega Absol,Dark,,565,65,150,60,115,60,115,3,False +360,Wynaut,Psychic,,260,95,23,48,23,48,23,3,False +361,Snorunt,Ice,,300,50,50,50,50,50,50,3,False +362,Glalie,Ice,,480,80,80,80,80,80,80,3,False +362,GlalieMega Glalie,Ice,,580,80,120,80,120,80,100,3,False +363,Spheal,Ice,Water,290,70,40,50,55,50,25,3,False +364,Sealeo,Ice,Water,410,90,60,70,75,70,45,3,False +365,Walrein,Ice,Water,530,110,80,90,95,90,65,3,False +366,Clamperl,Water,,345,35,64,85,74,55,32,3,False +367,Huntail,Water,,485,55,104,105,94,75,52,3,False +368,Gorebyss,Water,,485,55,84,105,114,75,52,3,False +369,Relicanth,Water,Rock,485,100,90,130,45,65,55,3,False +370,Luvdisc,Water,,330,43,30,55,40,65,97,3,False +371,Bagon,Dragon,,300,45,75,60,40,30,50,3,False +372,Shelgon,Dragon,,420,65,95,100,60,50,50,3,False +373,Salamence,Dragon,Flying,600,95,135,80,110,80,100,3,False +373,SalamenceMega Salamence,Dragon,Flying,700,95,145,130,120,90,120,3,False +374,Beldum,Steel,Psychic,300,40,55,80,35,60,30,3,False +375,Metang,Steel,Psychic,420,60,75,100,55,80,50,3,False +376,Metagross,Steel,Psychic,600,80,135,130,95,90,70,3,False +376,MetagrossMega Metagross,Steel,Psychic,700,80,145,150,105,110,110,3,False +377,Regirock,Rock,,580,80,100,200,50,100,50,3,True +378,Regice,Ice,,580,80,50,100,100,200,50,3,True +379,Registeel,Steel,,580,80,75,150,75,150,50,3,True +380,Latias,Dragon,Psychic,600,80,80,90,110,130,110,3,True +380,LatiasMega Latias,Dragon,Psychic,700,80,100,120,140,150,110,3,True +381,Latios,Dragon,Psychic,600,80,90,80,130,110,110,3,True +381,LatiosMega Latios,Dragon,Psychic,700,80,130,100,160,120,110,3,True +382,Kyogre,Water,,670,100,100,90,150,140,90,3,True +382,KyogrePrimal Kyogre,Water,,770,100,150,90,180,160,90,3,True +383,Groudon,Ground,,670,100,150,140,100,90,90,3,True +383,GroudonPrimal Groudon,Ground,Fire,770,100,180,160,150,90,90,3,True +384,Rayquaza,Dragon,Flying,680,105,150,90,150,90,95,3,True +384,RayquazaMega Rayquaza,Dragon,Flying,780,105,180,100,180,100,115,3,True +385,Jirachi,Steel,Psychic,600,100,100,100,100,100,100,3,True +386,DeoxysNormal Forme,Psychic,,600,50,150,50,150,50,150,3,True +386,DeoxysAttack Forme,Psychic,,600,50,180,20,180,20,150,3,True +386,DeoxysDefense Forme,Psychic,,600,50,70,160,70,160,90,3,True +386,DeoxysSpeed Forme,Psychic,,600,50,95,90,95,90,180,3,True +387,Turtwig,Grass,,318,55,68,64,45,55,31,4,False +388,Grotle,Grass,,405,75,89,85,55,65,36,4,False +389,Torterra,Grass,Ground,525,95,109,105,75,85,56,4,False +390,Chimchar,Fire,,309,44,58,44,58,44,61,4,False +391,Monferno,Fire,Fighting,405,64,78,52,78,52,81,4,False +392,Infernape,Fire,Fighting,534,76,104,71,104,71,108,4,False +393,Piplup,Water,,314,53,51,53,61,56,40,4,False +394,Prinplup,Water,,405,64,66,68,81,76,50,4,False +395,Empoleon,Water,Steel,530,84,86,88,111,101,60,4,False +396,Starly,Normal,Flying,245,40,55,30,30,30,60,4,False +397,Staravia,Normal,Flying,340,55,75,50,40,40,80,4,False +398,Staraptor,Normal,Flying,485,85,120,70,50,60,100,4,False +399,Bidoof,Normal,,250,59,45,40,35,40,31,4,False +400,Bibarel,Normal,Water,410,79,85,60,55,60,71,4,False +401,Kricketot,Bug,,194,37,25,41,25,41,25,4,False +402,Kricketune,Bug,,384,77,85,51,55,51,65,4,False +403,Shinx,Electric,,263,45,65,34,40,34,45,4,False +404,Luxio,Electric,,363,60,85,49,60,49,60,4,False +405,Luxray,Electric,,523,80,120,79,95,79,70,4,False +406,Budew,Grass,Poison,280,40,30,35,50,70,55,4,False +407,Roserade,Grass,Poison,515,60,70,65,125,105,90,4,False +408,Cranidos,Rock,,350,67,125,40,30,30,58,4,False +409,Rampardos,Rock,,495,97,165,60,65,50,58,4,False +410,Shieldon,Rock,Steel,350,30,42,118,42,88,30,4,False +411,Bastiodon,Rock,Steel,495,60,52,168,47,138,30,4,False +412,Burmy,Bug,,224,40,29,45,29,45,36,4,False +413,WormadamPlant Cloak,Bug,Grass,424,60,59,85,79,105,36,4,False +413,WormadamSandy Cloak,Bug,Ground,424,60,79,105,59,85,36,4,False +413,WormadamTrash Cloak,Bug,Steel,424,60,69,95,69,95,36,4,False +414,Mothim,Bug,Flying,424,70,94,50,94,50,66,4,False +415,Combee,Bug,Flying,244,30,30,42,30,42,70,4,False +416,Vespiquen,Bug,Flying,474,70,80,102,80,102,40,4,False +417,Pachirisu,Electric,,405,60,45,70,45,90,95,4,False +418,Buizel,Water,,330,55,65,35,60,30,85,4,False +419,Floatzel,Water,,495,85,105,55,85,50,115,4,False +420,Cherubi,Grass,,275,45,35,45,62,53,35,4,False +421,Cherrim,Grass,,450,70,60,70,87,78,85,4,False +422,Shellos,Water,,325,76,48,48,57,62,34,4,False +423,Gastrodon,Water,Ground,475,111,83,68,92,82,39,4,False +424,Ambipom,Normal,,482,75,100,66,60,66,115,4,False +425,Drifloon,Ghost,Flying,348,90,50,34,60,44,70,4,False +426,Drifblim,Ghost,Flying,498,150,80,44,90,54,80,4,False +427,Buneary,Normal,,350,55,66,44,44,56,85,4,False +428,Lopunny,Normal,,480,65,76,84,54,96,105,4,False +428,LopunnyMega Lopunny,Normal,Fighting,580,65,136,94,54,96,135,4,False +429,Mismagius,Ghost,,495,60,60,60,105,105,105,4,False +430,Honchkrow,Dark,Flying,505,100,125,52,105,52,71,4,False +431,Glameow,Normal,,310,49,55,42,42,37,85,4,False +432,Purugly,Normal,,452,71,82,64,64,59,112,4,False +433,Chingling,Psychic,,285,45,30,50,65,50,45,4,False +434,Stunky,Poison,Dark,329,63,63,47,41,41,74,4,False +435,Skuntank,Poison,Dark,479,103,93,67,71,61,84,4,False +436,Bronzor,Steel,Psychic,300,57,24,86,24,86,23,4,False +437,Bronzong,Steel,Psychic,500,67,89,116,79,116,33,4,False +438,Bonsly,Rock,,290,50,80,95,10,45,10,4,False +439,Mime Jr.,Psychic,Fairy,310,20,25,45,70,90,60,4,False +440,Happiny,Normal,,220,100,5,5,15,65,30,4,False +441,Chatot,Normal,Flying,411,76,65,45,92,42,91,4,False +442,Spiritomb,Ghost,Dark,485,50,92,108,92,108,35,4,False +443,Gible,Dragon,Ground,300,58,70,45,40,45,42,4,False +444,Gabite,Dragon,Ground,410,68,90,65,50,55,82,4,False +445,Garchomp,Dragon,Ground,600,108,130,95,80,85,102,4,False +445,GarchompMega Garchomp,Dragon,Ground,700,108,170,115,120,95,92,4,False +446,Munchlax,Normal,,390,135,85,40,40,85,5,4,False +447,Riolu,Fighting,,285,40,70,40,35,40,60,4,False +448,Lucario,Fighting,Steel,525,70,110,70,115,70,90,4,False +448,LucarioMega Lucario,Fighting,Steel,625,70,145,88,140,70,112,4,False +449,Hippopotas,Ground,,330,68,72,78,38,42,32,4,False +450,Hippowdon,Ground,,525,108,112,118,68,72,47,4,False +451,Skorupi,Poison,Bug,330,40,50,90,30,55,65,4,False +452,Drapion,Poison,Dark,500,70,90,110,60,75,95,4,False +453,Croagunk,Poison,Fighting,300,48,61,40,61,40,50,4,False +454,Toxicroak,Poison,Fighting,490,83,106,65,86,65,85,4,False +455,Carnivine,Grass,,454,74,100,72,90,72,46,4,False +456,Finneon,Water,,330,49,49,56,49,61,66,4,False +457,Lumineon,Water,,460,69,69,76,69,86,91,4,False +458,Mantyke,Water,Flying,345,45,20,50,60,120,50,4,False +459,Snover,Grass,Ice,334,60,62,50,62,60,40,4,False +460,Abomasnow,Grass,Ice,494,90,92,75,92,85,60,4,False +460,AbomasnowMega Abomasnow,Grass,Ice,594,90,132,105,132,105,30,4,False +461,Weavile,Dark,Ice,510,70,120,65,45,85,125,4,False +462,Magnezone,Electric,Steel,535,70,70,115,130,90,60,4,False +463,Lickilicky,Normal,,515,110,85,95,80,95,50,4,False +464,Rhyperior,Ground,Rock,535,115,140,130,55,55,40,4,False +465,Tangrowth,Grass,,535,100,100,125,110,50,50,4,False +466,Electivire,Electric,,540,75,123,67,95,85,95,4,False +467,Magmortar,Fire,,540,75,95,67,125,95,83,4,False +468,Togekiss,Fairy,Flying,545,85,50,95,120,115,80,4,False +469,Yanmega,Bug,Flying,515,86,76,86,116,56,95,4,False +470,Leafeon,Grass,,525,65,110,130,60,65,95,4,False +471,Glaceon,Ice,,525,65,60,110,130,95,65,4,False +472,Gliscor,Ground,Flying,510,75,95,125,45,75,95,4,False +473,Mamoswine,Ice,Ground,530,110,130,80,70,60,80,4,False +474,Porygon-Z,Normal,,535,85,80,70,135,75,90,4,False +475,Gallade,Psychic,Fighting,518,68,125,65,65,115,80,4,False +475,GalladeMega Gallade,Psychic,Fighting,618,68,165,95,65,115,110,4,False +476,Probopass,Rock,Steel,525,60,55,145,75,150,40,4,False +477,Dusknoir,Ghost,,525,45,100,135,65,135,45,4,False +478,Froslass,Ice,Ghost,480,70,80,70,80,70,110,4,False +479,Rotom,Electric,Ghost,440,50,50,77,95,77,91,4,False +479,RotomHeat Rotom,Electric,Fire,520,50,65,107,105,107,86,4,False +479,RotomWash Rotom,Electric,Water,520,50,65,107,105,107,86,4,False +479,RotomFrost Rotom,Electric,Ice,520,50,65,107,105,107,86,4,False +479,RotomFan Rotom,Electric,Flying,520,50,65,107,105,107,86,4,False +479,RotomMow Rotom,Electric,Grass,520,50,65,107,105,107,86,4,False +480,Uxie,Psychic,,580,75,75,130,75,130,95,4,True +481,Mesprit,Psychic,,580,80,105,105,105,105,80,4,True +482,Azelf,Psychic,,580,75,125,70,125,70,115,4,True +483,Dialga,Steel,Dragon,680,100,120,120,150,100,90,4,True +484,Palkia,Water,Dragon,680,90,120,100,150,120,100,4,True +485,Heatran,Fire,Steel,600,91,90,106,130,106,77,4,True +486,Regigigas,Normal,,670,110,160,110,80,110,100,4,True +487,GiratinaAltered Forme,Ghost,Dragon,680,150,100,120,100,120,90,4,True +487,GiratinaOrigin Forme,Ghost,Dragon,680,150,120,100,120,100,90,4,True +488,Cresselia,Psychic,,600,120,70,120,75,130,85,4,False +489,Phione,Water,,480,80,80,80,80,80,80,4,False +490,Manaphy,Water,,600,100,100,100,100,100,100,4,False +491,Darkrai,Dark,,600,70,90,90,135,90,125,4,True +492,ShayminLand Forme,Grass,,600,100,100,100,100,100,100,4,True +492,ShayminSky Forme,Grass,Flying,600,100,103,75,120,75,127,4,True +493,Arceus,Normal,,720,120,120,120,120,120,120,4,True +494,Victini,Psychic,Fire,600,100,100,100,100,100,100,5,True +495,Snivy,Grass,,308,45,45,55,45,55,63,5,False +496,Servine,Grass,,413,60,60,75,60,75,83,5,False +497,Serperior,Grass,,528,75,75,95,75,95,113,5,False +498,Tepig,Fire,,308,65,63,45,45,45,45,5,False +499,Pignite,Fire,Fighting,418,90,93,55,70,55,55,5,False +500,Emboar,Fire,Fighting,528,110,123,65,100,65,65,5,False +501,Oshawott,Water,,308,55,55,45,63,45,45,5,False +502,Dewott,Water,,413,75,75,60,83,60,60,5,False +503,Samurott,Water,,528,95,100,85,108,70,70,5,False +504,Patrat,Normal,,255,45,55,39,35,39,42,5,False +505,Watchog,Normal,,420,60,85,69,60,69,77,5,False +506,Lillipup,Normal,,275,45,60,45,25,45,55,5,False +507,Herdier,Normal,,370,65,80,65,35,65,60,5,False +508,Stoutland,Normal,,500,85,110,90,45,90,80,5,False +509,Purrloin,Dark,,281,41,50,37,50,37,66,5,False +510,Liepard,Dark,,446,64,88,50,88,50,106,5,False +511,Pansage,Grass,,316,50,53,48,53,48,64,5,False +512,Simisage,Grass,,498,75,98,63,98,63,101,5,False +513,Pansear,Fire,,316,50,53,48,53,48,64,5,False +514,Simisear,Fire,,498,75,98,63,98,63,101,5,False +515,Panpour,Water,,316,50,53,48,53,48,64,5,False +516,Simipour,Water,,498,75,98,63,98,63,101,5,False +517,Munna,Psychic,,292,76,25,45,67,55,24,5,False +518,Musharna,Psychic,,487,116,55,85,107,95,29,5,False +519,Pidove,Normal,Flying,264,50,55,50,36,30,43,5,False +520,Tranquill,Normal,Flying,358,62,77,62,50,42,65,5,False +521,Unfezant,Normal,Flying,488,80,115,80,65,55,93,5,False +522,Blitzle,Electric,,295,45,60,32,50,32,76,5,False +523,Zebstrika,Electric,,497,75,100,63,80,63,116,5,False +524,Roggenrola,Rock,,280,55,75,85,25,25,15,5,False +525,Boldore,Rock,,390,70,105,105,50,40,20,5,False +526,Gigalith,Rock,,515,85,135,130,60,80,25,5,False +527,Woobat,Psychic,Flying,313,55,45,43,55,43,72,5,False +528,Swoobat,Psychic,Flying,425,67,57,55,77,55,114,5,False +529,Drilbur,Ground,,328,60,85,40,30,45,68,5,False +530,Excadrill,Ground,Steel,508,110,135,60,50,65,88,5,False +531,Audino,Normal,,445,103,60,86,60,86,50,5,False +531,AudinoMega Audino,Normal,Fairy,545,103,60,126,80,126,50,5,False +532,Timburr,Fighting,,305,75,80,55,25,35,35,5,False +533,Gurdurr,Fighting,,405,85,105,85,40,50,40,5,False +534,Conkeldurr,Fighting,,505,105,140,95,55,65,45,5,False +535,Tympole,Water,,294,50,50,40,50,40,64,5,False +536,Palpitoad,Water,Ground,384,75,65,55,65,55,69,5,False +537,Seismitoad,Water,Ground,509,105,95,75,85,75,74,5,False +538,Throh,Fighting,,465,120,100,85,30,85,45,5,False +539,Sawk,Fighting,,465,75,125,75,30,75,85,5,False +540,Sewaddle,Bug,Grass,310,45,53,70,40,60,42,5,False +541,Swadloon,Bug,Grass,380,55,63,90,50,80,42,5,False +542,Leavanny,Bug,Grass,500,75,103,80,70,80,92,5,False +543,Venipede,Bug,Poison,260,30,45,59,30,39,57,5,False +544,Whirlipede,Bug,Poison,360,40,55,99,40,79,47,5,False +545,Scolipede,Bug,Poison,485,60,100,89,55,69,112,5,False +546,Cottonee,Grass,Fairy,280,40,27,60,37,50,66,5,False +547,Whimsicott,Grass,Fairy,480,60,67,85,77,75,116,5,False +548,Petilil,Grass,,280,45,35,50,70,50,30,5,False +549,Lilligant,Grass,,480,70,60,75,110,75,90,5,False +550,Basculin,Water,,460,70,92,65,80,55,98,5,False +551,Sandile,Ground,Dark,292,50,72,35,35,35,65,5,False +552,Krokorok,Ground,Dark,351,60,82,45,45,45,74,5,False +553,Krookodile,Ground,Dark,519,95,117,80,65,70,92,5,False +554,Darumaka,Fire,,315,70,90,45,15,45,50,5,False +555,DarmanitanStandard Mode,Fire,,480,105,140,55,30,55,95,5,False +555,DarmanitanZen Mode,Fire,Psychic,540,105,30,105,140,105,55,5,False +556,Maractus,Grass,,461,75,86,67,106,67,60,5,False +557,Dwebble,Bug,Rock,325,50,65,85,35,35,55,5,False +558,Crustle,Bug,Rock,475,70,95,125,65,75,45,5,False +559,Scraggy,Dark,Fighting,348,50,75,70,35,70,48,5,False +560,Scrafty,Dark,Fighting,488,65,90,115,45,115,58,5,False +561,Sigilyph,Psychic,Flying,490,72,58,80,103,80,97,5,False +562,Yamask,Ghost,,303,38,30,85,55,65,30,5,False +563,Cofagrigus,Ghost,,483,58,50,145,95,105,30,5,False +564,Tirtouga,Water,Rock,355,54,78,103,53,45,22,5,False +565,Carracosta,Water,Rock,495,74,108,133,83,65,32,5,False +566,Archen,Rock,Flying,401,55,112,45,74,45,70,5,False +567,Archeops,Rock,Flying,567,75,140,65,112,65,110,5,False +568,Trubbish,Poison,,329,50,50,62,40,62,65,5,False +569,Garbodor,Poison,,474,80,95,82,60,82,75,5,False +570,Zorua,Dark,,330,40,65,40,80,40,65,5,False +571,Zoroark,Dark,,510,60,105,60,120,60,105,5,False +572,Minccino,Normal,,300,55,50,40,40,40,75,5,False +573,Cinccino,Normal,,470,75,95,60,65,60,115,5,False +574,Gothita,Psychic,,290,45,30,50,55,65,45,5,False +575,Gothorita,Psychic,,390,60,45,70,75,85,55,5,False +576,Gothitelle,Psychic,,490,70,55,95,95,110,65,5,False +577,Solosis,Psychic,,290,45,30,40,105,50,20,5,False +578,Duosion,Psychic,,370,65,40,50,125,60,30,5,False +579,Reuniclus,Psychic,,490,110,65,75,125,85,30,5,False +580,Ducklett,Water,Flying,305,62,44,50,44,50,55,5,False +581,Swanna,Water,Flying,473,75,87,63,87,63,98,5,False +582,Vanillite,Ice,,305,36,50,50,65,60,44,5,False +583,Vanillish,Ice,,395,51,65,65,80,75,59,5,False +584,Vanilluxe,Ice,,535,71,95,85,110,95,79,5,False +585,Deerling,Normal,Grass,335,60,60,50,40,50,75,5,False +586,Sawsbuck,Normal,Grass,475,80,100,70,60,70,95,5,False +587,Emolga,Electric,Flying,428,55,75,60,75,60,103,5,False +588,Karrablast,Bug,,315,50,75,45,40,45,60,5,False +589,Escavalier,Bug,Steel,495,70,135,105,60,105,20,5,False +590,Foongus,Grass,Poison,294,69,55,45,55,55,15,5,False +591,Amoonguss,Grass,Poison,464,114,85,70,85,80,30,5,False +592,Frillish,Water,Ghost,335,55,40,50,65,85,40,5,False +593,Jellicent,Water,Ghost,480,100,60,70,85,105,60,5,False +594,Alomomola,Water,,470,165,75,80,40,45,65,5,False +595,Joltik,Bug,Electric,319,50,47,50,57,50,65,5,False +596,Galvantula,Bug,Electric,472,70,77,60,97,60,108,5,False +597,Ferroseed,Grass,Steel,305,44,50,91,24,86,10,5,False +598,Ferrothorn,Grass,Steel,489,74,94,131,54,116,20,5,False +599,Klink,Steel,,300,40,55,70,45,60,30,5,False +600,Klang,Steel,,440,60,80,95,70,85,50,5,False +601,Klinklang,Steel,,520,60,100,115,70,85,90,5,False +602,Tynamo,Electric,,275,35,55,40,45,40,60,5,False +603,Eelektrik,Electric,,405,65,85,70,75,70,40,5,False +604,Eelektross,Electric,,515,85,115,80,105,80,50,5,False +605,Elgyem,Psychic,,335,55,55,55,85,55,30,5,False +606,Beheeyem,Psychic,,485,75,75,75,125,95,40,5,False +607,Litwick,Ghost,Fire,275,50,30,55,65,55,20,5,False +608,Lampent,Ghost,Fire,370,60,40,60,95,60,55,5,False +609,Chandelure,Ghost,Fire,520,60,55,90,145,90,80,5,False +610,Axew,Dragon,,320,46,87,60,30,40,57,5,False +611,Fraxure,Dragon,,410,66,117,70,40,50,67,5,False +612,Haxorus,Dragon,,540,76,147,90,60,70,97,5,False +613,Cubchoo,Ice,,305,55,70,40,60,40,40,5,False +614,Beartic,Ice,,485,95,110,80,70,80,50,5,False +615,Cryogonal,Ice,,485,70,50,30,95,135,105,5,False +616,Shelmet,Bug,,305,50,40,85,40,65,25,5,False +617,Accelgor,Bug,,495,80,70,40,100,60,145,5,False +618,Stunfisk,Ground,Electric,471,109,66,84,81,99,32,5,False +619,Mienfoo,Fighting,,350,45,85,50,55,50,65,5,False +620,Mienshao,Fighting,,510,65,125,60,95,60,105,5,False +621,Druddigon,Dragon,,485,77,120,90,60,90,48,5,False +622,Golett,Ground,Ghost,303,59,74,50,35,50,35,5,False +623,Golurk,Ground,Ghost,483,89,124,80,55,80,55,5,False +624,Pawniard,Dark,Steel,340,45,85,70,40,40,60,5,False +625,Bisharp,Dark,Steel,490,65,125,100,60,70,70,5,False +626,Bouffalant,Normal,,490,95,110,95,40,95,55,5,False +627,Rufflet,Normal,Flying,350,70,83,50,37,50,60,5,False +628,Braviary,Normal,Flying,510,100,123,75,57,75,80,5,False +629,Vullaby,Dark,Flying,370,70,55,75,45,65,60,5,False +630,Mandibuzz,Dark,Flying,510,110,65,105,55,95,80,5,False +631,Heatmor,Fire,,484,85,97,66,105,66,65,5,False +632,Durant,Bug,Steel,484,58,109,112,48,48,109,5,False +633,Deino,Dark,Dragon,300,52,65,50,45,50,38,5,False +634,Zweilous,Dark,Dragon,420,72,85,70,65,70,58,5,False +635,Hydreigon,Dark,Dragon,600,92,105,90,125,90,98,5,False +636,Larvesta,Bug,Fire,360,55,85,55,50,55,60,5,False +637,Volcarona,Bug,Fire,550,85,60,65,135,105,100,5,False +638,Cobalion,Steel,Fighting,580,91,90,129,90,72,108,5,True +639,Terrakion,Rock,Fighting,580,91,129,90,72,90,108,5,True +640,Virizion,Grass,Fighting,580,91,90,72,90,129,108,5,True +641,TornadusIncarnate Forme,Flying,,580,79,115,70,125,80,111,5,True +641,TornadusTherian Forme,Flying,,580,79,100,80,110,90,121,5,True +642,ThundurusIncarnate Forme,Electric,Flying,580,79,115,70,125,80,111,5,True +642,ThundurusTherian Forme,Electric,Flying,580,79,105,70,145,80,101,5,True +643,Reshiram,Dragon,Fire,680,100,120,100,150,120,90,5,True +644,Zekrom,Dragon,Electric,680,100,150,120,120,100,90,5,True +645,LandorusIncarnate Forme,Ground,Flying,600,89,125,90,115,80,101,5,True +645,LandorusTherian Forme,Ground,Flying,600,89,145,90,105,80,91,5,True +646,Kyurem,Dragon,Ice,660,125,130,90,130,90,95,5,True +646,KyuremBlack Kyurem,Dragon,Ice,700,125,170,100,120,90,95,5,True +646,KyuremWhite Kyurem,Dragon,Ice,700,125,120,90,170,100,95,5,True +647,KeldeoOrdinary Forme,Water,Fighting,580,91,72,90,129,90,108,5,False +647,KeldeoResolute Forme,Water,Fighting,580,91,72,90,129,90,108,5,False +648,MeloettaAria Forme,Normal,Psychic,600,100,77,77,128,128,90,5,False +648,MeloettaPirouette Forme,Normal,Fighting,600,100,128,90,77,77,128,5,False +649,Genesect,Bug,Steel,600,71,120,95,120,95,99,5,False +650,Chespin,Grass,,313,56,61,65,48,45,38,6,False +651,Quilladin,Grass,,405,61,78,95,56,58,57,6,False +652,Chesnaught,Grass,Fighting,530,88,107,122,74,75,64,6,False +653,Fennekin,Fire,,307,40,45,40,62,60,60,6,False +654,Braixen,Fire,,409,59,59,58,90,70,73,6,False +655,Delphox,Fire,Psychic,534,75,69,72,114,100,104,6,False +656,Froakie,Water,,314,41,56,40,62,44,71,6,False +657,Frogadier,Water,,405,54,63,52,83,56,97,6,False +658,Greninja,Water,Dark,530,72,95,67,103,71,122,6,False +659,Bunnelby,Normal,,237,38,36,38,32,36,57,6,False +660,Diggersby,Normal,Ground,423,85,56,77,50,77,78,6,False +661,Fletchling,Normal,Flying,278,45,50,43,40,38,62,6,False +662,Fletchinder,Fire,Flying,382,62,73,55,56,52,84,6,False +663,Talonflame,Fire,Flying,499,78,81,71,74,69,126,6,False +664,Scatterbug,Bug,,200,38,35,40,27,25,35,6,False +665,Spewpa,Bug,,213,45,22,60,27,30,29,6,False +666,Vivillon,Bug,Flying,411,80,52,50,90,50,89,6,False +667,Litleo,Fire,Normal,369,62,50,58,73,54,72,6,False +668,Pyroar,Fire,Normal,507,86,68,72,109,66,106,6,False +669,Flabébé,Fairy,,303,44,38,39,61,79,42,6,False +670,Floette,Fairy,,371,54,45,47,75,98,52,6,False +671,Florges,Fairy,,552,78,65,68,112,154,75,6,False +672,Skiddo,Grass,,350,66,65,48,62,57,52,6,False +673,Gogoat,Grass,,531,123,100,62,97,81,68,6,False +674,Pancham,Fighting,,348,67,82,62,46,48,43,6,False +675,Pangoro,Fighting,Dark,495,95,124,78,69,71,58,6,False +676,Furfrou,Normal,,472,75,80,60,65,90,102,6,False +677,Espurr,Psychic,,355,62,48,54,63,60,68,6,False +678,MeowsticMale,Psychic,,466,74,48,76,83,81,104,6,False +678,MeowsticFemale,Psychic,,466,74,48,76,83,81,104,6,False +679,Honedge,Steel,Ghost,325,45,80,100,35,37,28,6,False +680,Doublade,Steel,Ghost,448,59,110,150,45,49,35,6,False +681,AegislashBlade Forme,Steel,Ghost,520,60,150,50,150,50,60,6,False +681,AegislashShield Forme,Steel,Ghost,520,60,50,150,50,150,60,6,False +682,Spritzee,Fairy,,341,78,52,60,63,65,23,6,False +683,Aromatisse,Fairy,,462,101,72,72,99,89,29,6,False +684,Swirlix,Fairy,,341,62,48,66,59,57,49,6,False +685,Slurpuff,Fairy,,480,82,80,86,85,75,72,6,False +686,Inkay,Dark,Psychic,288,53,54,53,37,46,45,6,False +687,Malamar,Dark,Psychic,482,86,92,88,68,75,73,6,False +688,Binacle,Rock,Water,306,42,52,67,39,56,50,6,False +689,Barbaracle,Rock,Water,500,72,105,115,54,86,68,6,False +690,Skrelp,Poison,Water,320,50,60,60,60,60,30,6,False +691,Dragalge,Poison,Dragon,494,65,75,90,97,123,44,6,False +692,Clauncher,Water,,330,50,53,62,58,63,44,6,False +693,Clawitzer,Water,,500,71,73,88,120,89,59,6,False +694,Helioptile,Electric,Normal,289,44,38,33,61,43,70,6,False +695,Heliolisk,Electric,Normal,481,62,55,52,109,94,109,6,False +696,Tyrunt,Rock,Dragon,362,58,89,77,45,45,48,6,False +697,Tyrantrum,Rock,Dragon,521,82,121,119,69,59,71,6,False +698,Amaura,Rock,Ice,362,77,59,50,67,63,46,6,False +699,Aurorus,Rock,Ice,521,123,77,72,99,92,58,6,False +700,Sylveon,Fairy,,525,95,65,65,110,130,60,6,False +701,Hawlucha,Fighting,Flying,500,78,92,75,74,63,118,6,False +702,Dedenne,Electric,Fairy,431,67,58,57,81,67,101,6,False +703,Carbink,Rock,Fairy,500,50,50,150,50,150,50,6,False +704,Goomy,Dragon,,300,45,50,35,55,75,40,6,False +705,Sliggoo,Dragon,,452,68,75,53,83,113,60,6,False +706,Goodra,Dragon,,600,90,100,70,110,150,80,6,False +707,Klefki,Steel,Fairy,470,57,80,91,80,87,75,6,False +708,Phantump,Ghost,Grass,309,43,70,48,50,60,38,6,False +709,Trevenant,Ghost,Grass,474,85,110,76,65,82,56,6,False +710,PumpkabooAverage Size,Ghost,Grass,335,49,66,70,44,55,51,6,False +710,PumpkabooSmall Size,Ghost,Grass,335,44,66,70,44,55,56,6,False +710,PumpkabooLarge Size,Ghost,Grass,335,54,66,70,44,55,46,6,False +710,PumpkabooSuper Size,Ghost,Grass,335,59,66,70,44,55,41,6,False +711,GourgeistAverage Size,Ghost,Grass,494,65,90,122,58,75,84,6,False +711,GourgeistSmall Size,Ghost,Grass,494,55,85,122,58,75,99,6,False +711,GourgeistLarge Size,Ghost,Grass,494,75,95,122,58,75,69,6,False +711,GourgeistSuper Size,Ghost,Grass,494,85,100,122,58,75,54,6,False +712,Bergmite,Ice,,304,55,69,85,32,35,28,6,False +713,Avalugg,Ice,,514,95,117,184,44,46,28,6,False +714,Noibat,Flying,Dragon,245,40,30,35,45,40,55,6,False +715,Noivern,Flying,Dragon,535,85,70,80,97,80,123,6,False +716,Xerneas,Fairy,,680,126,131,95,131,98,99,6,True +717,Yveltal,Dark,Flying,680,126,131,95,131,98,99,6,True +718,Zygarde50% Forme,Dragon,Ground,600,108,100,121,81,95,95,6,True +719,Diancie,Rock,Fairy,600,50,100,150,100,150,50,6,True +719,DiancieMega Diancie,Rock,Fairy,700,50,160,110,160,110,110,6,True +720,HoopaHoopa Confined,Psychic,Ghost,600,80,110,60,150,130,70,6,True +720,HoopaHoopa Unbound,Psychic,Dark,680,80,160,60,170,130,80,6,True +721,Volcanion,Fire,Water,600,80,110,120,130,90,70,6,True diff --git a/bases/desktop.ini b/bases/desktop.ini new file mode 100644 index 0000000..bd28da3 --- /dev/null +++ b/bases/desktop.ini @@ -0,0 +1,5 @@ +[.ShellClassInfo] +InfoTip=Esta pasta est compartilhada on-line. +IconFile=C:\Program Files\Google\Drive\googledrivesync.exe +IconIndex=16 + \ No newline at end of file From 9a40cd213f7f58a017c3303e45bc8f48f2bf8291 Mon Sep 17 00:00:00 2001 From: Rubens Date: Tue, 8 Sep 2020 19:54:04 -0300 Subject: [PATCH 2/5] .gitignore --- .gitignore | 2 + .ipynb_checkpoints/Aula_1-checkpoint.ipynb | 874 +++++++++++++++++++++ .ipynb_checkpoints/Aula_2-checkpoint.ipynb | 374 +++++++++ .ipynb_checkpoints/Aula_3-checkpoint.ipynb | 522 ++++++++++++ .ipynb_checkpoints/Aula_4-checkpoint.ipynb | 766 ++++++++++++++++++ .ipynb_checkpoints/Aula_5-checkpoint.ipynb | 842 ++++++++++++++++++++ Pokemon.csv | 801 ------------------- 7 files changed, 3380 insertions(+), 801 deletions(-) create mode 100644 .gitignore create mode 100644 .ipynb_checkpoints/Aula_1-checkpoint.ipynb create mode 100644 .ipynb_checkpoints/Aula_2-checkpoint.ipynb create mode 100644 .ipynb_checkpoints/Aula_3-checkpoint.ipynb create mode 100644 .ipynb_checkpoints/Aula_4-checkpoint.ipynb create mode 100644 .ipynb_checkpoints/Aula_5-checkpoint.ipynb delete mode 100644 Pokemon.csv diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..929e349 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.ini +calc.py \ No newline at end of file diff --git a/.ipynb_checkpoints/Aula_1-checkpoint.ipynb b/.ipynb_checkpoints/Aula_1-checkpoint.ipynb new file mode 100644 index 0000000..e4c4839 --- /dev/null +++ b/.ipynb_checkpoints/Aula_1-checkpoint.ipynb @@ -0,0 +1,874 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Aula 1" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "23.5 ['a', 'b', 'c', 'd', 'e'] range(1, 11)\n" + ] + } + ], + "source": [ + "# -*- coding: latin1 -*-\n", + "# Uma linha quebrada por contra-barra\n", + "a = 7 * 3 + \\\n", + "5 / 2\n", + "# Uma lista (quebrada por vírgula)\n", + "b = ['a', 'b', 'c',\n", + "'d', 'e']\n", + "# Uma chamada de função (quebrada por vírgula)\n", + "c = range(1,\n", + "11)\n", + "# imprime todos na tela\n", + "print (a, b, c)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### O erro ocorreu devido à diferença de versões do python. Criamos um código na versão 2 e executamos na versão 3." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "23.5 ['a', 'b', 'c', 'd', 'e'] range(1, 11)\n" + ] + } + ], + "source": [ + "# Uma linha quebrada por contra-barra\n", + "a = 7 * 3 + \\\n", + "5 / 2\n", + "# Uma lista (quebrada por vírgula)\n", + "b = ['a', 'b', 'c',\n", + "'d', 'e']\n", + "d = [1,2,3,4,\n", + " 5,6,7]\n", + "# Uma chamada de função (quebrada por vírgula)\n", + "c = range(1,\n", + "11)\n", + "# imprime todos na tela\n", + "print (a, b, c)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Comentários" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# comentário em apenas uma linha\n", + "# para cada linha preciso adicionar o identificador de comentário\n", + "\n", + "\"\"\"\n", + "Este é um exemplo de bloco de comentário\n", + "Comentário em mais de uma linha\n", + "É mais usado para Docstrings: documentação e teste do código em python\n", + "\n", + "Para saber mais, acesse: https://www.python.org/dev/peps/pep-0257/\n", + "\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Endentação" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Para i na lista 234, 654, 378, 798:\n", + "for i in [234, 654, 378, 798]:\n", + "# Se o resto da divisão por 3 for igual a zero:\n", + " if i % 3 == 0:\n", + " # Imprime...\n", + " print (i, '/ 3 =', i / 3)\n", + " if i % 2 == 0:\n", + " print('alugma coisa')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Atributos e Métodos" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "x = np.arange(10) \n", + "y = x.sum() #método\n", + "\n", + "x.argmax() # atributo - retorna o índice do maior valor no vetor" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Controle de Fluxo" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "temp = float(input('Entre com a temperatura: '))\n", + "if temp < 0:\n", + " print ('Congelando...')\n", + "elif (0.0 <= temp <= 20.0):\n", + " print ('Frio')\n", + "elif (21.0 <= temp <= 25.0):\n", + " print ('Normal')\n", + "elif (26 <= temp <= 35):\n", + " print ('Quente')\n", + "else:\n", + " print ('Muito quente!')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "x = 'verdadeiro' if 1>0 else 'falso'\n", + "x" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Laços" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# usando for\n", + "s = 0\n", + "for x in range(1, 100):\n", + " s = s + x\n", + "print (s)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "x = 1,2,3,4\n", + "s = 0,1,3,6" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# usando while\n", + "s = 0\n", + "x = 1\n", + "while x < 100:\n", + " s = s + x\n", + " x = x + 1\n", + "print (s)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Break, Continue e Pass" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10\n", + "passou\n", + "sem pass\n", + "teste\n", + "9\n", + "passou\n", + "sem pass\n", + "teste\n", + "8\n", + "passou\n", + "sem pass\n", + "teste\n", + "7\n", + "passou\n", + "sem pass\n", + "teste\n", + "6\n", + "passou\n", + "sem pass\n", + "teste\n", + "5\n", + "passou\n", + "sem pass\n", + "teste\n", + "4\n", + "Volta pro inicio\n", + "3\n", + "passou\n", + "sem pass\n", + "teste\n", + "2\n", + "passou\n", + "sem pass\n", + "teste\n", + "1\n", + "passou\n", + "sem pass\n", + "teste\n", + "final\n" + ] + } + ], + "source": [ + "parada = 10\n", + "inicio = 0\n", + "\n", + "while parada > 0:\n", + " print(parada)\n", + " parada -= 1 # parada = parada - 1\n", + " if parada == -1:\n", + " break\n", + " elif parada ==3:\n", + " print('Volta pro inicio')\n", + " continue\n", + " else:\n", + " print('passou')\n", + " print(\"sem pass\")\n", + " print(\"teste\")\n", + "else:\n", + " print(\"final\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "parada = 10 9 8 7 6 5 4 3\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## TODO Section" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1.2345, 2.1234, 4.9876, 5.0912, 3.5687]\n" + ] + } + ], + "source": [ + "some_list = [1.2345, 2.1234, 4.9876, 5.0912, 3.5687]\n", + "i = 0\n", + "\n", + "for x in some_list:\n", + " some_list[i] = round(x, 2)\n", + " i += 1\n", + "print(some_list)\n", + "# TODO: utilizando a mesma variável, ajuste cada número para que este contenha apenas 2 números após a casa decimal\n", + "# Dica: https://docs.python.org/3/library/functions.html#round" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Número par encontrado: 2\n", + "Número par encontrado: 4\n", + "Número par encontrado: 6\n", + "Número par encontrado: 8\n", + "Número par encontrado: 10\n", + "Número 12 encontrado\n" + ] + } + ], + "source": [ + "# TODO: O laço a seguir percorre uma lista do número 2 até o número 15. \n", + "# Toda vez que um número par for encontrado, faça: print (\"Número par encontrado: \", num) e vá para o início do laço\n", + "# Ao encontrar o número 12, faça: print (\"Número 12 encontrado\"), e encerre o programa\n", + "\n", + "for i in range(2,15):\n", + " if(i == 12):\n", + " print(\"Número 12 encontrado\")\n", + " break\n", + " if(i % 2 == 0):\n", + " print(\"Número par encontrado:\", i)\n", + " continue" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tipos de Dados" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print ('int(3.14) =', int(3.14)) # real para inteiro\n", + "print ('float(5) =', float(5)) # inteiro para real\n", + "print ('5.0 / 2 + 3 = ', 5.0 / 2 + 3) #Divisão que resulta em real\n", + "print ('5/4 ou 5.0/4.0 = ',5//4) #divisão sem resto\n", + "c = 4 + 3j #número complexo\n", + "print ('c =', c)\n", + "print ('Parte real:', c.real)\n", + "print ('Parte imaginária:', c.imag)\n", + "print ('Conjugado:', c.conjugate())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Strings" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "s = \"Camel\"\n", + "print ('The ' + s + ' run away!')\n", + "print ('tamanho de %s => %d' % (s, len(s))) # interpolação\n", + "for ch in s: print (ch)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print ('Agora são %02d:%02d.' % (8, 30))\n", + "print ('Percentagem: %.1f%%, Exponencial:%.2e' % (5.333, 0.00314)) #casa decimal e formatação\n", + "print ('Decimal: %d, Octal: %o, Hexadecimal: %x' % (10, 10, 10)) #bases numéricas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "musicos = [('Page', 'guitarrista', 'Led Zeppelin'),\n", + "('Fripp', 'guitarrista', 'King Crimson'),\n", + "('x','y','z')]\n", + "\n", + "msg = '{0} é {1} do {2}'\n", + "\n", + "for nome, funcao, banda in musicos:\n", + " x = msg.format(nome, funcao, banda)\n", + " print(msg.format(nome, funcao, banda))\n", + " print(type(x))\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Caracteres antecipados por \\ são interpretados como caracteres especiais; \n", + "# se você quer evitar isso, use raw strings, adicionando um r antes da primeira aspas\n", + "\n", + "print ('C:\\some\\name')\n", + "print (r'C:\\some\\name')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Listas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# listas são objetos heterogêneos, ou seja, \n", + "# podem contem elementos de qualquer tipo,\n", + "# inclusive outras listas\n", + "\n", + "integer_list = [1, 2, 3]\n", + "heterogeneous_list = [\"string\", 0.1, True]\n", + "list_of_lists = [ integer_list, heterogeneous_list, [] ]\n", + "\n", + "print(integer_list)\n", + "print(heterogeneous_list)\n", + "print(list_of_lists)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "bandas = ['Queen','Led Zeppelin','Kansas','Europe','Guns N Roses']\n", + "\n", + "for banda in bandas:\n", + " print (banda)\n", + " \n", + "bandas.append('Bon Jovi') #adiciona ao fim da lista - inplace\n", + "bandas.remove('Europe') #remove\n", + "bandas.sort() #ordena\n", + "\n", + "print (bandas)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for i, banda in enumerate(bandas): \n", + " print (i + 1, '=>', banda)\n", + " \n", + "#filas e pilhas\n", + "while bandas:\n", + " print ('Saiu', bandas.pop(0), ', faltam', len(bandas))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tuplas" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(5, 6, 4)\n", + "15\n", + "50\n", + "10\n" + ] + } + ], + "source": [ + "def soma_e_produto(x, y):\n", + " return (x + y),(x * y), x+x\n", + "sp = soma_e_produto(2, 3) # igual (5, 6)\n", + "s, p, _ = soma_e_produto(5, 10) # s é 15, p é 50\n", + "print(sp)\n", + "print(s)\n", + "print(p)\n", + "print(_)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Dicionários" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "carros = {'marca':'Ford','modelo':'Mustang','Ano':1964} #cria um dicionário\n", + "print(carros['modelo']) #imprime o valor da chave 'modelo'\n", + "print(carros.get('Ano')) #imprime usando método get\n", + "carros['Ano'] = 2018" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for x,y in carros.items():#imprimindo keys e values\n", + " print(x,y)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "carros['cor'] = 'preto' #inserindo nova key e value\n", + "\n", + "for x,y in carros.items():#repetindo após inserção\n", + " print(x,y)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "del carros['Ano'] #apagando key e value - \n", + "#pode ser usado os métodos pop e popitem - testar\n", + "print (carros) #imprime dicionário" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#Apagar dicionário\n", + "#del carros\n", + "#print(carros)\n", + "#esvaziar dicionário\n", + "carros.clear()\n", + "print(carros)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#criando a partir de um construtor\n", + "carros = dict(marca=['Ford','FIAT','Wolksvagem'],modelo=['Mustang','Palio','Gol'],Ano=[1964,2009,1990])\n", + "print(carros)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## DefaultDict" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "document = 'A Wikipédia é um projeto de enciclopédia colaborativa, universal e multilíngue estabelecido na internet sob o princípio wiki. \\\n", + "Tem como propósito fornecer um conteúdo livre, objetivo e verificável, que todos possam editar e melhorar. O projeto é definido pelos \\\n", + "princípios fundadores. O conteúdo é disponibilizado sob a licença Creative Commons BY-SA e pode ser copiado e reutilizado sob a mesma \\\n", + "licença — mesmo para fins comerciais — desde que respeitando os termos e condições de uso.'\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "word_counts = {}\n", + "for word in document.split(' '):\n", + " if word in word_counts:\n", + " word_counts[word] += 1\n", + " else:\n", + " word_counts[word] = 1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "word_counts" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from collections import defaultdict\n", + "\n", + "word_counts = defaultdict(int) # int() produces 0\n", + "for word in document.split(' '):\n", + " word_counts[word] += 1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "word_counts" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Counter" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from collections import Counter\n", + "c = Counter([0, 1, 2, 0]) \n", + "c" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "word_counts_counter = Counter(document.split(' '))\n", + "word_counts_counter" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## TODO Section" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1)\n", + "Escreva um programa que vá de 0 até 100. Toda vez que encontrar um número divisível por 5, \n", + "adicione esse número numa lista. Ao final, ordene a lista de forma descendente" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[100, 95, 90, 85, 80, 75, 70, 65, 60, 55, 50, 45, 40, 35, 30, 25, 20, 15, 10, 5, 0]\n" + ] + } + ], + "source": [ + "# Resposta 1\n", + "count = 0\n", + "multiplos5 = []\n", + "while (count <= 100):\n", + " if(count % 5 == 0):\n", + " multiplos5.append(count)\n", + " count += 1\n", + "multiplos5.sort(reverse=True)\n", + "print(multiplos5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2)\n", + "Conte a quantidade de cada caracter presente no texto abaixo:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Texto\n", + "\n", + "Brasil, oficialmente República Federativa do Brasil é o maior país da América do Sul e da região da América Latina, sendo o quinto maior do mundo em área territorial (equivalente a 47 porcento do território sul-americano) e sexto em população (com mais de 200 milhões de habitantes). É o único país na América onde se fala majoritariamente a língua portuguesa e o maior país lusófono do planeta, além de ser uma das nações mais multiculturais e etnicamente diversas, em decorrência da forte imigração oriunda de variados locais do mundo." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[('R', 1), ('F', 1), ('S', 1), ('L', 1), ('á', 1), ('4', 1), ('7', 1), ('-', 1), ('x', 1), ('2', 1), ('É', 1), ('j', 1), ('ê', 1), ('B', 2), ('ú', 2), ('b', 2), ('q', 2), ('(', 2), ('ó', 2), (')', 2), ('0', 2), ('h', 2), ('õ', 2), ('.', 2), ('A', 3), ('ã', 3), ('ç', 3), (',', 4), ('f', 4), ('v', 4), ('í', 4), ('g', 4), ('é', 5), ('p', 9), ('c', 14), ('u', 16), ('l', 18), ('n', 22), ('t', 22), ('s', 23), ('m', 24), ('d', 24), ('r', 31), ('i', 38), ('o', 40), ('e', 43), ('a', 56), (' ', 88)]\n" + ] + } + ], + "source": [ + "# Resposta 2\n", + "import operator\n", + "charCount = {}\n", + "texto = \"Brasil, oficialmente República Federativa do Brasil é o maior país da América do Sul e da região da América Latina, sendo o quinto maior do mundo em área territorial (equivalente a 47 porcento do território sul-americano) e sexto em população (com mais de 200 milhões de habitantes). É o único país na América onde se fala majoritariamente a língua portuguesa e o maior país lusófono do planeta, além de ser uma das nações mais multiculturais e etnicamente diversas, em decorrência da forte imigração oriunda de variados locais do mundo.\"\n", + "for ch in texto: \n", + " if ch in charCount:\n", + " charCount[ch] += 1\n", + " else:\n", + " charCount[ch] = 1\n", + "#print(charCount)\n", + "sortChar = sorted(charCount.items(), key=operator.itemgetter(1))\n", + "print(sortChar)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3)\n", + "Solicite ao usuário uma string e um número inteiro. Armaze ambos em variáveis. Remova da string os caracteres de 0 até n e imprima a string resultante" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdin", + "output_type": "stream", + "text": [ + "Digite um texto teste\n", + "Digite um número 3\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "te\n" + ] + } + ], + "source": [ + "# Resposta 3\n", + "texto = input(\"Digite um texto\")\n", + "numero = int(input(\"Digite um número\"))\n", + "\n", + "print(texto[numero:])\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/.ipynb_checkpoints/Aula_2-checkpoint.ipynb b/.ipynb_checkpoints/Aula_2-checkpoint.ipynb new file mode 100644 index 0000000..cef8d41 --- /dev/null +++ b/.ipynb_checkpoints/Aula_2-checkpoint.ipynb @@ -0,0 +1,374 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Aula 2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Funções" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#implementação recursiva\n", + "def fatorial(num):\n", + " \"\"\"\n", + " Esta função calcula o fatorial de um número\n", + " usando implementação recursiva\n", + " \n", + " args: num (int) - número a partir do qual \n", + " será calculado o fatorial\n", + " \n", + " return: o fatorial de num\n", + " \"\"\"\n", + " if (num <= 1):\n", + " return 1\n", + " else:\n", + " return(num * fatorial(num - 1))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "y = fatorial(5)\n", + "y" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Verifica se um número é par\n", + "def numero_par(num):\n", + " resto = num % 2\n", + " if (resto == 0):\n", + " return True\n", + " else:\n", + " return False" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(numero_par(4))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## TODO Section" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1)\n", + "TODO: Crie uma função que retorne na forma de um dicionário as seguintes informações do texto abaixo: \n", + "número de palavras, número de números e número de frases.\n", + "\n", + "Dica: a função isdigit() pode ser útil para determinar o tipo de \n", + "caracter;\n", + "Dica: split() usa um caracter (a ser inserido dentro dos parenteses) para separar uma string" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Texto\n", + "\n", + "Brasil, oficialmente República Federativa do Brasil é o maior país da América do Sul e da região da América Latina, sendo o quinto maior do mundo em área territorial (equivalente a 47 porcento do território sul-americano) e sexto em população (com mais de 200 milhões de habitantes). É o único país na América onde se fala majoritariamente a língua portuguesa e o maior país lusófono do planeta, além de ser uma das nações mais multiculturais e etnicamente diversas, em decorrência da forte imigração oriunda de variados locais do mundo." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Resposta 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2)\n", + "\n", + "TODO: implemente uma função que recebe uma lista com 100 números, de 0 a 99, e retorne outra lista contendo apenas números primos" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Resposta 2\n", + "import numpy as np\n", + "np.arange()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Chamando um módulo" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import calc\n", + "l = [23, 54, 31, 77, 12, 34]\n", + "print (calc.media(l))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Arquivos e I/O" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "# Criando um objeto do tipo file\n", + "temp = open('temp.txt', 'w')\n", + "# Escrevendo no arquivo\n", + "for i in range(100):\n", + " temp.write('%03d\\n' % i)\n", + "# Fechando\n", + "temp.close()\n", + "temp = open('temp.txt')\n", + "# Escrevendo no terminal\n", + "for x in temp:\n", + " # Escrever em sys.stdout envia o texto para a saída padrão\n", + " sys.stdout.write(x)\n", + "temp.close()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "import os.path\n", + "# input() retorna a string digitada\n", + "fn = input('Nome do arquivo: ').strip() #remove espaço em branco extra do nome do arquivo\n", + "if not os.path.exists(fn):\n", + " print ('Tente outra vez...')\n", + " sys.exit() # pare a execução do programa\n", + "# Numerando as linhas\n", + "for i, s in enumerate(open(fn)):\n", + " print (i + 1, s,)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Imprime uma lista contendo linhas do arquivo\n", + "print (open('temp.txt').readlines())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Trabalhando com Tempo" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import time\n", + "print (time.localtime()) #imprime como uma estrutura\n", + "print (time.asctime()) #imprime como string\n", + "for x in range(5):\n", + " time.sleep(3)\n", + " print('Espera 3 segundos e imprime na tela\\n')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "start_time = time.time()\n", + "x = 0\n", + "for i in range(0,1000000):\n", + " x += i\n", + "end_time = time.time()\n", + "\n", + "print(x)\n", + "print('tempo decorrido: ',end_time-start_time, 'segundos')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import datetime\n", + "from datetime import timedelta\n", + "\n", + "dt = datetime.datetime(2020, 12, 31, 23, 59, 59) #criando uma data com horário\n", + "\n", + "data = dt.date() #retorna a data\n", + "hora = dt.time() #retorna o horário\n", + "\n", + "dd = dt - dt.today() #cálculo de tempo\n", + "print ('Data:', data)\n", + "print ('Hora:', hora)\n", + "print ('Quanto tempo falta para 31/12/2020:', dd)\n", + "print ('1 ano a partir de agora será: '+ str(datetime.datetime.now() + timedelta(days=365)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Regex - Expressões Regulares" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import re\n", + "rex = re.compile('\\w+') #qualquer caracter alfanumérico - compilado\n", + "bandas = 'Queen, Aerosmith & Beatles'\n", + "print (bandas, '->', rex.findall(bandas))\n", + "phone = \"2004-959-559 # This is Phone Number\"\n", + "num = re.sub('#.*$', \"\", phone) #elimina tudo após #\n", + "print (\"Phone Num : \", num)\n", + "num = re.sub(r'\\D', \"\", phone)# só deixa número\n", + "print (\"Phone Num : \", num)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exceções" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " print(1/0)\n", + "except ZeroDivisionError:\n", + " print('Erro ao tentar dividir por zero')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## TODO Section" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3)\n", + "Crie uma função que receba uma data no formato yyyy-mm-dd e, usando Regex,retorne essa data no formato dd-mm-yyyy" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Resposta" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4)\n", + "\n", + "Escreva uma função que receba duas datas (formato datetime '%Y-%m-%d %H:%M:%S') e retorne a diferença entre elas em dias, horas, minutos e segundos\n", + "\n", + "Dica: a função divmod() pode ser útil: [link](https://www.programiz.com/python-programming/methods/built-in/divmod)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Resposta" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/.ipynb_checkpoints/Aula_3-checkpoint.ipynb b/.ipynb_checkpoints/Aula_3-checkpoint.ipynb new file mode 100644 index 0000000..c02a35c --- /dev/null +++ b/.ipynb_checkpoints/Aula_3-checkpoint.ipynb @@ -0,0 +1,522 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Programação Funcional" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Lambda" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4\n", + "6\n" + ] + } + ], + "source": [ + "quadrado = lambda num: num ** 2\n", + "multiplicacao = lambda x,y: x*y\n", + "\n", + "print(quadrado(2))\n", + "print(multiplicacao(2,3))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Map" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1.0, 2.0, 3.0, 4.0, 5.0]\n" + ] + } + ], + "source": [ + "import math\n", + "lista1 = [1, 4, 9, 16, 25]\n", + "lista2 = map(math.sqrt, lista1)\n", + "print(list(lista2))" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0.0, 0.3010299956639812, 0.47712125471966244, 0.6020599913279624, 0.6989700043360189, 0.7781512503836436, 0.8450980400142568, 0.9030899869919435, 0.9542425094393249, 1.0, 1.0413926851582251, 1.0791812460476249]\n", + "[0.3333333333333333, 0.6666666666666666, 1.0, 1.3333333333333333, 1.6666666666666667, 2.0, 2.3333333333333335, 2.6666666666666665, 3.0, 3.3333333333333335, 3.6666666666666665, 4.0]\n" + ] + } + ], + "source": [ + "nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]\n", + "from math import log10\n", + "print (list(map(log10, nums)))\n", + "print (list(map(lambda x: x / 3, nums)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Reduce" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4950\n", + "102\n" + ] + } + ], + "source": [ + "from functools import reduce\n", + "nums = range(100)\n", + "print (reduce(lambda x, y: x + y, nums))\n", + "\n", + "f = lambda a,b: a if (a > b) else b\n", + "print(reduce(f, [47,11,42,102,13]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Filter" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1, 3, 5, 7]\n", + "[-5, -4, -3, -2, -1]\n" + ] + } + ], + "source": [ + "x = [1,2,3,4,5,6,7]\n", + "print (list(filter(lambda x: x % 2, x)))\n", + "\n", + "number_list = range(-5, 5)\n", + "less_than_zero = list(filter(lambda x: x < 0, number_list))\n", + "print(less_than_zero)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Transposição" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[(1, 4), (2, 5), (3, 6)]\n", + "[(1, 4, 7), (2, 5, 8), (3, 6, 9)]\n" + ] + } + ], + "source": [ + "x = [1, 2, 3]\n", + "y = [4, 5, 6, 9, 0]\n", + "print (list(zip(x, y)))\n", + "\n", + "matriz = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] \n", + "print (list(zip(*matriz))) #Descompacta e depois faz a transposição" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### List Comprehension" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]\n" + ] + } + ], + "source": [ + "S = [x*2 for x in range(0, 10)]\n", + "print(S)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1, 9, 25, 49, 81, 121]\n" + ] + } + ], + "source": [ + "nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]\n", + "print ([ x**2 for x in nums if x % 2 ])" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[['Um', 'UM', 2], ['Dois', 'DOIS', 4], ['Tres', 'TRES', 4]]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[[s.capitalize(), s.upper(), len(s)] for s in ['um', 'dois', 'tres']]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## TODO Section" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1)\n", + "A amplitude de um vetor 3D é dado pela seguinte fórmula: $\\sqrt{x^2 + y^2 + z^2}$\n", + "\n", + "Escreva uma função, usando lambda, que calcule a amplitude de qualquer vetor. Exemplo de entrada:\n", + "\n", + " -> (1,1,1) \n", + " -> (3,4,5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# resposta" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2) \n", + "Use reduce para criar uma função que calcule o fatorial de qualquer número n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# resposta" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Orientação à Objetos" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#Abstração\n", + "class SomeClass: \n", + " def create_arr(self):\n", + " self.arr = []\n", + " \n", + " def insert_to_arr(self, value): \n", + " self.arr.append(value)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[5]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Instanciamento\n", + "obj = SomeClass()\n", + "obj.create_arr()\n", + "obj.insert_to_arr(5)\n", + "obj.arr" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "#definição da classe\n", + "class Set:\n", + " # Funções membras\n", + " # self se refere ao objeto Set que está sendo usado\n", + " def __init__(self, values=None):\n", + " \"\"\"\n", + " Este é o construtor\n", + " Ele é chamado quando você cria um novo Set;\n", + " Deve ser usado da seguinte maneira:\n", + " s1 = Set() # set vazio\n", + " s2 = Set([1,2,2,3]) #inicializa com valores\n", + " \"\"\"\n", + " self.dict = {} # cada instância de um Set possui seu próprio dicionário\n", + " # que será usado para rastrear membresia\n", + " if values is not None:\n", + " for value in values:\n", + " self.add(value)\n", + " def __repr__(self):\n", + " \"\"\"\n", + " Esta é a representação de um objeto Set por meio de uma string\n", + " \"\"\"\n", + " return \"Set: \" + str(self.dict.keys())\n", + " \n", + " # vamos representar membresia como sendo uma chave no self.dict com valor True\n", + " def add(self, value):\n", + " self.dict[value] = True\n", + " \n", + " # valor está no Set se ele é uma chave no dicionário\n", + " def contains(self, value):\n", + " return value in self.dict\n", + " \n", + " def remove(self, value):\n", + " del self.dict[value]" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Set: dict_keys([1, 2, 3])" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s = Set([1,2,3,2,3,1])\n", + "s" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True\n", + "False\n" + ] + } + ], + "source": [ + "s.add(4)\n", + "print (s.contains(4)) # True\n", + "s.remove(3)\n", + "print (s.contains(3)) # False" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Bem-vindo João Silva à turma de 2020\n" + ] + } + ], + "source": [ + "class Person:\n", + " def __init__(self, fname, lname):\n", + " self.firstname = fname\n", + " self.lastname = lname\n", + " \n", + " def printname(self):\n", + " print(self.firstname, self.lastname)\n", + "\n", + "class Student(Person):\n", + " def __init__(self, fname, lname, year):\n", + " super().__init__(fname, lname)\n", + " self.graduationyear = year\n", + "\n", + " def welcome(self):\n", + " print(\"Bem-vindo\", self.firstname, self.lastname, \"à turma de\", self.graduationyear)\n", + "\n", + "x = Student(\"João\", \"Silva\", 2020)\n", + "x.welcome()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "João Silva\n" + ] + } + ], + "source": [ + "x.printname()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## TODO Section" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3)\n", + "Crie uma classe que irá modelar características geométricas de um círculo. Deverá implementar os métodos:\n", + "\n", + " -> Área \n", + " -> Perímetro\n", + " \n", + "Utilize atributos de classe e de instância apropriados. Crie um inicializador e métodos.\n", + "\n", + "$area = \\pi*r^2$\n", + "\n", + "$perimetro = 2*\\pi*r$" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Resposta" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/.ipynb_checkpoints/Aula_4-checkpoint.ipynb b/.ipynb_checkpoints/Aula_4-checkpoint.ipynb new file mode 100644 index 0000000..dd7afaa --- /dev/null +++ b/.ipynb_checkpoints/Aula_4-checkpoint.ipynb @@ -0,0 +1,766 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Numpy" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "list1 = [0,1,2,3,4]\n", + "arr1d = np.array(list1)\n", + "# principal diferença entre list e array\n", + "print(arr1d + 2)\n", + "print(list1 + 2) # erro" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "x = [1,2,3,4.5,5.7]\n", + "print('--------- lists ----------\\n')\n", + "print(type(x))\n", + "print(x)\n", + "print(type(x[1]))\n", + "print(type(x[4]))\n", + "print('\\n')\n", + "print('--------- array ----------\\n')\n", + "y = np.array(x)\n", + "print(type(y))\n", + "print(y)\n", + "print(type(y[1]))\n", + "print(type(y[4]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ndarray" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "data1 = [6,7.5,8,0,1]\n", + "arr1 = np.array(data1)\n", + "arr1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(arr1.shape)\n", + "print(arr1.dtype)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data2 = [[1, 2, 3, 4], [5, 6, 7, 8]]\n", + "arr2 = np.array(data2)\n", + "print(arr2)\n", + "print(arr2.ndim)\n", + "print(arr2.shape)\n", + "print(arr2.dtype)\n", + "print(arr2.size)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data3 = np.zeros(10)\n", + "data4 = np.ones(10)\n", + "data5 = np.empty([2,2])\n", + "print(data3)\n", + "print(data4)\n", + "print(data5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data6 = np.arange(15)\n", + "print(data6)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data7 = np.eye(5)\n", + "print(data7)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "arr1 = np.array([1, 2, 3], dtype=np.float64)\n", + "print(arr1.dtype)\n", + "arr2 = np.array([1, 2], dtype=np.int32)\n", + "print(arr2.dtype)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "arr1 + arr2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "arr = np.array([1, 2, 3, 4, 5])\n", + "print(arr.dtype)\n", + "float_arr = arr.astype(np.float64)\n", + "print(float_arr.dtype)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "arr2 = np.array([3.7, -1.2, -2.6, 0.5, 12.9, 10.1])\n", + "print(arr2)\n", + "arr2.astype(np.int32)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "numeric_strings = np.array(['1.25', '-9.6', '42'], dtype=np.string_)\n", + "numeric_strings.astype(float)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Operações entre arrays e escalares" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "arr3 = np.array([[1., 2., 3.], [4., 5., 6.]])\n", + "print(arr3)\n", + "print('Multiplicação: \\n',arr3 * arr3)\n", + "print('Subtração: \\n',arr3 - arr3)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "arr3 = np.array([[1., 2., 3.], [4., 5., 6.]])\n", + "print(arr3)\n", + "print('Escalar dividindo array: \\n',1/arr3)\n", + "print('Tirando raiz quadrada do Array: \\n',arr3 ** 0.5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Indexação e Fatiamento" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "arr = [2,14,3,6,8,3,10,222,4]\n", + "arr = np.array(arr)\n", + "print(arr)\n", + "print(arr[5])\n", + "print(arr[5:8])\n", + "arr[5:8] = 12 #broadcast\n", + "print(arr)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "arr_slice = arr[5:8]\n", + "print(arr_slice)\n", + "arr_slice[1] = 12345\n", + "print(arr_slice)\n", + "print(arr)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "arr2 = arr[5:8].copy()\n", + "arr2[0] = 98\n", + "print(arr2)\n", + "print(arr)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])\n", + "print(arr2d[2])\n", + "print(arr2d[0][2]) #igual a print(arr2d[0, 2])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(arr2d[:2, 1:])\n", + "print(arr2d[1, :2])\n", + "print(arr2d[:, :1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## TODO" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1)\n", + "\n", + "Seja um array, A = [10,3,7,5,8,23,15] e dois escalares, x = 6, y = 20. \n", + "\n", + "Crie uma função que retorne um novo array contendo elementos no intervalo [6,20]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Resposta" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2)\n", + "\n", + "Escreva um programa usando Numpy que adiciona os valores de um vetor a cada linha de uma matriz. \n", + "\n", + "Obs: o tamanho do vetor tem de ser o mesmo da quantidade de linhas\n", + "\n", + "vetor = [ 1 1 0]\n", + "\n", + "matriz = [1 2 3; 4 5 6; 7 8 9]\n", + "\n", + "resultado = [2 3 3; 5 6 6; 8 9 9]\n", + "\n", + "\n", + "Essa função pode ajudar: np.empty_like() " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Resposta" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Transposição" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "arr = np.arange(15).reshape((3, 5))\n", + "print(arr)\n", + "print(arr.T)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Flattening" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print('----- flatten() -----\\n')\n", + "print(arr2d.flatten())\n", + "b1 = arr2d.flatten() \n", + "b1[0] = 100\n", + "print(arr2d,'\\n')\n", + "print('----- ravel() -----\\n')\n", + "b2 = arr2d.ravel() \n", + "b2[0] = 101\n", + "print(arr2d)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Funções Universais" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "arr = np.arange(10)\n", + "print(arr)\n", + "print(np.sqrt(arr)) #raiz quadrada\n", + "np.exp(arr) #e^x" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Localização baseada em Condição e Métodos Estatísticos" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "xarr = np.array([1.1, 1.2, 1.3, 1.4, 1.5])\n", + "yarr = np.array([2.1, 2.2, 2.3, 2.4, 2.5])\n", + "cond = np.array([True, False, True, True, False])\n", + "import timeit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "result = [(x if c else y) for x, y, c in zip(xarr, yarr, cond)]\n", + "result" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "result = np.where(cond, xarr, yarr)\n", + "result" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "arr = np.random.randn(4, 4)\n", + "print(arr)\n", + "print(np.where(arr > 0, 2, -2)) # atribui 2 p/ x>0, -2 caso contrário\n", + "print(np.where(arr > 0, 2, arr)) # atribui 2 p/ x>0, mantém original caso contrário" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "arr = np.random.randn(5, 4)\n", + "print(arr)\n", + "print(arr.mean()) #ou np.mean(arr)\n", + "print(arr.sum())\n", + "print(arr.mean(axis=1))\n", + "print(arr.sum(0))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Álgebra Linear" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "x = np.array([[1., 2., 3.], [4., 5., 6.]])\n", + "y = np.array([[6., 23.], [-1, 7], [8, 9]])\n", + "print(x)\n", + "print(y)\n", + "z = np.matmul(x,y) #igual aa np.dot(x,y)\n", + "print(z)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "from numpy.linalg import inv\n", + "X = np.random.randn(5, 5)\n", + "print(X)\n", + "mat = np.matmul(X.T,X) #transposta * X\n", + "print(mat)\n", + "print(inv(mat)) #inversa" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Geração de Números Aleatórios" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Você pode ver todas as distribuições nesse link: [numpy random](https://docs.scipy.org/doc/numpy-1.14.0/reference/routines.random.html)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# gera 4 números aleatórios\n", + "# entre [0.0,1.0)\n", + "samples = np.random.random(4)\n", + "samples" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# A geração de números é determinística\n", + "# Ou seja, é baseada num estado interno\n", + "# que chamamos de seed\n", + "np.random.seed(42) # set seed\n", + "print(np.random.random())\n", + "np.random.seed(42) # reset seed\n", + "print(np.random.random())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# shuffle reordena um array\n", + "# é muito usado antes do processo\n", + "# de treino de algoritmo de ML\n", + "x = np.arange(10)\n", + "np.random.shuffle(x)\n", + "x" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Vectorize" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def modulo(x):\n", + " if x % 2 == 1:\n", + " return x**2\n", + " else:\n", + " return x/2\n", + " \n", + "print('x = 10 retorna ', modulo(10))\n", + "print('x = 11 retorna ', modulo(11))\n", + "print('x = [10, 11, 12] retorna ', modulo([10, 11, 12])) # Erro" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "modulo_vect = np.vectorize(modulo, otypes=[float])\n", + "\n", + "print('x = [10, 11, 12] retorna ', modulo_vect([10, 11, 12]))\n", + "print('x = [[10, 11, 12], [1, 2, 3]] retorna ', modulo_vect([[10, 11, 12], [1, 2, 3]]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aplicar uma função – coluna ou linha" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#criando matriz\n", + "np.random.seed(100)\n", + "arr_x = np.random.randint(1,10,size=[4,10])\n", + "arr_x" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#função que calcula diferença\n", + "def max_minus_min(x):\n", + " return np.max(x) - np.min(x)\n", + "\n", + "# aplicando nas linhas\n", + "print('Por linha: ', np.apply_along_axis(max_minus_min, 1, arr=arr_x))\n", + "\n", + "# aplicando nas colunas\n", + "print('Por coluna: ', np.apply_along_axis(max_minus_min, 0, arr=arr_x))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Outros Métodos" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "bools = np.array([False, False, True, False])\n", + "print(bools.any()) # se houver pelo menos um True\n", + "print(bools.all()) # se todos forem True" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "arr = np.random.randn(8)\n", + "print(arr)\n", + "arr.sort() #in-place\n", + "print(arr)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])\n", + "print(np.unique(names))\n", + "ints = np.array([3, 3, 3, 2, 2, 1, 1, 4, 4])\n", + "print(np.unique(ints))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "values = np.array([6, 0, 0, 3, 2, 5, 6])\n", + "np.in1d(values, [2, 3, 6])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## TODO Section" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3)\n", + "Suponha dois arrays, A = [1,4,2,6,5,7,3,0] e B = [3,2,0,9,8,7]. \n", + "\n", + "Remove de A todo elemento pertencente a B\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# resposta" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4)\n", + "\n", + "A célula abaixo faz o download de um dataset e armazena na variável iris_2d. Em seguida, substitui alguns de seus elementos por NaN. Resolva as questões que se seguem:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'\n", + "iris_2d = np.genfromtxt(url, delimiter=',', dtype='float', usecols=[0,1,2,3])\n", + "iris_2d[np.random.randint(150, size=20), np.random.randint(4, size=20)] = np.nan" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "a) Encontre o número de NaN na primeira coluna\n", + "\n", + "b) Encontre o número total de NaN\n", + "\n", + "c) Encontre as posições (número da linha) de NaN na primeira coluna\n", + "\n", + "d) Substitua todos os NaN por 0" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Resposta" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/.ipynb_checkpoints/Aula_5-checkpoint.ipynb b/.ipynb_checkpoints/Aula_5-checkpoint.ipynb new file mode 100644 index 0000000..cb012e2 --- /dev/null +++ b/.ipynb_checkpoints/Aula_5-checkpoint.ipynb @@ -0,0 +1,842 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Pandas" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Estrutura de Dados" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from pandas import Series, DataFrame\n", + "import pandas as pd\n", + "obj = Series([4, 7, -5, 3])\n", + "obj" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(obj.values)\n", + "print(obj.index) #obj.index.values" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "obj2 = Series([4, 7, -5, 3], index=['d', 'b', 'a', 'c'])\n", + "obj2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "print(obj2[(obj2 > 0) & (obj2 < 5)])\n", + "print(obj2 * 2)\n", + "print(np.exp(obj2))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}\n", + "obj3 = Series(sdata)\n", + "obj3" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "states = ['Oregon', 'Texas','California', 'Ohio']\n", + "obj4 = Series(sdata, index=states)\n", + "obj4" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(pd.isnull(obj4)) # == obj4.isnull()\n", + "print(pd.notnull(obj4))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(obj3)\n", + "print(obj4)\n", + "obj3 + obj4" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "obj4.name = 'population'\n", + "obj4.index.name = 'state'\n", + "obj4" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "obj.index = ['Bob', 'Steve', 'Jeff', 'Ryan']\n", + "obj" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],\n", + " 'year': [2000, 2001, 2002, 2001, 2002],\n", + " 'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}\n", + "df = DataFrame(data)\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df2 = DataFrame(data, columns=['year', 'state', 'pop', 'debt'],\n", + " index=['one', 'two', 'three', 'four', 'five'])\n", + "df2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(df['state'])\n", + "print(df.year)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(df2.loc['four']) #label\n", + "print(df.iloc[0]) #int" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df2['debt'] = np.arange(5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "val = Series([-1.2, -1.5, -1.7], index=['two', 'four', 'five'])\n", + "df2['debt'] = val\n", + "df2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df2['eastern'] = df2.state == 'Ohio'\n", + "df2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "del df2['eastern']\n", + "df2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df.values" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "obj = Series(range(3), index=['a', 'b', 'c'])\n", + "obj.index.values" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print('state' in df2.columns)\n", + "print(0 in df.index)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aplicação de Função e Mapeamento" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from pandas import Series, DataFrame\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df = DataFrame(np.random.randn(4, 3), columns=list('bde'),\n", + " index=['Utah', 'Ohio', 'Texas', 'Oregon'])\n", + "np.abs(df) #retorna valor absoluto" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "f = lambda x: x.max() - x.min()\n", + "print(df.apply(f))\n", + "print(df.apply(f, axis=1))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def f2(x):\n", + " return Series([x.min(), x.max()], index=['min', 'max'])\n", + "\n", + "df.apply(f2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "format2 = lambda x: '%.2f' % x\n", + "df.applymap(format2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ordenação e Ranking" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "obj = Series(range(4), index=['d', 'a', 'b', 'c'])\n", + "df2 = DataFrame(np.arange(8).reshape((2, 4)), index=['three', 'one'],\n", + " columns=['d', 'a', 'b', 'c'])\n", + "print(obj)\n", + "print(df2)\n", + "print(obj.sort_index())\n", + "print(df2.sort_index())\n", + "print(df2.sort_index(axis=1))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "obj = Series([4, 7, -3, 2])\n", + "obj.sort_values() #igual para pandas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df3 = DataFrame({'b': [4, 7, -3, 2], 'a': [0, 1, 0, 1]})\n", + "print(df3)\n", + "print(df3.sort_index(by='b'))\n", + "print(df3.sort_index(by=['a','b']))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data = {'name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'], \n", + " 'nota': [8, 7, 7.5, 10, 5]}\n", + "df4 = DataFrame(data)\n", + "print(df4)\n", + "df4['rank'] = df4['nota'].rank(ascending=0)\n", + "df4.sort_values('rank')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Sumarização e Estatística Descritiva" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df5 = DataFrame([[1.4, np.nan], [7.1, -4.5],\n", + " [np.nan, np.nan], [0.75, -1.3]],\n", + " index=['a', 'b', 'c', 'd'],\n", + " columns=['one', 'two'])\n", + "print(df5)\n", + "print(df5.sum())\n", + "print(df5.sum(axis=1))\n", + "print(df5.count())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df5.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "obj = Series(['c', 'a', 'd', 'a', 'a', 'b', 'b', 'c', 'c'])\n", + "uniques = obj.unique()\n", + "uniques" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "mask = obj.isin(['b', 'c'])\n", + "mask" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Manipulação de Valores Faltantes " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "string_data = Series(['laranja', 'uva', np.nan, 'abacate'])\n", + "print(string_data)\n", + "print(string_data.isnull())\n", + "string_data[0] = None\n", + "print(string_data.isnull())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data = DataFrame([[1., 6.5, 3.], [1., np.nan, np.nan],\n", + " [np.nan, np.nan, np.nan], [np.nan, 6.5, 3.]])\n", + "print(data)\n", + "cleaned = data.dropna()\n", + "print('\\n',cleaned)\n", + "data.dropna(how='all')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(data.fillna(0))\n", + "print(data.fillna(data.mean()))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## TODO Section" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Manipulação de DataFrame\n", + "\n", + " > Crie, a partir do dicionário abaixo, um DataFrame cujo index seja os valores da variável labels\n", + " > encontre a média dos valores da coluna age e preencha os valores faltantes dessa coluna com o valor da média\n", + " > crie uma nova coluna chamada 'rank', que mostre os animais que receberam mais visitas\n", + " > qual o animal que recebeu a maior quantidade de visitas?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data = {'animal': ['cat', 'cat', 'snake', 'dog', 'dog', 'cat', 'snake', 'cat', 'dog', 'dog'],\n", + " 'age': [2.5, 3, 0.5, np.nan, 5, 2, 4.5, np.nan, 7, 3],\n", + " 'visits': [1, 3, 2, 3, 2, 3, 1, 1, 2, 1],\n", + " 'priority': ['yes', 'yes', 'no', 'yes', 'no', 'no', 'no', 'yes', 'no', 'no']}\n", + "\n", + "labels = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# TODO: sua resposta aqui\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Carregamento e Armazenamento de Dados\n", + "\n", + "### Arquivo CSV" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "poke = pd.read_csv('bases/Pokemon.csv')\n", + "poke.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Arquivo JSON" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "obj = \"\"\"\n", + "{\"name\": \"Wes\",\n", + "\"places_lived\": [\"United States\", \"Spain\", \"Germany\"],\n", + "\"pet\": null,\n", + "\"siblings\": [{\"name\": \"Scott\", \"age\": 25, \"pet\": \"Zuko\"},\n", + "{\"name\": \"Katie\", \"age\": 33, \"pet\": \"Cisco\"}]\n", + "}\n", + "\"\"\"\n", + "print(type(obj))\n", + "print(obj)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "result = json.loads(obj)\n", + "result" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "asjson = json.dumps(result)\n", + "print(type(asjson))\n", + "asjson" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "siblings = pd.DataFrame(result['siblings'], columns=['name', 'age'])\n", + "siblings" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### SQL" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import sqlite3\n", + "query = \"\"\"\n", + "CREATE TABLE test\n", + "(a VARCHAR(20), b VARCHAR(20),\n", + "c REAL, d INTEGER\n", + ");\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "con = sqlite3.connect(':memory:')\n", + "con.execute(query)\n", + "con.commit()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data = [('Atlanta', 'Georgia', 1.25, 6),\n", + "('Tallahassee', 'Florida', 2.6, 3),\n", + "('Sacramento', 'California', 1.7, 5)]\n", + "stmt = \"INSERT INTO test VALUES(?, ?, ?, ?)\"\n", + "con.executemany(stmt, data)\n", + "con.commit()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cursor = con.execute('select * from test')\n", + "rows = cursor.fetchall()\n", + "rows" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(cursor.description)\n", + "pd.DataFrame(rows, columns=list(zip(*cursor.description))[0])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas.io.sql as sql\n", + "sql.read_sql_query('select * from test', con)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Combinação de Dados" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df1 = pd.DataFrame({'key': ['b', 'b', 'a', 'c', 'a', 'a', 'b'],\n", + " 'data1': range(7)})\n", + "\n", + "df2 = pd.DataFrame({'key': ['a', 'b', 'd','b'],\n", + " 'data2': range(4)})\n", + "\n", + "pd.merge(df1,df2,on='key') #default inner" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df3 = pd.DataFrame({'lkey': ['b', 'b', 'a', 'c', 'a', 'a', 'b'],\n", + " 'data1': range(7)})\n", + "\n", + "df4 = pd.DataFrame({'rkey': ['a', 'b', 'd'],\n", + " 'data2': range(3)})\n", + "pd.merge(df3, df4, left_on='lkey', right_on='rkey')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pd.merge(df3, df4, how='outer',left_on='lkey',right_on='rkey')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "left = pd.DataFrame({'key1': ['foo', 'foo', 'bar'],\n", + " 'key2': ['one', 'two', 'one'],\n", + " 'lval': [1, 2, 3]})\n", + "right = pd.DataFrame({'key1': ['foo', 'foo', 'bar', 'bar'],\n", + " 'key2': ['one', 'one', 'one', 'two'],\n", + " 'rval': [4, 5, 6, 7]})\n", + "pd.merge(left, right, on=['key1', 'key2'], how='outer')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "arr = np.arange(12).reshape((3, 4))\n", + "print(arr)\n", + "np.concatenate([arr, arr], axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "s1 = pd.Series([0, 1], index=['a', 'b'])\n", + "s2 = pd.Series([2, 3, 4], index=['c', 'd', 'e'])\n", + "s3 = pd.Series([5, 6], index=['f', 'g'])\n", + "pd.concat([s1, s2, s3])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df1 = pd.DataFrame(np.arange(6).reshape(3, 2), \n", + " index=['a', 'b', 'c'],\n", + " columns=['one', 'two'])\n", + "df2 = pd.DataFrame(5 + np.arange(4).reshape(2, 2), \n", + " index=['a', 'c'],\n", + " columns=['three', 'four'])\n", + "print(df1)\n", + "print(df2)\n", + "pd.concat([df1, df2], axis=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## TODO Section" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Manipulação de Dados usando Pandas\n", + "\n", + "Usando o dataset Pokemon.csv, faça:\n", + "\n", + " 1) Verifique em qual(is) coluna(s) existem valores faltantes\n", + " 2) Preencha os valores faltantes da coluna Type 2 com os valores correspondentes da coluna Type 1\n", + " 3) Crie um DataFrame a partir dos dados originais contendo apenas pokemons lendários. Imprima os 5 primeiros\n", + " 4) Use apply/applymap para passar todos os valores das colunas Name, Type 1 e Type 2 para minúscula\n", + " 5) Agrupe os pokemons por Type 1 e retorne uma Série ordenada pela quantidade em ordem decrescente" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Resposta 1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Resposta 2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Resposta 3" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Resposta 4" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Resposta 5" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/Pokemon.csv b/Pokemon.csv deleted file mode 100644 index 8948acc..0000000 --- a/Pokemon.csv +++ /dev/null @@ -1,801 +0,0 @@ -#,Name,Type 1,Type 2,Total,HP,Attack,Defense,Sp. Atk,Sp. Def,Speed,Generation,Legendary -1,Bulbasaur,Grass,Poison,318,45,49,49,65,65,45,1,False -2,Ivysaur,Grass,Poison,405,60,62,63,80,80,60,1,False -3,Venusaur,Grass,Poison,525,80,82,83,100,100,80,1,False -3,VenusaurMega Venusaur,Grass,Poison,625,80,100,123,122,120,80,1,False -4,Charmander,Fire,,309,39,52,43,60,50,65,1,False -5,Charmeleon,Fire,,405,58,64,58,80,65,80,1,False -6,Charizard,Fire,Flying,534,78,84,78,109,85,100,1,False -6,CharizardMega Charizard X,Fire,Dragon,634,78,130,111,130,85,100,1,False -6,CharizardMega Charizard Y,Fire,Flying,634,78,104,78,159,115,100,1,False -7,Squirtle,Water,,314,44,48,65,50,64,43,1,False -8,Wartortle,Water,,405,59,63,80,65,80,58,1,False -9,Blastoise,Water,,530,79,83,100,85,105,78,1,False -9,BlastoiseMega Blastoise,Water,,630,79,103,120,135,115,78,1,False -10,Caterpie,Bug,,195,45,30,35,20,20,45,1,False -11,Metapod,Bug,,205,50,20,55,25,25,30,1,False -12,Butterfree,Bug,Flying,395,60,45,50,90,80,70,1,False -13,Weedle,Bug,Poison,195,40,35,30,20,20,50,1,False -14,Kakuna,Bug,Poison,205,45,25,50,25,25,35,1,False -15,Beedrill,Bug,Poison,395,65,90,40,45,80,75,1,False -15,BeedrillMega Beedrill,Bug,Poison,495,65,150,40,15,80,145,1,False -16,Pidgey,Normal,Flying,251,40,45,40,35,35,56,1,False -17,Pidgeotto,Normal,Flying,349,63,60,55,50,50,71,1,False -18,Pidgeot,Normal,Flying,479,83,80,75,70,70,101,1,False -18,PidgeotMega Pidgeot,Normal,Flying,579,83,80,80,135,80,121,1,False -19,Rattata,Normal,,253,30,56,35,25,35,72,1,False -20,Raticate,Normal,,413,55,81,60,50,70,97,1,False -21,Spearow,Normal,Flying,262,40,60,30,31,31,70,1,False -22,Fearow,Normal,Flying,442,65,90,65,61,61,100,1,False -23,Ekans,Poison,,288,35,60,44,40,54,55,1,False -24,Arbok,Poison,,438,60,85,69,65,79,80,1,False -25,Pikachu,Electric,,320,35,55,40,50,50,90,1,False -26,Raichu,Electric,,485,60,90,55,90,80,110,1,False -27,Sandshrew,Ground,,300,50,75,85,20,30,40,1,False -28,Sandslash,Ground,,450,75,100,110,45,55,65,1,False -29,Nidoran♀,Poison,,275,55,47,52,40,40,41,1,False -30,Nidorina,Poison,,365,70,62,67,55,55,56,1,False -31,Nidoqueen,Poison,Ground,505,90,92,87,75,85,76,1,False -32,Nidoran♂,Poison,,273,46,57,40,40,40,50,1,False -33,Nidorino,Poison,,365,61,72,57,55,55,65,1,False -34,Nidoking,Poison,Ground,505,81,102,77,85,75,85,1,False -35,Clefairy,Fairy,,323,70,45,48,60,65,35,1,False -36,Clefable,Fairy,,483,95,70,73,95,90,60,1,False -37,Vulpix,Fire,,299,38,41,40,50,65,65,1,False -38,Ninetales,Fire,,505,73,76,75,81,100,100,1,False -39,Jigglypuff,Normal,Fairy,270,115,45,20,45,25,20,1,False -40,Wigglytuff,Normal,Fairy,435,140,70,45,85,50,45,1,False -41,Zubat,Poison,Flying,245,40,45,35,30,40,55,1,False -42,Golbat,Poison,Flying,455,75,80,70,65,75,90,1,False -43,Oddish,Grass,Poison,320,45,50,55,75,65,30,1,False -44,Gloom,Grass,Poison,395,60,65,70,85,75,40,1,False -45,Vileplume,Grass,Poison,490,75,80,85,110,90,50,1,False -46,Paras,Bug,Grass,285,35,70,55,45,55,25,1,False -47,Parasect,Bug,Grass,405,60,95,80,60,80,30,1,False -48,Venonat,Bug,Poison,305,60,55,50,40,55,45,1,False -49,Venomoth,Bug,Poison,450,70,65,60,90,75,90,1,False -50,Diglett,Ground,,265,10,55,25,35,45,95,1,False -51,Dugtrio,Ground,,405,35,80,50,50,70,120,1,False -52,Meowth,Normal,,290,40,45,35,40,40,90,1,False -53,Persian,Normal,,440,65,70,60,65,65,115,1,False -54,Psyduck,Water,,320,50,52,48,65,50,55,1,False -55,Golduck,Water,,500,80,82,78,95,80,85,1,False -56,Mankey,Fighting,,305,40,80,35,35,45,70,1,False -57,Primeape,Fighting,,455,65,105,60,60,70,95,1,False -58,Growlithe,Fire,,350,55,70,45,70,50,60,1,False -59,Arcanine,Fire,,555,90,110,80,100,80,95,1,False -60,Poliwag,Water,,300,40,50,40,40,40,90,1,False -61,Poliwhirl,Water,,385,65,65,65,50,50,90,1,False -62,Poliwrath,Water,Fighting,510,90,95,95,70,90,70,1,False -63,Abra,Psychic,,310,25,20,15,105,55,90,1,False -64,Kadabra,Psychic,,400,40,35,30,120,70,105,1,False -65,Alakazam,Psychic,,500,55,50,45,135,95,120,1,False -65,AlakazamMega Alakazam,Psychic,,590,55,50,65,175,95,150,1,False -66,Machop,Fighting,,305,70,80,50,35,35,35,1,False -67,Machoke,Fighting,,405,80,100,70,50,60,45,1,False -68,Machamp,Fighting,,505,90,130,80,65,85,55,1,False -69,Bellsprout,Grass,Poison,300,50,75,35,70,30,40,1,False -70,Weepinbell,Grass,Poison,390,65,90,50,85,45,55,1,False -71,Victreebel,Grass,Poison,490,80,105,65,100,70,70,1,False -72,Tentacool,Water,Poison,335,40,40,35,50,100,70,1,False -73,Tentacruel,Water,Poison,515,80,70,65,80,120,100,1,False -74,Geodude,Rock,Ground,300,40,80,100,30,30,20,1,False -75,Graveler,Rock,Ground,390,55,95,115,45,45,35,1,False -76,Golem,Rock,Ground,495,80,120,130,55,65,45,1,False -77,Ponyta,Fire,,410,50,85,55,65,65,90,1,False -78,Rapidash,Fire,,500,65,100,70,80,80,105,1,False -79,Slowpoke,Water,Psychic,315,90,65,65,40,40,15,1,False -80,Slowbro,Water,Psychic,490,95,75,110,100,80,30,1,False -80,SlowbroMega Slowbro,Water,Psychic,590,95,75,180,130,80,30,1,False -81,Magnemite,Electric,Steel,325,25,35,70,95,55,45,1,False -82,Magneton,Electric,Steel,465,50,60,95,120,70,70,1,False -83,Farfetch'd,Normal,Flying,352,52,65,55,58,62,60,1,False -84,Doduo,Normal,Flying,310,35,85,45,35,35,75,1,False -85,Dodrio,Normal,Flying,460,60,110,70,60,60,100,1,False -86,Seel,Water,,325,65,45,55,45,70,45,1,False -87,Dewgong,Water,Ice,475,90,70,80,70,95,70,1,False -88,Grimer,Poison,,325,80,80,50,40,50,25,1,False -89,Muk,Poison,,500,105,105,75,65,100,50,1,False -90,Shellder,Water,,305,30,65,100,45,25,40,1,False -91,Cloyster,Water,Ice,525,50,95,180,85,45,70,1,False -92,Gastly,Ghost,Poison,310,30,35,30,100,35,80,1,False -93,Haunter,Ghost,Poison,405,45,50,45,115,55,95,1,False -94,Gengar,Ghost,Poison,500,60,65,60,130,75,110,1,False -94,GengarMega Gengar,Ghost,Poison,600,60,65,80,170,95,130,1,False -95,Onix,Rock,Ground,385,35,45,160,30,45,70,1,False -96,Drowzee,Psychic,,328,60,48,45,43,90,42,1,False -97,Hypno,Psychic,,483,85,73,70,73,115,67,1,False -98,Krabby,Water,,325,30,105,90,25,25,50,1,False -99,Kingler,Water,,475,55,130,115,50,50,75,1,False -100,Voltorb,Electric,,330,40,30,50,55,55,100,1,False -101,Electrode,Electric,,480,60,50,70,80,80,140,1,False -102,Exeggcute,Grass,Psychic,325,60,40,80,60,45,40,1,False -103,Exeggutor,Grass,Psychic,520,95,95,85,125,65,55,1,False -104,Cubone,Ground,,320,50,50,95,40,50,35,1,False -105,Marowak,Ground,,425,60,80,110,50,80,45,1,False -106,Hitmonlee,Fighting,,455,50,120,53,35,110,87,1,False -107,Hitmonchan,Fighting,,455,50,105,79,35,110,76,1,False -108,Lickitung,Normal,,385,90,55,75,60,75,30,1,False -109,Koffing,Poison,,340,40,65,95,60,45,35,1,False -110,Weezing,Poison,,490,65,90,120,85,70,60,1,False -111,Rhyhorn,Ground,Rock,345,80,85,95,30,30,25,1,False -112,Rhydon,Ground,Rock,485,105,130,120,45,45,40,1,False -113,Chansey,Normal,,450,250,5,5,35,105,50,1,False -114,Tangela,Grass,,435,65,55,115,100,40,60,1,False -115,Kangaskhan,Normal,,490,105,95,80,40,80,90,1,False -115,KangaskhanMega Kangaskhan,Normal,,590,105,125,100,60,100,100,1,False -116,Horsea,Water,,295,30,40,70,70,25,60,1,False -117,Seadra,Water,,440,55,65,95,95,45,85,1,False -118,Goldeen,Water,,320,45,67,60,35,50,63,1,False -119,Seaking,Water,,450,80,92,65,65,80,68,1,False -120,Staryu,Water,,340,30,45,55,70,55,85,1,False -121,Starmie,Water,Psychic,520,60,75,85,100,85,115,1,False -122,Mr. Mime,Psychic,Fairy,460,40,45,65,100,120,90,1,False -123,Scyther,Bug,Flying,500,70,110,80,55,80,105,1,False -124,Jynx,Ice,Psychic,455,65,50,35,115,95,95,1,False -125,Electabuzz,Electric,,490,65,83,57,95,85,105,1,False -126,Magmar,Fire,,495,65,95,57,100,85,93,1,False -127,Pinsir,Bug,,500,65,125,100,55,70,85,1,False -127,PinsirMega Pinsir,Bug,Flying,600,65,155,120,65,90,105,1,False -128,Tauros,Normal,,490,75,100,95,40,70,110,1,False -129,Magikarp,Water,,200,20,10,55,15,20,80,1,False -130,Gyarados,Water,Flying,540,95,125,79,60,100,81,1,False -130,GyaradosMega Gyarados,Water,Dark,640,95,155,109,70,130,81,1,False -131,Lapras,Water,Ice,535,130,85,80,85,95,60,1,False -132,Ditto,Normal,,288,48,48,48,48,48,48,1,False -133,Eevee,Normal,,325,55,55,50,45,65,55,1,False -134,Vaporeon,Water,,525,130,65,60,110,95,65,1,False -135,Jolteon,Electric,,525,65,65,60,110,95,130,1,False -136,Flareon,Fire,,525,65,130,60,95,110,65,1,False -137,Porygon,Normal,,395,65,60,70,85,75,40,1,False -138,Omanyte,Rock,Water,355,35,40,100,90,55,35,1,False -139,Omastar,Rock,Water,495,70,60,125,115,70,55,1,False -140,Kabuto,Rock,Water,355,30,80,90,55,45,55,1,False -141,Kabutops,Rock,Water,495,60,115,105,65,70,80,1,False -142,Aerodactyl,Rock,Flying,515,80,105,65,60,75,130,1,False -142,AerodactylMega Aerodactyl,Rock,Flying,615,80,135,85,70,95,150,1,False -143,Snorlax,Normal,,540,160,110,65,65,110,30,1,False -144,Articuno,Ice,Flying,580,90,85,100,95,125,85,1,True -145,Zapdos,Electric,Flying,580,90,90,85,125,90,100,1,True -146,Moltres,Fire,Flying,580,90,100,90,125,85,90,1,True -147,Dratini,Dragon,,300,41,64,45,50,50,50,1,False -148,Dragonair,Dragon,,420,61,84,65,70,70,70,1,False -149,Dragonite,Dragon,Flying,600,91,134,95,100,100,80,1,False -150,Mewtwo,Psychic,,680,106,110,90,154,90,130,1,True -150,MewtwoMega Mewtwo X,Psychic,Fighting,780,106,190,100,154,100,130,1,True -150,MewtwoMega Mewtwo Y,Psychic,,780,106,150,70,194,120,140,1,True -151,Mew,Psychic,,600,100,100,100,100,100,100,1,False -152,Chikorita,Grass,,318,45,49,65,49,65,45,2,False -153,Bayleef,Grass,,405,60,62,80,63,80,60,2,False -154,Meganium,Grass,,525,80,82,100,83,100,80,2,False -155,Cyndaquil,Fire,,309,39,52,43,60,50,65,2,False -156,Quilava,Fire,,405,58,64,58,80,65,80,2,False -157,Typhlosion,Fire,,534,78,84,78,109,85,100,2,False -158,Totodile,Water,,314,50,65,64,44,48,43,2,False -159,Croconaw,Water,,405,65,80,80,59,63,58,2,False -160,Feraligatr,Water,,530,85,105,100,79,83,78,2,False -161,Sentret,Normal,,215,35,46,34,35,45,20,2,False -162,Furret,Normal,,415,85,76,64,45,55,90,2,False -163,Hoothoot,Normal,Flying,262,60,30,30,36,56,50,2,False -164,Noctowl,Normal,Flying,442,100,50,50,76,96,70,2,False -165,Ledyba,Bug,Flying,265,40,20,30,40,80,55,2,False -166,Ledian,Bug,Flying,390,55,35,50,55,110,85,2,False -167,Spinarak,Bug,Poison,250,40,60,40,40,40,30,2,False -168,Ariados,Bug,Poison,390,70,90,70,60,60,40,2,False -169,Crobat,Poison,Flying,535,85,90,80,70,80,130,2,False -170,Chinchou,Water,Electric,330,75,38,38,56,56,67,2,False -171,Lanturn,Water,Electric,460,125,58,58,76,76,67,2,False -172,Pichu,Electric,,205,20,40,15,35,35,60,2,False -173,Cleffa,Fairy,,218,50,25,28,45,55,15,2,False -174,Igglybuff,Normal,Fairy,210,90,30,15,40,20,15,2,False -175,Togepi,Fairy,,245,35,20,65,40,65,20,2,False -176,Togetic,Fairy,Flying,405,55,40,85,80,105,40,2,False -177,Natu,Psychic,Flying,320,40,50,45,70,45,70,2,False -178,Xatu,Psychic,Flying,470,65,75,70,95,70,95,2,False -179,Mareep,Electric,,280,55,40,40,65,45,35,2,False -180,Flaaffy,Electric,,365,70,55,55,80,60,45,2,False -181,Ampharos,Electric,,510,90,75,85,115,90,55,2,False -181,AmpharosMega Ampharos,Electric,Dragon,610,90,95,105,165,110,45,2,False -182,Bellossom,Grass,,490,75,80,95,90,100,50,2,False -183,Marill,Water,Fairy,250,70,20,50,20,50,40,2,False -184,Azumarill,Water,Fairy,420,100,50,80,60,80,50,2,False -185,Sudowoodo,Rock,,410,70,100,115,30,65,30,2,False -186,Politoed,Water,,500,90,75,75,90,100,70,2,False -187,Hoppip,Grass,Flying,250,35,35,40,35,55,50,2,False -188,Skiploom,Grass,Flying,340,55,45,50,45,65,80,2,False -189,Jumpluff,Grass,Flying,460,75,55,70,55,95,110,2,False -190,Aipom,Normal,,360,55,70,55,40,55,85,2,False -191,Sunkern,Grass,,180,30,30,30,30,30,30,2,False -192,Sunflora,Grass,,425,75,75,55,105,85,30,2,False -193,Yanma,Bug,Flying,390,65,65,45,75,45,95,2,False -194,Wooper,Water,Ground,210,55,45,45,25,25,15,2,False -195,Quagsire,Water,Ground,430,95,85,85,65,65,35,2,False -196,Espeon,Psychic,,525,65,65,60,130,95,110,2,False -197,Umbreon,Dark,,525,95,65,110,60,130,65,2,False -198,Murkrow,Dark,Flying,405,60,85,42,85,42,91,2,False -199,Slowking,Water,Psychic,490,95,75,80,100,110,30,2,False -200,Misdreavus,Ghost,,435,60,60,60,85,85,85,2,False -201,Unown,Psychic,,336,48,72,48,72,48,48,2,False -202,Wobbuffet,Psychic,,405,190,33,58,33,58,33,2,False -203,Girafarig,Normal,Psychic,455,70,80,65,90,65,85,2,False -204,Pineco,Bug,,290,50,65,90,35,35,15,2,False -205,Forretress,Bug,Steel,465,75,90,140,60,60,40,2,False -206,Dunsparce,Normal,,415,100,70,70,65,65,45,2,False -207,Gligar,Ground,Flying,430,65,75,105,35,65,85,2,False -208,Steelix,Steel,Ground,510,75,85,200,55,65,30,2,False -208,SteelixMega Steelix,Steel,Ground,610,75,125,230,55,95,30,2,False -209,Snubbull,Fairy,,300,60,80,50,40,40,30,2,False -210,Granbull,Fairy,,450,90,120,75,60,60,45,2,False -211,Qwilfish,Water,Poison,430,65,95,75,55,55,85,2,False -212,Scizor,Bug,Steel,500,70,130,100,55,80,65,2,False -212,ScizorMega Scizor,Bug,Steel,600,70,150,140,65,100,75,2,False -213,Shuckle,Bug,Rock,505,20,10,230,10,230,5,2,False -214,Heracross,Bug,Fighting,500,80,125,75,40,95,85,2,False -214,HeracrossMega Heracross,Bug,Fighting,600,80,185,115,40,105,75,2,False -215,Sneasel,Dark,Ice,430,55,95,55,35,75,115,2,False -216,Teddiursa,Normal,,330,60,80,50,50,50,40,2,False -217,Ursaring,Normal,,500,90,130,75,75,75,55,2,False -218,Slugma,Fire,,250,40,40,40,70,40,20,2,False -219,Magcargo,Fire,Rock,410,50,50,120,80,80,30,2,False -220,Swinub,Ice,Ground,250,50,50,40,30,30,50,2,False -221,Piloswine,Ice,Ground,450,100,100,80,60,60,50,2,False -222,Corsola,Water,Rock,380,55,55,85,65,85,35,2,False -223,Remoraid,Water,,300,35,65,35,65,35,65,2,False -224,Octillery,Water,,480,75,105,75,105,75,45,2,False -225,Delibird,Ice,Flying,330,45,55,45,65,45,75,2,False -226,Mantine,Water,Flying,465,65,40,70,80,140,70,2,False -227,Skarmory,Steel,Flying,465,65,80,140,40,70,70,2,False -228,Houndour,Dark,Fire,330,45,60,30,80,50,65,2,False -229,Houndoom,Dark,Fire,500,75,90,50,110,80,95,2,False -229,HoundoomMega Houndoom,Dark,Fire,600,75,90,90,140,90,115,2,False -230,Kingdra,Water,Dragon,540,75,95,95,95,95,85,2,False -231,Phanpy,Ground,,330,90,60,60,40,40,40,2,False -232,Donphan,Ground,,500,90,120,120,60,60,50,2,False -233,Porygon2,Normal,,515,85,80,90,105,95,60,2,False -234,Stantler,Normal,,465,73,95,62,85,65,85,2,False -235,Smeargle,Normal,,250,55,20,35,20,45,75,2,False -236,Tyrogue,Fighting,,210,35,35,35,35,35,35,2,False -237,Hitmontop,Fighting,,455,50,95,95,35,110,70,2,False -238,Smoochum,Ice,Psychic,305,45,30,15,85,65,65,2,False -239,Elekid,Electric,,360,45,63,37,65,55,95,2,False -240,Magby,Fire,,365,45,75,37,70,55,83,2,False -241,Miltank,Normal,,490,95,80,105,40,70,100,2,False -242,Blissey,Normal,,540,255,10,10,75,135,55,2,False -243,Raikou,Electric,,580,90,85,75,115,100,115,2,True -244,Entei,Fire,,580,115,115,85,90,75,100,2,True -245,Suicune,Water,,580,100,75,115,90,115,85,2,True -246,Larvitar,Rock,Ground,300,50,64,50,45,50,41,2,False -247,Pupitar,Rock,Ground,410,70,84,70,65,70,51,2,False -248,Tyranitar,Rock,Dark,600,100,134,110,95,100,61,2,False -248,TyranitarMega Tyranitar,Rock,Dark,700,100,164,150,95,120,71,2,False -249,Lugia,Psychic,Flying,680,106,90,130,90,154,110,2,True -250,Ho-oh,Fire,Flying,680,106,130,90,110,154,90,2,True -251,Celebi,Psychic,Grass,600,100,100,100,100,100,100,2,False -252,Treecko,Grass,,310,40,45,35,65,55,70,3,False -253,Grovyle,Grass,,405,50,65,45,85,65,95,3,False -254,Sceptile,Grass,,530,70,85,65,105,85,120,3,False -254,SceptileMega Sceptile,Grass,Dragon,630,70,110,75,145,85,145,3,False -255,Torchic,Fire,,310,45,60,40,70,50,45,3,False -256,Combusken,Fire,Fighting,405,60,85,60,85,60,55,3,False -257,Blaziken,Fire,Fighting,530,80,120,70,110,70,80,3,False -257,BlazikenMega Blaziken,Fire,Fighting,630,80,160,80,130,80,100,3,False -258,Mudkip,Water,,310,50,70,50,50,50,40,3,False -259,Marshtomp,Water,Ground,405,70,85,70,60,70,50,3,False -260,Swampert,Water,Ground,535,100,110,90,85,90,60,3,False -260,SwampertMega Swampert,Water,Ground,635,100,150,110,95,110,70,3,False -261,Poochyena,Dark,,220,35,55,35,30,30,35,3,False -262,Mightyena,Dark,,420,70,90,70,60,60,70,3,False -263,Zigzagoon,Normal,,240,38,30,41,30,41,60,3,False -264,Linoone,Normal,,420,78,70,61,50,61,100,3,False -265,Wurmple,Bug,,195,45,45,35,20,30,20,3,False -266,Silcoon,Bug,,205,50,35,55,25,25,15,3,False -267,Beautifly,Bug,Flying,395,60,70,50,100,50,65,3,False -268,Cascoon,Bug,,205,50,35,55,25,25,15,3,False -269,Dustox,Bug,Poison,385,60,50,70,50,90,65,3,False -270,Lotad,Water,Grass,220,40,30,30,40,50,30,3,False -271,Lombre,Water,Grass,340,60,50,50,60,70,50,3,False -272,Ludicolo,Water,Grass,480,80,70,70,90,100,70,3,False -273,Seedot,Grass,,220,40,40,50,30,30,30,3,False -274,Nuzleaf,Grass,Dark,340,70,70,40,60,40,60,3,False -275,Shiftry,Grass,Dark,480,90,100,60,90,60,80,3,False -276,Taillow,Normal,Flying,270,40,55,30,30,30,85,3,False -277,Swellow,Normal,Flying,430,60,85,60,50,50,125,3,False -278,Wingull,Water,Flying,270,40,30,30,55,30,85,3,False -279,Pelipper,Water,Flying,430,60,50,100,85,70,65,3,False -280,Ralts,Psychic,Fairy,198,28,25,25,45,35,40,3,False -281,Kirlia,Psychic,Fairy,278,38,35,35,65,55,50,3,False -282,Gardevoir,Psychic,Fairy,518,68,65,65,125,115,80,3,False -282,GardevoirMega Gardevoir,Psychic,Fairy,618,68,85,65,165,135,100,3,False -283,Surskit,Bug,Water,269,40,30,32,50,52,65,3,False -284,Masquerain,Bug,Flying,414,70,60,62,80,82,60,3,False -285,Shroomish,Grass,,295,60,40,60,40,60,35,3,False -286,Breloom,Grass,Fighting,460,60,130,80,60,60,70,3,False -287,Slakoth,Normal,,280,60,60,60,35,35,30,3,False -288,Vigoroth,Normal,,440,80,80,80,55,55,90,3,False -289,Slaking,Normal,,670,150,160,100,95,65,100,3,False -290,Nincada,Bug,Ground,266,31,45,90,30,30,40,3,False -291,Ninjask,Bug,Flying,456,61,90,45,50,50,160,3,False -292,Shedinja,Bug,Ghost,236,1,90,45,30,30,40,3,False -293,Whismur,Normal,,240,64,51,23,51,23,28,3,False -294,Loudred,Normal,,360,84,71,43,71,43,48,3,False -295,Exploud,Normal,,490,104,91,63,91,73,68,3,False -296,Makuhita,Fighting,,237,72,60,30,20,30,25,3,False -297,Hariyama,Fighting,,474,144,120,60,40,60,50,3,False -298,Azurill,Normal,Fairy,190,50,20,40,20,40,20,3,False -299,Nosepass,Rock,,375,30,45,135,45,90,30,3,False -300,Skitty,Normal,,260,50,45,45,35,35,50,3,False -301,Delcatty,Normal,,380,70,65,65,55,55,70,3,False -302,Sableye,Dark,Ghost,380,50,75,75,65,65,50,3,False -302,SableyeMega Sableye,Dark,Ghost,480,50,85,125,85,115,20,3,False -303,Mawile,Steel,Fairy,380,50,85,85,55,55,50,3,False -303,MawileMega Mawile,Steel,Fairy,480,50,105,125,55,95,50,3,False -304,Aron,Steel,Rock,330,50,70,100,40,40,30,3,False -305,Lairon,Steel,Rock,430,60,90,140,50,50,40,3,False -306,Aggron,Steel,Rock,530,70,110,180,60,60,50,3,False -306,AggronMega Aggron,Steel,,630,70,140,230,60,80,50,3,False -307,Meditite,Fighting,Psychic,280,30,40,55,40,55,60,3,False -308,Medicham,Fighting,Psychic,410,60,60,75,60,75,80,3,False -308,MedichamMega Medicham,Fighting,Psychic,510,60,100,85,80,85,100,3,False -309,Electrike,Electric,,295,40,45,40,65,40,65,3,False -310,Manectric,Electric,,475,70,75,60,105,60,105,3,False -310,ManectricMega Manectric,Electric,,575,70,75,80,135,80,135,3,False -311,Plusle,Electric,,405,60,50,40,85,75,95,3,False -312,Minun,Electric,,405,60,40,50,75,85,95,3,False -313,Volbeat,Bug,,400,65,73,55,47,75,85,3,False -314,Illumise,Bug,,400,65,47,55,73,75,85,3,False -315,Roselia,Grass,Poison,400,50,60,45,100,80,65,3,False -316,Gulpin,Poison,,302,70,43,53,43,53,40,3,False -317,Swalot,Poison,,467,100,73,83,73,83,55,3,False -318,Carvanha,Water,Dark,305,45,90,20,65,20,65,3,False -319,Sharpedo,Water,Dark,460,70,120,40,95,40,95,3,False -319,SharpedoMega Sharpedo,Water,Dark,560,70,140,70,110,65,105,3,False -320,Wailmer,Water,,400,130,70,35,70,35,60,3,False -321,Wailord,Water,,500,170,90,45,90,45,60,3,False -322,Numel,Fire,Ground,305,60,60,40,65,45,35,3,False -323,Camerupt,Fire,Ground,460,70,100,70,105,75,40,3,False -323,CameruptMega Camerupt,Fire,Ground,560,70,120,100,145,105,20,3,False -324,Torkoal,Fire,,470,70,85,140,85,70,20,3,False -325,Spoink,Psychic,,330,60,25,35,70,80,60,3,False -326,Grumpig,Psychic,,470,80,45,65,90,110,80,3,False -327,Spinda,Normal,,360,60,60,60,60,60,60,3,False -328,Trapinch,Ground,,290,45,100,45,45,45,10,3,False -329,Vibrava,Ground,Dragon,340,50,70,50,50,50,70,3,False -330,Flygon,Ground,Dragon,520,80,100,80,80,80,100,3,False -331,Cacnea,Grass,,335,50,85,40,85,40,35,3,False -332,Cacturne,Grass,Dark,475,70,115,60,115,60,55,3,False -333,Swablu,Normal,Flying,310,45,40,60,40,75,50,3,False -334,Altaria,Dragon,Flying,490,75,70,90,70,105,80,3,False -334,AltariaMega Altaria,Dragon,Fairy,590,75,110,110,110,105,80,3,False -335,Zangoose,Normal,,458,73,115,60,60,60,90,3,False -336,Seviper,Poison,,458,73,100,60,100,60,65,3,False -337,Lunatone,Rock,Psychic,440,70,55,65,95,85,70,3,False -338,Solrock,Rock,Psychic,440,70,95,85,55,65,70,3,False -339,Barboach,Water,Ground,288,50,48,43,46,41,60,3,False -340,Whiscash,Water,Ground,468,110,78,73,76,71,60,3,False -341,Corphish,Water,,308,43,80,65,50,35,35,3,False -342,Crawdaunt,Water,Dark,468,63,120,85,90,55,55,3,False -343,Baltoy,Ground,Psychic,300,40,40,55,40,70,55,3,False -344,Claydol,Ground,Psychic,500,60,70,105,70,120,75,3,False -345,Lileep,Rock,Grass,355,66,41,77,61,87,23,3,False -346,Cradily,Rock,Grass,495,86,81,97,81,107,43,3,False -347,Anorith,Rock,Bug,355,45,95,50,40,50,75,3,False -348,Armaldo,Rock,Bug,495,75,125,100,70,80,45,3,False -349,Feebas,Water,,200,20,15,20,10,55,80,3,False -350,Milotic,Water,,540,95,60,79,100,125,81,3,False -351,Castform,Normal,,420,70,70,70,70,70,70,3,False -352,Kecleon,Normal,,440,60,90,70,60,120,40,3,False -353,Shuppet,Ghost,,295,44,75,35,63,33,45,3,False -354,Banette,Ghost,,455,64,115,65,83,63,65,3,False -354,BanetteMega Banette,Ghost,,555,64,165,75,93,83,75,3,False -355,Duskull,Ghost,,295,20,40,90,30,90,25,3,False -356,Dusclops,Ghost,,455,40,70,130,60,130,25,3,False -357,Tropius,Grass,Flying,460,99,68,83,72,87,51,3,False -358,Chimecho,Psychic,,425,65,50,70,95,80,65,3,False -359,Absol,Dark,,465,65,130,60,75,60,75,3,False -359,AbsolMega Absol,Dark,,565,65,150,60,115,60,115,3,False -360,Wynaut,Psychic,,260,95,23,48,23,48,23,3,False -361,Snorunt,Ice,,300,50,50,50,50,50,50,3,False -362,Glalie,Ice,,480,80,80,80,80,80,80,3,False -362,GlalieMega Glalie,Ice,,580,80,120,80,120,80,100,3,False -363,Spheal,Ice,Water,290,70,40,50,55,50,25,3,False -364,Sealeo,Ice,Water,410,90,60,70,75,70,45,3,False -365,Walrein,Ice,Water,530,110,80,90,95,90,65,3,False -366,Clamperl,Water,,345,35,64,85,74,55,32,3,False -367,Huntail,Water,,485,55,104,105,94,75,52,3,False -368,Gorebyss,Water,,485,55,84,105,114,75,52,3,False -369,Relicanth,Water,Rock,485,100,90,130,45,65,55,3,False -370,Luvdisc,Water,,330,43,30,55,40,65,97,3,False -371,Bagon,Dragon,,300,45,75,60,40,30,50,3,False -372,Shelgon,Dragon,,420,65,95,100,60,50,50,3,False -373,Salamence,Dragon,Flying,600,95,135,80,110,80,100,3,False -373,SalamenceMega Salamence,Dragon,Flying,700,95,145,130,120,90,120,3,False -374,Beldum,Steel,Psychic,300,40,55,80,35,60,30,3,False -375,Metang,Steel,Psychic,420,60,75,100,55,80,50,3,False -376,Metagross,Steel,Psychic,600,80,135,130,95,90,70,3,False -376,MetagrossMega Metagross,Steel,Psychic,700,80,145,150,105,110,110,3,False -377,Regirock,Rock,,580,80,100,200,50,100,50,3,True -378,Regice,Ice,,580,80,50,100,100,200,50,3,True -379,Registeel,Steel,,580,80,75,150,75,150,50,3,True -380,Latias,Dragon,Psychic,600,80,80,90,110,130,110,3,True -380,LatiasMega Latias,Dragon,Psychic,700,80,100,120,140,150,110,3,True -381,Latios,Dragon,Psychic,600,80,90,80,130,110,110,3,True -381,LatiosMega Latios,Dragon,Psychic,700,80,130,100,160,120,110,3,True -382,Kyogre,Water,,670,100,100,90,150,140,90,3,True -382,KyogrePrimal Kyogre,Water,,770,100,150,90,180,160,90,3,True -383,Groudon,Ground,,670,100,150,140,100,90,90,3,True -383,GroudonPrimal Groudon,Ground,Fire,770,100,180,160,150,90,90,3,True -384,Rayquaza,Dragon,Flying,680,105,150,90,150,90,95,3,True -384,RayquazaMega Rayquaza,Dragon,Flying,780,105,180,100,180,100,115,3,True -385,Jirachi,Steel,Psychic,600,100,100,100,100,100,100,3,True -386,DeoxysNormal Forme,Psychic,,600,50,150,50,150,50,150,3,True -386,DeoxysAttack Forme,Psychic,,600,50,180,20,180,20,150,3,True -386,DeoxysDefense Forme,Psychic,,600,50,70,160,70,160,90,3,True -386,DeoxysSpeed Forme,Psychic,,600,50,95,90,95,90,180,3,True -387,Turtwig,Grass,,318,55,68,64,45,55,31,4,False -388,Grotle,Grass,,405,75,89,85,55,65,36,4,False -389,Torterra,Grass,Ground,525,95,109,105,75,85,56,4,False -390,Chimchar,Fire,,309,44,58,44,58,44,61,4,False -391,Monferno,Fire,Fighting,405,64,78,52,78,52,81,4,False -392,Infernape,Fire,Fighting,534,76,104,71,104,71,108,4,False -393,Piplup,Water,,314,53,51,53,61,56,40,4,False -394,Prinplup,Water,,405,64,66,68,81,76,50,4,False -395,Empoleon,Water,Steel,530,84,86,88,111,101,60,4,False -396,Starly,Normal,Flying,245,40,55,30,30,30,60,4,False -397,Staravia,Normal,Flying,340,55,75,50,40,40,80,4,False -398,Staraptor,Normal,Flying,485,85,120,70,50,60,100,4,False -399,Bidoof,Normal,,250,59,45,40,35,40,31,4,False -400,Bibarel,Normal,Water,410,79,85,60,55,60,71,4,False -401,Kricketot,Bug,,194,37,25,41,25,41,25,4,False -402,Kricketune,Bug,,384,77,85,51,55,51,65,4,False -403,Shinx,Electric,,263,45,65,34,40,34,45,4,False -404,Luxio,Electric,,363,60,85,49,60,49,60,4,False -405,Luxray,Electric,,523,80,120,79,95,79,70,4,False -406,Budew,Grass,Poison,280,40,30,35,50,70,55,4,False -407,Roserade,Grass,Poison,515,60,70,65,125,105,90,4,False -408,Cranidos,Rock,,350,67,125,40,30,30,58,4,False -409,Rampardos,Rock,,495,97,165,60,65,50,58,4,False -410,Shieldon,Rock,Steel,350,30,42,118,42,88,30,4,False -411,Bastiodon,Rock,Steel,495,60,52,168,47,138,30,4,False -412,Burmy,Bug,,224,40,29,45,29,45,36,4,False -413,WormadamPlant Cloak,Bug,Grass,424,60,59,85,79,105,36,4,False -413,WormadamSandy Cloak,Bug,Ground,424,60,79,105,59,85,36,4,False -413,WormadamTrash Cloak,Bug,Steel,424,60,69,95,69,95,36,4,False -414,Mothim,Bug,Flying,424,70,94,50,94,50,66,4,False -415,Combee,Bug,Flying,244,30,30,42,30,42,70,4,False -416,Vespiquen,Bug,Flying,474,70,80,102,80,102,40,4,False -417,Pachirisu,Electric,,405,60,45,70,45,90,95,4,False -418,Buizel,Water,,330,55,65,35,60,30,85,4,False -419,Floatzel,Water,,495,85,105,55,85,50,115,4,False -420,Cherubi,Grass,,275,45,35,45,62,53,35,4,False -421,Cherrim,Grass,,450,70,60,70,87,78,85,4,False -422,Shellos,Water,,325,76,48,48,57,62,34,4,False -423,Gastrodon,Water,Ground,475,111,83,68,92,82,39,4,False -424,Ambipom,Normal,,482,75,100,66,60,66,115,4,False -425,Drifloon,Ghost,Flying,348,90,50,34,60,44,70,4,False -426,Drifblim,Ghost,Flying,498,150,80,44,90,54,80,4,False -427,Buneary,Normal,,350,55,66,44,44,56,85,4,False -428,Lopunny,Normal,,480,65,76,84,54,96,105,4,False -428,LopunnyMega Lopunny,Normal,Fighting,580,65,136,94,54,96,135,4,False -429,Mismagius,Ghost,,495,60,60,60,105,105,105,4,False -430,Honchkrow,Dark,Flying,505,100,125,52,105,52,71,4,False -431,Glameow,Normal,,310,49,55,42,42,37,85,4,False -432,Purugly,Normal,,452,71,82,64,64,59,112,4,False -433,Chingling,Psychic,,285,45,30,50,65,50,45,4,False -434,Stunky,Poison,Dark,329,63,63,47,41,41,74,4,False -435,Skuntank,Poison,Dark,479,103,93,67,71,61,84,4,False -436,Bronzor,Steel,Psychic,300,57,24,86,24,86,23,4,False -437,Bronzong,Steel,Psychic,500,67,89,116,79,116,33,4,False -438,Bonsly,Rock,,290,50,80,95,10,45,10,4,False -439,Mime Jr.,Psychic,Fairy,310,20,25,45,70,90,60,4,False -440,Happiny,Normal,,220,100,5,5,15,65,30,4,False -441,Chatot,Normal,Flying,411,76,65,45,92,42,91,4,False -442,Spiritomb,Ghost,Dark,485,50,92,108,92,108,35,4,False -443,Gible,Dragon,Ground,300,58,70,45,40,45,42,4,False -444,Gabite,Dragon,Ground,410,68,90,65,50,55,82,4,False -445,Garchomp,Dragon,Ground,600,108,130,95,80,85,102,4,False -445,GarchompMega Garchomp,Dragon,Ground,700,108,170,115,120,95,92,4,False -446,Munchlax,Normal,,390,135,85,40,40,85,5,4,False -447,Riolu,Fighting,,285,40,70,40,35,40,60,4,False -448,Lucario,Fighting,Steel,525,70,110,70,115,70,90,4,False -448,LucarioMega Lucario,Fighting,Steel,625,70,145,88,140,70,112,4,False -449,Hippopotas,Ground,,330,68,72,78,38,42,32,4,False -450,Hippowdon,Ground,,525,108,112,118,68,72,47,4,False -451,Skorupi,Poison,Bug,330,40,50,90,30,55,65,4,False -452,Drapion,Poison,Dark,500,70,90,110,60,75,95,4,False -453,Croagunk,Poison,Fighting,300,48,61,40,61,40,50,4,False -454,Toxicroak,Poison,Fighting,490,83,106,65,86,65,85,4,False -455,Carnivine,Grass,,454,74,100,72,90,72,46,4,False -456,Finneon,Water,,330,49,49,56,49,61,66,4,False -457,Lumineon,Water,,460,69,69,76,69,86,91,4,False -458,Mantyke,Water,Flying,345,45,20,50,60,120,50,4,False -459,Snover,Grass,Ice,334,60,62,50,62,60,40,4,False -460,Abomasnow,Grass,Ice,494,90,92,75,92,85,60,4,False -460,AbomasnowMega Abomasnow,Grass,Ice,594,90,132,105,132,105,30,4,False -461,Weavile,Dark,Ice,510,70,120,65,45,85,125,4,False -462,Magnezone,Electric,Steel,535,70,70,115,130,90,60,4,False -463,Lickilicky,Normal,,515,110,85,95,80,95,50,4,False -464,Rhyperior,Ground,Rock,535,115,140,130,55,55,40,4,False -465,Tangrowth,Grass,,535,100,100,125,110,50,50,4,False -466,Electivire,Electric,,540,75,123,67,95,85,95,4,False -467,Magmortar,Fire,,540,75,95,67,125,95,83,4,False -468,Togekiss,Fairy,Flying,545,85,50,95,120,115,80,4,False -469,Yanmega,Bug,Flying,515,86,76,86,116,56,95,4,False -470,Leafeon,Grass,,525,65,110,130,60,65,95,4,False -471,Glaceon,Ice,,525,65,60,110,130,95,65,4,False -472,Gliscor,Ground,Flying,510,75,95,125,45,75,95,4,False -473,Mamoswine,Ice,Ground,530,110,130,80,70,60,80,4,False -474,Porygon-Z,Normal,,535,85,80,70,135,75,90,4,False -475,Gallade,Psychic,Fighting,518,68,125,65,65,115,80,4,False -475,GalladeMega Gallade,Psychic,Fighting,618,68,165,95,65,115,110,4,False -476,Probopass,Rock,Steel,525,60,55,145,75,150,40,4,False -477,Dusknoir,Ghost,,525,45,100,135,65,135,45,4,False -478,Froslass,Ice,Ghost,480,70,80,70,80,70,110,4,False -479,Rotom,Electric,Ghost,440,50,50,77,95,77,91,4,False -479,RotomHeat Rotom,Electric,Fire,520,50,65,107,105,107,86,4,False -479,RotomWash Rotom,Electric,Water,520,50,65,107,105,107,86,4,False -479,RotomFrost Rotom,Electric,Ice,520,50,65,107,105,107,86,4,False -479,RotomFan Rotom,Electric,Flying,520,50,65,107,105,107,86,4,False -479,RotomMow Rotom,Electric,Grass,520,50,65,107,105,107,86,4,False -480,Uxie,Psychic,,580,75,75,130,75,130,95,4,True -481,Mesprit,Psychic,,580,80,105,105,105,105,80,4,True -482,Azelf,Psychic,,580,75,125,70,125,70,115,4,True -483,Dialga,Steel,Dragon,680,100,120,120,150,100,90,4,True -484,Palkia,Water,Dragon,680,90,120,100,150,120,100,4,True -485,Heatran,Fire,Steel,600,91,90,106,130,106,77,4,True -486,Regigigas,Normal,,670,110,160,110,80,110,100,4,True -487,GiratinaAltered Forme,Ghost,Dragon,680,150,100,120,100,120,90,4,True -487,GiratinaOrigin Forme,Ghost,Dragon,680,150,120,100,120,100,90,4,True -488,Cresselia,Psychic,,600,120,70,120,75,130,85,4,False -489,Phione,Water,,480,80,80,80,80,80,80,4,False -490,Manaphy,Water,,600,100,100,100,100,100,100,4,False -491,Darkrai,Dark,,600,70,90,90,135,90,125,4,True -492,ShayminLand Forme,Grass,,600,100,100,100,100,100,100,4,True -492,ShayminSky Forme,Grass,Flying,600,100,103,75,120,75,127,4,True -493,Arceus,Normal,,720,120,120,120,120,120,120,4,True -494,Victini,Psychic,Fire,600,100,100,100,100,100,100,5,True -495,Snivy,Grass,,308,45,45,55,45,55,63,5,False -496,Servine,Grass,,413,60,60,75,60,75,83,5,False -497,Serperior,Grass,,528,75,75,95,75,95,113,5,False -498,Tepig,Fire,,308,65,63,45,45,45,45,5,False -499,Pignite,Fire,Fighting,418,90,93,55,70,55,55,5,False -500,Emboar,Fire,Fighting,528,110,123,65,100,65,65,5,False -501,Oshawott,Water,,308,55,55,45,63,45,45,5,False -502,Dewott,Water,,413,75,75,60,83,60,60,5,False -503,Samurott,Water,,528,95,100,85,108,70,70,5,False -504,Patrat,Normal,,255,45,55,39,35,39,42,5,False -505,Watchog,Normal,,420,60,85,69,60,69,77,5,False -506,Lillipup,Normal,,275,45,60,45,25,45,55,5,False -507,Herdier,Normal,,370,65,80,65,35,65,60,5,False -508,Stoutland,Normal,,500,85,110,90,45,90,80,5,False -509,Purrloin,Dark,,281,41,50,37,50,37,66,5,False -510,Liepard,Dark,,446,64,88,50,88,50,106,5,False -511,Pansage,Grass,,316,50,53,48,53,48,64,5,False -512,Simisage,Grass,,498,75,98,63,98,63,101,5,False -513,Pansear,Fire,,316,50,53,48,53,48,64,5,False -514,Simisear,Fire,,498,75,98,63,98,63,101,5,False -515,Panpour,Water,,316,50,53,48,53,48,64,5,False -516,Simipour,Water,,498,75,98,63,98,63,101,5,False -517,Munna,Psychic,,292,76,25,45,67,55,24,5,False -518,Musharna,Psychic,,487,116,55,85,107,95,29,5,False -519,Pidove,Normal,Flying,264,50,55,50,36,30,43,5,False -520,Tranquill,Normal,Flying,358,62,77,62,50,42,65,5,False -521,Unfezant,Normal,Flying,488,80,115,80,65,55,93,5,False -522,Blitzle,Electric,,295,45,60,32,50,32,76,5,False -523,Zebstrika,Electric,,497,75,100,63,80,63,116,5,False -524,Roggenrola,Rock,,280,55,75,85,25,25,15,5,False -525,Boldore,Rock,,390,70,105,105,50,40,20,5,False -526,Gigalith,Rock,,515,85,135,130,60,80,25,5,False -527,Woobat,Psychic,Flying,313,55,45,43,55,43,72,5,False -528,Swoobat,Psychic,Flying,425,67,57,55,77,55,114,5,False -529,Drilbur,Ground,,328,60,85,40,30,45,68,5,False -530,Excadrill,Ground,Steel,508,110,135,60,50,65,88,5,False -531,Audino,Normal,,445,103,60,86,60,86,50,5,False -531,AudinoMega Audino,Normal,Fairy,545,103,60,126,80,126,50,5,False -532,Timburr,Fighting,,305,75,80,55,25,35,35,5,False -533,Gurdurr,Fighting,,405,85,105,85,40,50,40,5,False -534,Conkeldurr,Fighting,,505,105,140,95,55,65,45,5,False -535,Tympole,Water,,294,50,50,40,50,40,64,5,False -536,Palpitoad,Water,Ground,384,75,65,55,65,55,69,5,False -537,Seismitoad,Water,Ground,509,105,95,75,85,75,74,5,False -538,Throh,Fighting,,465,120,100,85,30,85,45,5,False -539,Sawk,Fighting,,465,75,125,75,30,75,85,5,False -540,Sewaddle,Bug,Grass,310,45,53,70,40,60,42,5,False -541,Swadloon,Bug,Grass,380,55,63,90,50,80,42,5,False -542,Leavanny,Bug,Grass,500,75,103,80,70,80,92,5,False -543,Venipede,Bug,Poison,260,30,45,59,30,39,57,5,False -544,Whirlipede,Bug,Poison,360,40,55,99,40,79,47,5,False -545,Scolipede,Bug,Poison,485,60,100,89,55,69,112,5,False -546,Cottonee,Grass,Fairy,280,40,27,60,37,50,66,5,False -547,Whimsicott,Grass,Fairy,480,60,67,85,77,75,116,5,False -548,Petilil,Grass,,280,45,35,50,70,50,30,5,False -549,Lilligant,Grass,,480,70,60,75,110,75,90,5,False -550,Basculin,Water,,460,70,92,65,80,55,98,5,False -551,Sandile,Ground,Dark,292,50,72,35,35,35,65,5,False -552,Krokorok,Ground,Dark,351,60,82,45,45,45,74,5,False -553,Krookodile,Ground,Dark,519,95,117,80,65,70,92,5,False -554,Darumaka,Fire,,315,70,90,45,15,45,50,5,False -555,DarmanitanStandard Mode,Fire,,480,105,140,55,30,55,95,5,False -555,DarmanitanZen Mode,Fire,Psychic,540,105,30,105,140,105,55,5,False -556,Maractus,Grass,,461,75,86,67,106,67,60,5,False -557,Dwebble,Bug,Rock,325,50,65,85,35,35,55,5,False -558,Crustle,Bug,Rock,475,70,95,125,65,75,45,5,False -559,Scraggy,Dark,Fighting,348,50,75,70,35,70,48,5,False -560,Scrafty,Dark,Fighting,488,65,90,115,45,115,58,5,False -561,Sigilyph,Psychic,Flying,490,72,58,80,103,80,97,5,False -562,Yamask,Ghost,,303,38,30,85,55,65,30,5,False -563,Cofagrigus,Ghost,,483,58,50,145,95,105,30,5,False -564,Tirtouga,Water,Rock,355,54,78,103,53,45,22,5,False -565,Carracosta,Water,Rock,495,74,108,133,83,65,32,5,False -566,Archen,Rock,Flying,401,55,112,45,74,45,70,5,False -567,Archeops,Rock,Flying,567,75,140,65,112,65,110,5,False -568,Trubbish,Poison,,329,50,50,62,40,62,65,5,False -569,Garbodor,Poison,,474,80,95,82,60,82,75,5,False -570,Zorua,Dark,,330,40,65,40,80,40,65,5,False -571,Zoroark,Dark,,510,60,105,60,120,60,105,5,False -572,Minccino,Normal,,300,55,50,40,40,40,75,5,False -573,Cinccino,Normal,,470,75,95,60,65,60,115,5,False -574,Gothita,Psychic,,290,45,30,50,55,65,45,5,False -575,Gothorita,Psychic,,390,60,45,70,75,85,55,5,False -576,Gothitelle,Psychic,,490,70,55,95,95,110,65,5,False -577,Solosis,Psychic,,290,45,30,40,105,50,20,5,False -578,Duosion,Psychic,,370,65,40,50,125,60,30,5,False -579,Reuniclus,Psychic,,490,110,65,75,125,85,30,5,False -580,Ducklett,Water,Flying,305,62,44,50,44,50,55,5,False -581,Swanna,Water,Flying,473,75,87,63,87,63,98,5,False -582,Vanillite,Ice,,305,36,50,50,65,60,44,5,False -583,Vanillish,Ice,,395,51,65,65,80,75,59,5,False -584,Vanilluxe,Ice,,535,71,95,85,110,95,79,5,False -585,Deerling,Normal,Grass,335,60,60,50,40,50,75,5,False -586,Sawsbuck,Normal,Grass,475,80,100,70,60,70,95,5,False -587,Emolga,Electric,Flying,428,55,75,60,75,60,103,5,False -588,Karrablast,Bug,,315,50,75,45,40,45,60,5,False -589,Escavalier,Bug,Steel,495,70,135,105,60,105,20,5,False -590,Foongus,Grass,Poison,294,69,55,45,55,55,15,5,False -591,Amoonguss,Grass,Poison,464,114,85,70,85,80,30,5,False -592,Frillish,Water,Ghost,335,55,40,50,65,85,40,5,False -593,Jellicent,Water,Ghost,480,100,60,70,85,105,60,5,False -594,Alomomola,Water,,470,165,75,80,40,45,65,5,False -595,Joltik,Bug,Electric,319,50,47,50,57,50,65,5,False -596,Galvantula,Bug,Electric,472,70,77,60,97,60,108,5,False -597,Ferroseed,Grass,Steel,305,44,50,91,24,86,10,5,False -598,Ferrothorn,Grass,Steel,489,74,94,131,54,116,20,5,False -599,Klink,Steel,,300,40,55,70,45,60,30,5,False -600,Klang,Steel,,440,60,80,95,70,85,50,5,False -601,Klinklang,Steel,,520,60,100,115,70,85,90,5,False -602,Tynamo,Electric,,275,35,55,40,45,40,60,5,False -603,Eelektrik,Electric,,405,65,85,70,75,70,40,5,False -604,Eelektross,Electric,,515,85,115,80,105,80,50,5,False -605,Elgyem,Psychic,,335,55,55,55,85,55,30,5,False -606,Beheeyem,Psychic,,485,75,75,75,125,95,40,5,False -607,Litwick,Ghost,Fire,275,50,30,55,65,55,20,5,False -608,Lampent,Ghost,Fire,370,60,40,60,95,60,55,5,False -609,Chandelure,Ghost,Fire,520,60,55,90,145,90,80,5,False -610,Axew,Dragon,,320,46,87,60,30,40,57,5,False -611,Fraxure,Dragon,,410,66,117,70,40,50,67,5,False -612,Haxorus,Dragon,,540,76,147,90,60,70,97,5,False -613,Cubchoo,Ice,,305,55,70,40,60,40,40,5,False -614,Beartic,Ice,,485,95,110,80,70,80,50,5,False -615,Cryogonal,Ice,,485,70,50,30,95,135,105,5,False -616,Shelmet,Bug,,305,50,40,85,40,65,25,5,False -617,Accelgor,Bug,,495,80,70,40,100,60,145,5,False -618,Stunfisk,Ground,Electric,471,109,66,84,81,99,32,5,False -619,Mienfoo,Fighting,,350,45,85,50,55,50,65,5,False -620,Mienshao,Fighting,,510,65,125,60,95,60,105,5,False -621,Druddigon,Dragon,,485,77,120,90,60,90,48,5,False -622,Golett,Ground,Ghost,303,59,74,50,35,50,35,5,False -623,Golurk,Ground,Ghost,483,89,124,80,55,80,55,5,False -624,Pawniard,Dark,Steel,340,45,85,70,40,40,60,5,False -625,Bisharp,Dark,Steel,490,65,125,100,60,70,70,5,False -626,Bouffalant,Normal,,490,95,110,95,40,95,55,5,False -627,Rufflet,Normal,Flying,350,70,83,50,37,50,60,5,False -628,Braviary,Normal,Flying,510,100,123,75,57,75,80,5,False -629,Vullaby,Dark,Flying,370,70,55,75,45,65,60,5,False -630,Mandibuzz,Dark,Flying,510,110,65,105,55,95,80,5,False -631,Heatmor,Fire,,484,85,97,66,105,66,65,5,False -632,Durant,Bug,Steel,484,58,109,112,48,48,109,5,False -633,Deino,Dark,Dragon,300,52,65,50,45,50,38,5,False -634,Zweilous,Dark,Dragon,420,72,85,70,65,70,58,5,False -635,Hydreigon,Dark,Dragon,600,92,105,90,125,90,98,5,False -636,Larvesta,Bug,Fire,360,55,85,55,50,55,60,5,False -637,Volcarona,Bug,Fire,550,85,60,65,135,105,100,5,False -638,Cobalion,Steel,Fighting,580,91,90,129,90,72,108,5,True -639,Terrakion,Rock,Fighting,580,91,129,90,72,90,108,5,True -640,Virizion,Grass,Fighting,580,91,90,72,90,129,108,5,True -641,TornadusIncarnate Forme,Flying,,580,79,115,70,125,80,111,5,True -641,TornadusTherian Forme,Flying,,580,79,100,80,110,90,121,5,True -642,ThundurusIncarnate Forme,Electric,Flying,580,79,115,70,125,80,111,5,True -642,ThundurusTherian Forme,Electric,Flying,580,79,105,70,145,80,101,5,True -643,Reshiram,Dragon,Fire,680,100,120,100,150,120,90,5,True -644,Zekrom,Dragon,Electric,680,100,150,120,120,100,90,5,True -645,LandorusIncarnate Forme,Ground,Flying,600,89,125,90,115,80,101,5,True -645,LandorusTherian Forme,Ground,Flying,600,89,145,90,105,80,91,5,True -646,Kyurem,Dragon,Ice,660,125,130,90,130,90,95,5,True -646,KyuremBlack Kyurem,Dragon,Ice,700,125,170,100,120,90,95,5,True -646,KyuremWhite Kyurem,Dragon,Ice,700,125,120,90,170,100,95,5,True -647,KeldeoOrdinary Forme,Water,Fighting,580,91,72,90,129,90,108,5,False -647,KeldeoResolute Forme,Water,Fighting,580,91,72,90,129,90,108,5,False -648,MeloettaAria Forme,Normal,Psychic,600,100,77,77,128,128,90,5,False -648,MeloettaPirouette Forme,Normal,Fighting,600,100,128,90,77,77,128,5,False -649,Genesect,Bug,Steel,600,71,120,95,120,95,99,5,False -650,Chespin,Grass,,313,56,61,65,48,45,38,6,False -651,Quilladin,Grass,,405,61,78,95,56,58,57,6,False -652,Chesnaught,Grass,Fighting,530,88,107,122,74,75,64,6,False -653,Fennekin,Fire,,307,40,45,40,62,60,60,6,False -654,Braixen,Fire,,409,59,59,58,90,70,73,6,False -655,Delphox,Fire,Psychic,534,75,69,72,114,100,104,6,False -656,Froakie,Water,,314,41,56,40,62,44,71,6,False -657,Frogadier,Water,,405,54,63,52,83,56,97,6,False -658,Greninja,Water,Dark,530,72,95,67,103,71,122,6,False -659,Bunnelby,Normal,,237,38,36,38,32,36,57,6,False -660,Diggersby,Normal,Ground,423,85,56,77,50,77,78,6,False -661,Fletchling,Normal,Flying,278,45,50,43,40,38,62,6,False -662,Fletchinder,Fire,Flying,382,62,73,55,56,52,84,6,False -663,Talonflame,Fire,Flying,499,78,81,71,74,69,126,6,False -664,Scatterbug,Bug,,200,38,35,40,27,25,35,6,False -665,Spewpa,Bug,,213,45,22,60,27,30,29,6,False -666,Vivillon,Bug,Flying,411,80,52,50,90,50,89,6,False -667,Litleo,Fire,Normal,369,62,50,58,73,54,72,6,False -668,Pyroar,Fire,Normal,507,86,68,72,109,66,106,6,False -669,Flabébé,Fairy,,303,44,38,39,61,79,42,6,False -670,Floette,Fairy,,371,54,45,47,75,98,52,6,False -671,Florges,Fairy,,552,78,65,68,112,154,75,6,False -672,Skiddo,Grass,,350,66,65,48,62,57,52,6,False -673,Gogoat,Grass,,531,123,100,62,97,81,68,6,False -674,Pancham,Fighting,,348,67,82,62,46,48,43,6,False -675,Pangoro,Fighting,Dark,495,95,124,78,69,71,58,6,False -676,Furfrou,Normal,,472,75,80,60,65,90,102,6,False -677,Espurr,Psychic,,355,62,48,54,63,60,68,6,False -678,MeowsticMale,Psychic,,466,74,48,76,83,81,104,6,False -678,MeowsticFemale,Psychic,,466,74,48,76,83,81,104,6,False -679,Honedge,Steel,Ghost,325,45,80,100,35,37,28,6,False -680,Doublade,Steel,Ghost,448,59,110,150,45,49,35,6,False -681,AegislashBlade Forme,Steel,Ghost,520,60,150,50,150,50,60,6,False -681,AegislashShield Forme,Steel,Ghost,520,60,50,150,50,150,60,6,False -682,Spritzee,Fairy,,341,78,52,60,63,65,23,6,False -683,Aromatisse,Fairy,,462,101,72,72,99,89,29,6,False -684,Swirlix,Fairy,,341,62,48,66,59,57,49,6,False -685,Slurpuff,Fairy,,480,82,80,86,85,75,72,6,False -686,Inkay,Dark,Psychic,288,53,54,53,37,46,45,6,False -687,Malamar,Dark,Psychic,482,86,92,88,68,75,73,6,False -688,Binacle,Rock,Water,306,42,52,67,39,56,50,6,False -689,Barbaracle,Rock,Water,500,72,105,115,54,86,68,6,False -690,Skrelp,Poison,Water,320,50,60,60,60,60,30,6,False -691,Dragalge,Poison,Dragon,494,65,75,90,97,123,44,6,False -692,Clauncher,Water,,330,50,53,62,58,63,44,6,False -693,Clawitzer,Water,,500,71,73,88,120,89,59,6,False -694,Helioptile,Electric,Normal,289,44,38,33,61,43,70,6,False -695,Heliolisk,Electric,Normal,481,62,55,52,109,94,109,6,False -696,Tyrunt,Rock,Dragon,362,58,89,77,45,45,48,6,False -697,Tyrantrum,Rock,Dragon,521,82,121,119,69,59,71,6,False -698,Amaura,Rock,Ice,362,77,59,50,67,63,46,6,False -699,Aurorus,Rock,Ice,521,123,77,72,99,92,58,6,False -700,Sylveon,Fairy,,525,95,65,65,110,130,60,6,False -701,Hawlucha,Fighting,Flying,500,78,92,75,74,63,118,6,False -702,Dedenne,Electric,Fairy,431,67,58,57,81,67,101,6,False -703,Carbink,Rock,Fairy,500,50,50,150,50,150,50,6,False -704,Goomy,Dragon,,300,45,50,35,55,75,40,6,False -705,Sliggoo,Dragon,,452,68,75,53,83,113,60,6,False -706,Goodra,Dragon,,600,90,100,70,110,150,80,6,False -707,Klefki,Steel,Fairy,470,57,80,91,80,87,75,6,False -708,Phantump,Ghost,Grass,309,43,70,48,50,60,38,6,False -709,Trevenant,Ghost,Grass,474,85,110,76,65,82,56,6,False -710,PumpkabooAverage Size,Ghost,Grass,335,49,66,70,44,55,51,6,False -710,PumpkabooSmall Size,Ghost,Grass,335,44,66,70,44,55,56,6,False -710,PumpkabooLarge Size,Ghost,Grass,335,54,66,70,44,55,46,6,False -710,PumpkabooSuper Size,Ghost,Grass,335,59,66,70,44,55,41,6,False -711,GourgeistAverage Size,Ghost,Grass,494,65,90,122,58,75,84,6,False -711,GourgeistSmall Size,Ghost,Grass,494,55,85,122,58,75,99,6,False -711,GourgeistLarge Size,Ghost,Grass,494,75,95,122,58,75,69,6,False -711,GourgeistSuper Size,Ghost,Grass,494,85,100,122,58,75,54,6,False -712,Bergmite,Ice,,304,55,69,85,32,35,28,6,False -713,Avalugg,Ice,,514,95,117,184,44,46,28,6,False -714,Noibat,Flying,Dragon,245,40,30,35,45,40,55,6,False -715,Noivern,Flying,Dragon,535,85,70,80,97,80,123,6,False -716,Xerneas,Fairy,,680,126,131,95,131,98,99,6,True -717,Yveltal,Dark,Flying,680,126,131,95,131,98,99,6,True -718,Zygarde50% Forme,Dragon,Ground,600,108,100,121,81,95,95,6,True -719,Diancie,Rock,Fairy,600,50,100,150,100,150,50,6,True -719,DiancieMega Diancie,Rock,Fairy,700,50,160,110,160,110,110,6,True -720,HoopaHoopa Confined,Psychic,Ghost,600,80,110,60,150,130,70,6,True -720,HoopaHoopa Unbound,Psychic,Dark,680,80,160,60,170,130,80,6,True -721,Volcanion,Fire,Water,600,80,110,120,130,90,70,6,True From fc16a24019a1770f4633e114ee2de782f74ff0fa Mon Sep 17 00:00:00 2001 From: Rubens Date: Tue, 8 Sep 2020 19:54:57 -0300 Subject: [PATCH 3/5] new gitignore --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 929e349..75555e0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ *.ini -calc.py \ No newline at end of file +calc.py +.ipynb_checkpoints +.ipynb_checkpoints/* \ No newline at end of file From 4aa3e90023c60288af3811e355dd028fac05dc1d Mon Sep 17 00:00:00 2001 From: Rubens Date: Tue, 8 Sep 2020 19:56:35 -0300 Subject: [PATCH 4/5] remove ipynb --- .ipynb_checkpoints/Aula_1-checkpoint.ipynb | 874 --------------------- .ipynb_checkpoints/Aula_2-checkpoint.ipynb | 374 --------- .ipynb_checkpoints/Aula_3-checkpoint.ipynb | 522 ------------ .ipynb_checkpoints/Aula_4-checkpoint.ipynb | 766 ------------------ .ipynb_checkpoints/Aula_5-checkpoint.ipynb | 842 -------------------- 5 files changed, 3378 deletions(-) delete mode 100644 .ipynb_checkpoints/Aula_1-checkpoint.ipynb delete mode 100644 .ipynb_checkpoints/Aula_2-checkpoint.ipynb delete mode 100644 .ipynb_checkpoints/Aula_3-checkpoint.ipynb delete mode 100644 .ipynb_checkpoints/Aula_4-checkpoint.ipynb delete mode 100644 .ipynb_checkpoints/Aula_5-checkpoint.ipynb diff --git a/.ipynb_checkpoints/Aula_1-checkpoint.ipynb b/.ipynb_checkpoints/Aula_1-checkpoint.ipynb deleted file mode 100644 index e4c4839..0000000 --- a/.ipynb_checkpoints/Aula_1-checkpoint.ipynb +++ /dev/null @@ -1,874 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Aula 1" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "23.5 ['a', 'b', 'c', 'd', 'e'] range(1, 11)\n" - ] - } - ], - "source": [ - "# -*- coding: latin1 -*-\n", - "# Uma linha quebrada por contra-barra\n", - "a = 7 * 3 + \\\n", - "5 / 2\n", - "# Uma lista (quebrada por vírgula)\n", - "b = ['a', 'b', 'c',\n", - "'d', 'e']\n", - "# Uma chamada de função (quebrada por vírgula)\n", - "c = range(1,\n", - "11)\n", - "# imprime todos na tela\n", - "print (a, b, c)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### O erro ocorreu devido à diferença de versões do python. Criamos um código na versão 2 e executamos na versão 3." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "23.5 ['a', 'b', 'c', 'd', 'e'] range(1, 11)\n" - ] - } - ], - "source": [ - "# Uma linha quebrada por contra-barra\n", - "a = 7 * 3 + \\\n", - "5 / 2\n", - "# Uma lista (quebrada por vírgula)\n", - "b = ['a', 'b', 'c',\n", - "'d', 'e']\n", - "d = [1,2,3,4,\n", - " 5,6,7]\n", - "# Uma chamada de função (quebrada por vírgula)\n", - "c = range(1,\n", - "11)\n", - "# imprime todos na tela\n", - "print (a, b, c)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Comentários" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# comentário em apenas uma linha\n", - "# para cada linha preciso adicionar o identificador de comentário\n", - "\n", - "\"\"\"\n", - "Este é um exemplo de bloco de comentário\n", - "Comentário em mais de uma linha\n", - "É mais usado para Docstrings: documentação e teste do código em python\n", - "\n", - "Para saber mais, acesse: https://www.python.org/dev/peps/pep-0257/\n", - "\"\"\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Endentação" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Para i na lista 234, 654, 378, 798:\n", - "for i in [234, 654, 378, 798]:\n", - "# Se o resto da divisão por 3 for igual a zero:\n", - " if i % 3 == 0:\n", - " # Imprime...\n", - " print (i, '/ 3 =', i / 3)\n", - " if i % 2 == 0:\n", - " print('alugma coisa')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Atributos e Métodos" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "x = np.arange(10) \n", - "y = x.sum() #método\n", - "\n", - "x.argmax() # atributo - retorna o índice do maior valor no vetor" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(x)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Controle de Fluxo" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "temp = float(input('Entre com a temperatura: '))\n", - "if temp < 0:\n", - " print ('Congelando...')\n", - "elif (0.0 <= temp <= 20.0):\n", - " print ('Frio')\n", - "elif (21.0 <= temp <= 25.0):\n", - " print ('Normal')\n", - "elif (26 <= temp <= 35):\n", - " print ('Quente')\n", - "else:\n", - " print ('Muito quente!')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "x = 'verdadeiro' if 1>0 else 'falso'\n", - "x" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Laços" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# usando for\n", - "s = 0\n", - "for x in range(1, 100):\n", - " s = s + x\n", - "print (s)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "x = 1,2,3,4\n", - "s = 0,1,3,6" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# usando while\n", - "s = 0\n", - "x = 1\n", - "while x < 100:\n", - " s = s + x\n", - " x = x + 1\n", - "print (s)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Break, Continue e Pass" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "10\n", - "passou\n", - "sem pass\n", - "teste\n", - "9\n", - "passou\n", - "sem pass\n", - "teste\n", - "8\n", - "passou\n", - "sem pass\n", - "teste\n", - "7\n", - "passou\n", - "sem pass\n", - "teste\n", - "6\n", - "passou\n", - "sem pass\n", - "teste\n", - "5\n", - "passou\n", - "sem pass\n", - "teste\n", - "4\n", - "Volta pro inicio\n", - "3\n", - "passou\n", - "sem pass\n", - "teste\n", - "2\n", - "passou\n", - "sem pass\n", - "teste\n", - "1\n", - "passou\n", - "sem pass\n", - "teste\n", - "final\n" - ] - } - ], - "source": [ - "parada = 10\n", - "inicio = 0\n", - "\n", - "while parada > 0:\n", - " print(parada)\n", - " parada -= 1 # parada = parada - 1\n", - " if parada == -1:\n", - " break\n", - " elif parada ==3:\n", - " print('Volta pro inicio')\n", - " continue\n", - " else:\n", - " print('passou')\n", - " print(\"sem pass\")\n", - " print(\"teste\")\n", - "else:\n", - " print(\"final\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "parada = 10 9 8 7 6 5 4 3\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## TODO Section" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1.2345, 2.1234, 4.9876, 5.0912, 3.5687]\n" - ] - } - ], - "source": [ - "some_list = [1.2345, 2.1234, 4.9876, 5.0912, 3.5687]\n", - "i = 0\n", - "\n", - "for x in some_list:\n", - " some_list[i] = round(x, 2)\n", - " i += 1\n", - "print(some_list)\n", - "# TODO: utilizando a mesma variável, ajuste cada número para que este contenha apenas 2 números após a casa decimal\n", - "# Dica: https://docs.python.org/3/library/functions.html#round" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Número par encontrado: 2\n", - "Número par encontrado: 4\n", - "Número par encontrado: 6\n", - "Número par encontrado: 8\n", - "Número par encontrado: 10\n", - "Número 12 encontrado\n" - ] - } - ], - "source": [ - "# TODO: O laço a seguir percorre uma lista do número 2 até o número 15. \n", - "# Toda vez que um número par for encontrado, faça: print (\"Número par encontrado: \", num) e vá para o início do laço\n", - "# Ao encontrar o número 12, faça: print (\"Número 12 encontrado\"), e encerre o programa\n", - "\n", - "for i in range(2,15):\n", - " if(i == 12):\n", - " print(\"Número 12 encontrado\")\n", - " break\n", - " if(i % 2 == 0):\n", - " print(\"Número par encontrado:\", i)\n", - " continue" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Tipos de Dados" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print ('int(3.14) =', int(3.14)) # real para inteiro\n", - "print ('float(5) =', float(5)) # inteiro para real\n", - "print ('5.0 / 2 + 3 = ', 5.0 / 2 + 3) #Divisão que resulta em real\n", - "print ('5/4 ou 5.0/4.0 = ',5//4) #divisão sem resto\n", - "c = 4 + 3j #número complexo\n", - "print ('c =', c)\n", - "print ('Parte real:', c.real)\n", - "print ('Parte imaginária:', c.imag)\n", - "print ('Conjugado:', c.conjugate())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Strings" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "s = \"Camel\"\n", - "print ('The ' + s + ' run away!')\n", - "print ('tamanho de %s => %d' % (s, len(s))) # interpolação\n", - "for ch in s: print (ch)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print ('Agora são %02d:%02d.' % (8, 30))\n", - "print ('Percentagem: %.1f%%, Exponencial:%.2e' % (5.333, 0.00314)) #casa decimal e formatação\n", - "print ('Decimal: %d, Octal: %o, Hexadecimal: %x' % (10, 10, 10)) #bases numéricas" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "musicos = [('Page', 'guitarrista', 'Led Zeppelin'),\n", - "('Fripp', 'guitarrista', 'King Crimson'),\n", - "('x','y','z')]\n", - "\n", - "msg = '{0} é {1} do {2}'\n", - "\n", - "for nome, funcao, banda in musicos:\n", - " x = msg.format(nome, funcao, banda)\n", - " print(msg.format(nome, funcao, banda))\n", - " print(type(x))\n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Caracteres antecipados por \\ são interpretados como caracteres especiais; \n", - "# se você quer evitar isso, use raw strings, adicionando um r antes da primeira aspas\n", - "\n", - "print ('C:\\some\\name')\n", - "print (r'C:\\some\\name')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Listas" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# listas são objetos heterogêneos, ou seja, \n", - "# podem contem elementos de qualquer tipo,\n", - "# inclusive outras listas\n", - "\n", - "integer_list = [1, 2, 3]\n", - "heterogeneous_list = [\"string\", 0.1, True]\n", - "list_of_lists = [ integer_list, heterogeneous_list, [] ]\n", - "\n", - "print(integer_list)\n", - "print(heterogeneous_list)\n", - "print(list_of_lists)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "bandas = ['Queen','Led Zeppelin','Kansas','Europe','Guns N Roses']\n", - "\n", - "for banda in bandas:\n", - " print (banda)\n", - " \n", - "bandas.append('Bon Jovi') #adiciona ao fim da lista - inplace\n", - "bandas.remove('Europe') #remove\n", - "bandas.sort() #ordena\n", - "\n", - "print (bandas)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for i, banda in enumerate(bandas): \n", - " print (i + 1, '=>', banda)\n", - " \n", - "#filas e pilhas\n", - "while bandas:\n", - " print ('Saiu', bandas.pop(0), ', faltam', len(bandas))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Tuplas" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(5, 6, 4)\n", - "15\n", - "50\n", - "10\n" - ] - } - ], - "source": [ - "def soma_e_produto(x, y):\n", - " return (x + y),(x * y), x+x\n", - "sp = soma_e_produto(2, 3) # igual (5, 6)\n", - "s, p, _ = soma_e_produto(5, 10) # s é 15, p é 50\n", - "print(sp)\n", - "print(s)\n", - "print(p)\n", - "print(_)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Dicionários" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "carros = {'marca':'Ford','modelo':'Mustang','Ano':1964} #cria um dicionário\n", - "print(carros['modelo']) #imprime o valor da chave 'modelo'\n", - "print(carros.get('Ano')) #imprime usando método get\n", - "carros['Ano'] = 2018" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for x,y in carros.items():#imprimindo keys e values\n", - " print(x,y)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "carros['cor'] = 'preto' #inserindo nova key e value\n", - "\n", - "for x,y in carros.items():#repetindo após inserção\n", - " print(x,y)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "del carros['Ano'] #apagando key e value - \n", - "#pode ser usado os métodos pop e popitem - testar\n", - "print (carros) #imprime dicionário" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#Apagar dicionário\n", - "#del carros\n", - "#print(carros)\n", - "#esvaziar dicionário\n", - "carros.clear()\n", - "print(carros)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#criando a partir de um construtor\n", - "carros = dict(marca=['Ford','FIAT','Wolksvagem'],modelo=['Mustang','Palio','Gol'],Ano=[1964,2009,1990])\n", - "print(carros)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## DefaultDict" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "document = 'A Wikipédia é um projeto de enciclopédia colaborativa, universal e multilíngue estabelecido na internet sob o princípio wiki. \\\n", - "Tem como propósito fornecer um conteúdo livre, objetivo e verificável, que todos possam editar e melhorar. O projeto é definido pelos \\\n", - "princípios fundadores. O conteúdo é disponibilizado sob a licença Creative Commons BY-SA e pode ser copiado e reutilizado sob a mesma \\\n", - "licença — mesmo para fins comerciais — desde que respeitando os termos e condições de uso.'\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "word_counts = {}\n", - "for word in document.split(' '):\n", - " if word in word_counts:\n", - " word_counts[word] += 1\n", - " else:\n", - " word_counts[word] = 1" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "word_counts" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from collections import defaultdict\n", - "\n", - "word_counts = defaultdict(int) # int() produces 0\n", - "for word in document.split(' '):\n", - " word_counts[word] += 1" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "word_counts" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Counter" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from collections import Counter\n", - "c = Counter([0, 1, 2, 0]) \n", - "c" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "word_counts_counter = Counter(document.split(' '))\n", - "word_counts_counter" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## TODO Section" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1)\n", - "Escreva um programa que vá de 0 até 100. Toda vez que encontrar um número divisível por 5, \n", - "adicione esse número numa lista. Ao final, ordene a lista de forma descendente" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[100, 95, 90, 85, 80, 75, 70, 65, 60, 55, 50, 45, 40, 35, 30, 25, 20, 15, 10, 5, 0]\n" - ] - } - ], - "source": [ - "# Resposta 1\n", - "count = 0\n", - "multiplos5 = []\n", - "while (count <= 100):\n", - " if(count % 5 == 0):\n", - " multiplos5.append(count)\n", - " count += 1\n", - "multiplos5.sort(reverse=True)\n", - "print(multiplos5)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 2)\n", - "Conte a quantidade de cada caracter presente no texto abaixo:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Texto\n", - "\n", - "Brasil, oficialmente República Federativa do Brasil é o maior país da América do Sul e da região da América Latina, sendo o quinto maior do mundo em área territorial (equivalente a 47 porcento do território sul-americano) e sexto em população (com mais de 200 milhões de habitantes). É o único país na América onde se fala majoritariamente a língua portuguesa e o maior país lusófono do planeta, além de ser uma das nações mais multiculturais e etnicamente diversas, em decorrência da forte imigração oriunda de variados locais do mundo." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[('R', 1), ('F', 1), ('S', 1), ('L', 1), ('á', 1), ('4', 1), ('7', 1), ('-', 1), ('x', 1), ('2', 1), ('É', 1), ('j', 1), ('ê', 1), ('B', 2), ('ú', 2), ('b', 2), ('q', 2), ('(', 2), ('ó', 2), (')', 2), ('0', 2), ('h', 2), ('õ', 2), ('.', 2), ('A', 3), ('ã', 3), ('ç', 3), (',', 4), ('f', 4), ('v', 4), ('í', 4), ('g', 4), ('é', 5), ('p', 9), ('c', 14), ('u', 16), ('l', 18), ('n', 22), ('t', 22), ('s', 23), ('m', 24), ('d', 24), ('r', 31), ('i', 38), ('o', 40), ('e', 43), ('a', 56), (' ', 88)]\n" - ] - } - ], - "source": [ - "# Resposta 2\n", - "import operator\n", - "charCount = {}\n", - "texto = \"Brasil, oficialmente República Federativa do Brasil é o maior país da América do Sul e da região da América Latina, sendo o quinto maior do mundo em área territorial (equivalente a 47 porcento do território sul-americano) e sexto em população (com mais de 200 milhões de habitantes). É o único país na América onde se fala majoritariamente a língua portuguesa e o maior país lusófono do planeta, além de ser uma das nações mais multiculturais e etnicamente diversas, em decorrência da forte imigração oriunda de variados locais do mundo.\"\n", - "for ch in texto: \n", - " if ch in charCount:\n", - " charCount[ch] += 1\n", - " else:\n", - " charCount[ch] = 1\n", - "#print(charCount)\n", - "sortChar = sorted(charCount.items(), key=operator.itemgetter(1))\n", - "print(sortChar)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 3)\n", - "Solicite ao usuário uma string e um número inteiro. Armaze ambos em variáveis. Remova da string os caracteres de 0 até n e imprima a string resultante" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdin", - "output_type": "stream", - "text": [ - "Digite um texto teste\n", - "Digite um número 3\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "te\n" - ] - } - ], - "source": [ - "# Resposta 3\n", - "texto = input(\"Digite um texto\")\n", - "numero = int(input(\"Digite um número\"))\n", - "\n", - "print(texto[numero:])\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/.ipynb_checkpoints/Aula_2-checkpoint.ipynb b/.ipynb_checkpoints/Aula_2-checkpoint.ipynb deleted file mode 100644 index cef8d41..0000000 --- a/.ipynb_checkpoints/Aula_2-checkpoint.ipynb +++ /dev/null @@ -1,374 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Aula 2" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Funções" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#implementação recursiva\n", - "def fatorial(num):\n", - " \"\"\"\n", - " Esta função calcula o fatorial de um número\n", - " usando implementação recursiva\n", - " \n", - " args: num (int) - número a partir do qual \n", - " será calculado o fatorial\n", - " \n", - " return: o fatorial de num\n", - " \"\"\"\n", - " if (num <= 1):\n", - " return 1\n", - " else:\n", - " return(num * fatorial(num - 1))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "y = fatorial(5)\n", - "y" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Verifica se um número é par\n", - "def numero_par(num):\n", - " resto = num % 2\n", - " if (resto == 0):\n", - " return True\n", - " else:\n", - " return False" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(numero_par(4))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## TODO Section" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1)\n", - "TODO: Crie uma função que retorne na forma de um dicionário as seguintes informações do texto abaixo: \n", - "número de palavras, número de números e número de frases.\n", - "\n", - "Dica: a função isdigit() pode ser útil para determinar o tipo de \n", - "caracter;\n", - "Dica: split() usa um caracter (a ser inserido dentro dos parenteses) para separar uma string" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Texto\n", - "\n", - "Brasil, oficialmente República Federativa do Brasil é o maior país da América do Sul e da região da América Latina, sendo o quinto maior do mundo em área territorial (equivalente a 47 porcento do território sul-americano) e sexto em população (com mais de 200 milhões de habitantes). É o único país na América onde se fala majoritariamente a língua portuguesa e o maior país lusófono do planeta, além de ser uma das nações mais multiculturais e etnicamente diversas, em decorrência da forte imigração oriunda de variados locais do mundo." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Resposta 1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 2)\n", - "\n", - "TODO: implemente uma função que recebe uma lista com 100 números, de 0 a 99, e retorne outra lista contendo apenas números primos" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Resposta 2\n", - "import numpy as np\n", - "np.arange()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Chamando um módulo" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import calc\n", - "l = [23, 54, 31, 77, 12, 34]\n", - "print (calc.media(l))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Arquivos e I/O" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "# Criando um objeto do tipo file\n", - "temp = open('temp.txt', 'w')\n", - "# Escrevendo no arquivo\n", - "for i in range(100):\n", - " temp.write('%03d\\n' % i)\n", - "# Fechando\n", - "temp.close()\n", - "temp = open('temp.txt')\n", - "# Escrevendo no terminal\n", - "for x in temp:\n", - " # Escrever em sys.stdout envia o texto para a saída padrão\n", - " sys.stdout.write(x)\n", - "temp.close()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "import os.path\n", - "# input() retorna a string digitada\n", - "fn = input('Nome do arquivo: ').strip() #remove espaço em branco extra do nome do arquivo\n", - "if not os.path.exists(fn):\n", - " print ('Tente outra vez...')\n", - " sys.exit() # pare a execução do programa\n", - "# Numerando as linhas\n", - "for i, s in enumerate(open(fn)):\n", - " print (i + 1, s,)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Imprime uma lista contendo linhas do arquivo\n", - "print (open('temp.txt').readlines())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Trabalhando com Tempo" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import time\n", - "print (time.localtime()) #imprime como uma estrutura\n", - "print (time.asctime()) #imprime como string\n", - "for x in range(5):\n", - " time.sleep(3)\n", - " print('Espera 3 segundos e imprime na tela\\n')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "start_time = time.time()\n", - "x = 0\n", - "for i in range(0,1000000):\n", - " x += i\n", - "end_time = time.time()\n", - "\n", - "print(x)\n", - "print('tempo decorrido: ',end_time-start_time, 'segundos')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import datetime\n", - "from datetime import timedelta\n", - "\n", - "dt = datetime.datetime(2020, 12, 31, 23, 59, 59) #criando uma data com horário\n", - "\n", - "data = dt.date() #retorna a data\n", - "hora = dt.time() #retorna o horário\n", - "\n", - "dd = dt - dt.today() #cálculo de tempo\n", - "print ('Data:', data)\n", - "print ('Hora:', hora)\n", - "print ('Quanto tempo falta para 31/12/2020:', dd)\n", - "print ('1 ano a partir de agora será: '+ str(datetime.datetime.now() + timedelta(days=365)))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Regex - Expressões Regulares" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import re\n", - "rex = re.compile('\\w+') #qualquer caracter alfanumérico - compilado\n", - "bandas = 'Queen, Aerosmith & Beatles'\n", - "print (bandas, '->', rex.findall(bandas))\n", - "phone = \"2004-959-559 # This is Phone Number\"\n", - "num = re.sub('#.*$', \"\", phone) #elimina tudo após #\n", - "print (\"Phone Num : \", num)\n", - "num = re.sub(r'\\D', \"\", phone)# só deixa número\n", - "print (\"Phone Num : \", num)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Exceções" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "try:\n", - " print(1/0)\n", - "except ZeroDivisionError:\n", - " print('Erro ao tentar dividir por zero')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## TODO Section" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 3)\n", - "Crie uma função que receba uma data no formato yyyy-mm-dd e, usando Regex,retorne essa data no formato dd-mm-yyyy" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Resposta" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 4)\n", - "\n", - "Escreva uma função que receba duas datas (formato datetime '%Y-%m-%d %H:%M:%S') e retorne a diferença entre elas em dias, horas, minutos e segundos\n", - "\n", - "Dica: a função divmod() pode ser útil: [link](https://www.programiz.com/python-programming/methods/built-in/divmod)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Resposta" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.5" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/.ipynb_checkpoints/Aula_3-checkpoint.ipynb b/.ipynb_checkpoints/Aula_3-checkpoint.ipynb deleted file mode 100644 index c02a35c..0000000 --- a/.ipynb_checkpoints/Aula_3-checkpoint.ipynb +++ /dev/null @@ -1,522 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Programação Funcional" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Lambda" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "4\n", - "6\n" - ] - } - ], - "source": [ - "quadrado = lambda num: num ** 2\n", - "multiplicacao = lambda x,y: x*y\n", - "\n", - "print(quadrado(2))\n", - "print(multiplicacao(2,3))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Map" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1.0, 2.0, 3.0, 4.0, 5.0]\n" - ] - } - ], - "source": [ - "import math\n", - "lista1 = [1, 4, 9, 16, 25]\n", - "lista2 = map(math.sqrt, lista1)\n", - "print(list(lista2))" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0.0, 0.3010299956639812, 0.47712125471966244, 0.6020599913279624, 0.6989700043360189, 0.7781512503836436, 0.8450980400142568, 0.9030899869919435, 0.9542425094393249, 1.0, 1.0413926851582251, 1.0791812460476249]\n", - "[0.3333333333333333, 0.6666666666666666, 1.0, 1.3333333333333333, 1.6666666666666667, 2.0, 2.3333333333333335, 2.6666666666666665, 3.0, 3.3333333333333335, 3.6666666666666665, 4.0]\n" - ] - } - ], - "source": [ - "nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]\n", - "from math import log10\n", - "print (list(map(log10, nums)))\n", - "print (list(map(lambda x: x / 3, nums)))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Reduce" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "4950\n", - "102\n" - ] - } - ], - "source": [ - "from functools import reduce\n", - "nums = range(100)\n", - "print (reduce(lambda x, y: x + y, nums))\n", - "\n", - "f = lambda a,b: a if (a > b) else b\n", - "print(reduce(f, [47,11,42,102,13]))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Filter" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 3, 5, 7]\n", - "[-5, -4, -3, -2, -1]\n" - ] - } - ], - "source": [ - "x = [1,2,3,4,5,6,7]\n", - "print (list(filter(lambda x: x % 2, x)))\n", - "\n", - "number_list = range(-5, 5)\n", - "less_than_zero = list(filter(lambda x: x < 0, number_list))\n", - "print(less_than_zero)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Transposição" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[(1, 4), (2, 5), (3, 6)]\n", - "[(1, 4, 7), (2, 5, 8), (3, 6, 9)]\n" - ] - } - ], - "source": [ - "x = [1, 2, 3]\n", - "y = [4, 5, 6, 9, 0]\n", - "print (list(zip(x, y)))\n", - "\n", - "matriz = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] \n", - "print (list(zip(*matriz))) #Descompacta e depois faz a transposição" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### List Comprehension" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]\n" - ] - } - ], - "source": [ - "S = [x*2 for x in range(0, 10)]\n", - "print(S)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 9, 25, 49, 81, 121]\n" - ] - } - ], - "source": [ - "nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]\n", - "print ([ x**2 for x in nums if x % 2 ])" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[['Um', 'UM', 2], ['Dois', 'DOIS', 4], ['Tres', 'TRES', 4]]" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "[[s.capitalize(), s.upper(), len(s)] for s in ['um', 'dois', 'tres']]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## TODO Section" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1)\n", - "A amplitude de um vetor 3D é dado pela seguinte fórmula: $\\sqrt{x^2 + y^2 + z^2}$\n", - "\n", - "Escreva uma função, usando lambda, que calcule a amplitude de qualquer vetor. Exemplo de entrada:\n", - "\n", - " -> (1,1,1) \n", - " -> (3,4,5)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# resposta" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2) \n", - "Use reduce para criar uma função que calcule o fatorial de qualquer número n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# resposta" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Orientação à Objetos" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "#Abstração\n", - "class SomeClass: \n", - " def create_arr(self):\n", - " self.arr = []\n", - " \n", - " def insert_to_arr(self, value): \n", - " self.arr.append(value)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[5]" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Instanciamento\n", - "obj = SomeClass()\n", - "obj.create_arr()\n", - "obj.insert_to_arr(5)\n", - "obj.arr" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "#definição da classe\n", - "class Set:\n", - " # Funções membras\n", - " # self se refere ao objeto Set que está sendo usado\n", - " def __init__(self, values=None):\n", - " \"\"\"\n", - " Este é o construtor\n", - " Ele é chamado quando você cria um novo Set;\n", - " Deve ser usado da seguinte maneira:\n", - " s1 = Set() # set vazio\n", - " s2 = Set([1,2,2,3]) #inicializa com valores\n", - " \"\"\"\n", - " self.dict = {} # cada instância de um Set possui seu próprio dicionário\n", - " # que será usado para rastrear membresia\n", - " if values is not None:\n", - " for value in values:\n", - " self.add(value)\n", - " def __repr__(self):\n", - " \"\"\"\n", - " Esta é a representação de um objeto Set por meio de uma string\n", - " \"\"\"\n", - " return \"Set: \" + str(self.dict.keys())\n", - " \n", - " # vamos representar membresia como sendo uma chave no self.dict com valor True\n", - " def add(self, value):\n", - " self.dict[value] = True\n", - " \n", - " # valor está no Set se ele é uma chave no dicionário\n", - " def contains(self, value):\n", - " return value in self.dict\n", - " \n", - " def remove(self, value):\n", - " del self.dict[value]" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Set: dict_keys([1, 2, 3])" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "s = Set([1,2,3,2,3,1])\n", - "s" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "True\n", - "False\n" - ] - } - ], - "source": [ - "s.add(4)\n", - "print (s.contains(4)) # True\n", - "s.remove(3)\n", - "print (s.contains(3)) # False" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Bem-vindo João Silva à turma de 2020\n" - ] - } - ], - "source": [ - "class Person:\n", - " def __init__(self, fname, lname):\n", - " self.firstname = fname\n", - " self.lastname = lname\n", - " \n", - " def printname(self):\n", - " print(self.firstname, self.lastname)\n", - "\n", - "class Student(Person):\n", - " def __init__(self, fname, lname, year):\n", - " super().__init__(fname, lname)\n", - " self.graduationyear = year\n", - "\n", - " def welcome(self):\n", - " print(\"Bem-vindo\", self.firstname, self.lastname, \"à turma de\", self.graduationyear)\n", - "\n", - "x = Student(\"João\", \"Silva\", 2020)\n", - "x.welcome()\n" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "João Silva\n" - ] - } - ], - "source": [ - "x.printname()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## TODO Section" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3)\n", - "Crie uma classe que irá modelar características geométricas de um círculo. Deverá implementar os métodos:\n", - "\n", - " -> Área \n", - " -> Perímetro\n", - " \n", - "Utilize atributos de classe e de instância apropriados. Crie um inicializador e métodos.\n", - "\n", - "$area = \\pi*r^2$\n", - "\n", - "$perimetro = 2*\\pi*r$" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Resposta" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.5" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/.ipynb_checkpoints/Aula_4-checkpoint.ipynb b/.ipynb_checkpoints/Aula_4-checkpoint.ipynb deleted file mode 100644 index dd7afaa..0000000 --- a/.ipynb_checkpoints/Aula_4-checkpoint.ipynb +++ /dev/null @@ -1,766 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Numpy" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "list1 = [0,1,2,3,4]\n", - "arr1d = np.array(list1)\n", - "# principal diferença entre list e array\n", - "print(arr1d + 2)\n", - "print(list1 + 2) # erro" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "x = [1,2,3,4.5,5.7]\n", - "print('--------- lists ----------\\n')\n", - "print(type(x))\n", - "print(x)\n", - "print(type(x[1]))\n", - "print(type(x[4]))\n", - "print('\\n')\n", - "print('--------- array ----------\\n')\n", - "y = np.array(x)\n", - "print(type(y))\n", - "print(y)\n", - "print(type(y[1]))\n", - "print(type(y[4]))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## ndarray" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "data1 = [6,7.5,8,0,1]\n", - "arr1 = np.array(data1)\n", - "arr1" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(arr1.shape)\n", - "print(arr1.dtype)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "data2 = [[1, 2, 3, 4], [5, 6, 7, 8]]\n", - "arr2 = np.array(data2)\n", - "print(arr2)\n", - "print(arr2.ndim)\n", - "print(arr2.shape)\n", - "print(arr2.dtype)\n", - "print(arr2.size)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "data3 = np.zeros(10)\n", - "data4 = np.ones(10)\n", - "data5 = np.empty([2,2])\n", - "print(data3)\n", - "print(data4)\n", - "print(data5)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "data6 = np.arange(15)\n", - "print(data6)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "data7 = np.eye(5)\n", - "print(data7)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "arr1 = np.array([1, 2, 3], dtype=np.float64)\n", - "print(arr1.dtype)\n", - "arr2 = np.array([1, 2], dtype=np.int32)\n", - "print(arr2.dtype)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "arr1 + arr2" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "arr = np.array([1, 2, 3, 4, 5])\n", - "print(arr.dtype)\n", - "float_arr = arr.astype(np.float64)\n", - "print(float_arr.dtype)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "arr2 = np.array([3.7, -1.2, -2.6, 0.5, 12.9, 10.1])\n", - "print(arr2)\n", - "arr2.astype(np.int32)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "numeric_strings = np.array(['1.25', '-9.6', '42'], dtype=np.string_)\n", - "numeric_strings.astype(float)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Operações entre arrays e escalares" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "arr3 = np.array([[1., 2., 3.], [4., 5., 6.]])\n", - "print(arr3)\n", - "print('Multiplicação: \\n',arr3 * arr3)\n", - "print('Subtração: \\n',arr3 - arr3)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "arr3 = np.array([[1., 2., 3.], [4., 5., 6.]])\n", - "print(arr3)\n", - "print('Escalar dividindo array: \\n',1/arr3)\n", - "print('Tirando raiz quadrada do Array: \\n',arr3 ** 0.5)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Indexação e Fatiamento" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "arr = [2,14,3,6,8,3,10,222,4]\n", - "arr = np.array(arr)\n", - "print(arr)\n", - "print(arr[5])\n", - "print(arr[5:8])\n", - "arr[5:8] = 12 #broadcast\n", - "print(arr)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "arr_slice = arr[5:8]\n", - "print(arr_slice)\n", - "arr_slice[1] = 12345\n", - "print(arr_slice)\n", - "print(arr)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "arr2 = arr[5:8].copy()\n", - "arr2[0] = 98\n", - "print(arr2)\n", - "print(arr)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])\n", - "print(arr2d[2])\n", - "print(arr2d[0][2]) #igual a print(arr2d[0, 2])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(arr2d[:2, 1:])\n", - "print(arr2d[1, :2])\n", - "print(arr2d[:, :1])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## TODO" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1)\n", - "\n", - "Seja um array, A = [10,3,7,5,8,23,15] e dois escalares, x = 6, y = 20. \n", - "\n", - "Crie uma função que retorne um novo array contendo elementos no intervalo [6,20]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Resposta" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2)\n", - "\n", - "Escreva um programa usando Numpy que adiciona os valores de um vetor a cada linha de uma matriz. \n", - "\n", - "Obs: o tamanho do vetor tem de ser o mesmo da quantidade de linhas\n", - "\n", - "vetor = [ 1 1 0]\n", - "\n", - "matriz = [1 2 3; 4 5 6; 7 8 9]\n", - "\n", - "resultado = [2 3 3; 5 6 6; 8 9 9]\n", - "\n", - "\n", - "Essa função pode ajudar: np.empty_like() " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Resposta" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Transposição" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "arr = np.arange(15).reshape((3, 5))\n", - "print(arr)\n", - "print(arr.T)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Flattening" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print('----- flatten() -----\\n')\n", - "print(arr2d.flatten())\n", - "b1 = arr2d.flatten() \n", - "b1[0] = 100\n", - "print(arr2d,'\\n')\n", - "print('----- ravel() -----\\n')\n", - "b2 = arr2d.ravel() \n", - "b2[0] = 101\n", - "print(arr2d)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Funções Universais" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "arr = np.arange(10)\n", - "print(arr)\n", - "print(np.sqrt(arr)) #raiz quadrada\n", - "np.exp(arr) #e^x" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Localização baseada em Condição e Métodos Estatísticos" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "xarr = np.array([1.1, 1.2, 1.3, 1.4, 1.5])\n", - "yarr = np.array([2.1, 2.2, 2.3, 2.4, 2.5])\n", - "cond = np.array([True, False, True, True, False])\n", - "import timeit" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "result = [(x if c else y) for x, y, c in zip(xarr, yarr, cond)]\n", - "result" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "result = np.where(cond, xarr, yarr)\n", - "result" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "arr = np.random.randn(4, 4)\n", - "print(arr)\n", - "print(np.where(arr > 0, 2, -2)) # atribui 2 p/ x>0, -2 caso contrário\n", - "print(np.where(arr > 0, 2, arr)) # atribui 2 p/ x>0, mantém original caso contrário" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "arr = np.random.randn(5, 4)\n", - "print(arr)\n", - "print(arr.mean()) #ou np.mean(arr)\n", - "print(arr.sum())\n", - "print(arr.mean(axis=1))\n", - "print(arr.sum(0))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Álgebra Linear" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "x = np.array([[1., 2., 3.], [4., 5., 6.]])\n", - "y = np.array([[6., 23.], [-1, 7], [8, 9]])\n", - "print(x)\n", - "print(y)\n", - "z = np.matmul(x,y) #igual aa np.dot(x,y)\n", - "print(z)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "from numpy.linalg import inv\n", - "X = np.random.randn(5, 5)\n", - "print(X)\n", - "mat = np.matmul(X.T,X) #transposta * X\n", - "print(mat)\n", - "print(inv(mat)) #inversa" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Geração de Números Aleatórios" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Você pode ver todas as distribuições nesse link: [numpy random](https://docs.scipy.org/doc/numpy-1.14.0/reference/routines.random.html)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# gera 4 números aleatórios\n", - "# entre [0.0,1.0)\n", - "samples = np.random.random(4)\n", - "samples" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# A geração de números é determinística\n", - "# Ou seja, é baseada num estado interno\n", - "# que chamamos de seed\n", - "np.random.seed(42) # set seed\n", - "print(np.random.random())\n", - "np.random.seed(42) # reset seed\n", - "print(np.random.random())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# shuffle reordena um array\n", - "# é muito usado antes do processo\n", - "# de treino de algoritmo de ML\n", - "x = np.arange(10)\n", - "np.random.shuffle(x)\n", - "x" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Vectorize" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def modulo(x):\n", - " if x % 2 == 1:\n", - " return x**2\n", - " else:\n", - " return x/2\n", - " \n", - "print('x = 10 retorna ', modulo(10))\n", - "print('x = 11 retorna ', modulo(11))\n", - "print('x = [10, 11, 12] retorna ', modulo([10, 11, 12])) # Erro" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "modulo_vect = np.vectorize(modulo, otypes=[float])\n", - "\n", - "print('x = [10, 11, 12] retorna ', modulo_vect([10, 11, 12]))\n", - "print('x = [[10, 11, 12], [1, 2, 3]] retorna ', modulo_vect([[10, 11, 12], [1, 2, 3]]))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Aplicar uma função – coluna ou linha" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#criando matriz\n", - "np.random.seed(100)\n", - "arr_x = np.random.randint(1,10,size=[4,10])\n", - "arr_x" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#função que calcula diferença\n", - "def max_minus_min(x):\n", - " return np.max(x) - np.min(x)\n", - "\n", - "# aplicando nas linhas\n", - "print('Por linha: ', np.apply_along_axis(max_minus_min, 1, arr=arr_x))\n", - "\n", - "# aplicando nas colunas\n", - "print('Por coluna: ', np.apply_along_axis(max_minus_min, 0, arr=arr_x))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Outros Métodos" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "bools = np.array([False, False, True, False])\n", - "print(bools.any()) # se houver pelo menos um True\n", - "print(bools.all()) # se todos forem True" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "arr = np.random.randn(8)\n", - "print(arr)\n", - "arr.sort() #in-place\n", - "print(arr)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])\n", - "print(np.unique(names))\n", - "ints = np.array([3, 3, 3, 2, 2, 1, 1, 4, 4])\n", - "print(np.unique(ints))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "values = np.array([6, 0, 0, 3, 2, 5, 6])\n", - "np.in1d(values, [2, 3, 6])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## TODO Section" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 3)\n", - "Suponha dois arrays, A = [1,4,2,6,5,7,3,0] e B = [3,2,0,9,8,7]. \n", - "\n", - "Remove de A todo elemento pertencente a B\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# resposta" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 4)\n", - "\n", - "A célula abaixo faz o download de um dataset e armazena na variável iris_2d. Em seguida, substitui alguns de seus elementos por NaN. Resolva as questões que se seguem:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'\n", - "iris_2d = np.genfromtxt(url, delimiter=',', dtype='float', usecols=[0,1,2,3])\n", - "iris_2d[np.random.randint(150, size=20), np.random.randint(4, size=20)] = np.nan" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "a) Encontre o número de NaN na primeira coluna\n", - "\n", - "b) Encontre o número total de NaN\n", - "\n", - "c) Encontre as posições (número da linha) de NaN na primeira coluna\n", - "\n", - "d) Substitua todos os NaN por 0" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Resposta" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.5" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/.ipynb_checkpoints/Aula_5-checkpoint.ipynb b/.ipynb_checkpoints/Aula_5-checkpoint.ipynb deleted file mode 100644 index cb012e2..0000000 --- a/.ipynb_checkpoints/Aula_5-checkpoint.ipynb +++ /dev/null @@ -1,842 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Pandas" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Estrutura de Dados" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from pandas import Series, DataFrame\n", - "import pandas as pd\n", - "obj = Series([4, 7, -5, 3])\n", - "obj" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(obj.values)\n", - "print(obj.index) #obj.index.values" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "obj2 = Series([4, 7, -5, 3], index=['d', 'b', 'a', 'c'])\n", - "obj2" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "print(obj2[(obj2 > 0) & (obj2 < 5)])\n", - "print(obj2 * 2)\n", - "print(np.exp(obj2))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}\n", - "obj3 = Series(sdata)\n", - "obj3" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "states = ['Oregon', 'Texas','California', 'Ohio']\n", - "obj4 = Series(sdata, index=states)\n", - "obj4" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(pd.isnull(obj4)) # == obj4.isnull()\n", - "print(pd.notnull(obj4))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(obj3)\n", - "print(obj4)\n", - "obj3 + obj4" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "obj4.name = 'population'\n", - "obj4.index.name = 'state'\n", - "obj4" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "obj.index = ['Bob', 'Steve', 'Jeff', 'Ryan']\n", - "obj" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],\n", - " 'year': [2000, 2001, 2002, 2001, 2002],\n", - " 'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}\n", - "df = DataFrame(data)\n", - "df" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df2 = DataFrame(data, columns=['year', 'state', 'pop', 'debt'],\n", - " index=['one', 'two', 'three', 'four', 'five'])\n", - "df2" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(df['state'])\n", - "print(df.year)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(df2.loc['four']) #label\n", - "print(df.iloc[0]) #int" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df2['debt'] = np.arange(5)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "val = Series([-1.2, -1.5, -1.7], index=['two', 'four', 'five'])\n", - "df2['debt'] = val\n", - "df2" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df2['eastern'] = df2.state == 'Ohio'\n", - "df2" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "del df2['eastern']\n", - "df2" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df.values" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "obj = Series(range(3), index=['a', 'b', 'c'])\n", - "obj.index.values" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print('state' in df2.columns)\n", - "print(0 in df.index)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Aplicação de Função e Mapeamento" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "from pandas import Series, DataFrame\n", - "import numpy as np" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df = DataFrame(np.random.randn(4, 3), columns=list('bde'),\n", - " index=['Utah', 'Ohio', 'Texas', 'Oregon'])\n", - "np.abs(df) #retorna valor absoluto" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "f = lambda x: x.max() - x.min()\n", - "print(df.apply(f))\n", - "print(df.apply(f, axis=1))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def f2(x):\n", - " return Series([x.min(), x.max()], index=['min', 'max'])\n", - "\n", - "df.apply(f2)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "format2 = lambda x: '%.2f' % x\n", - "df.applymap(format2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Ordenação e Ranking" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "obj = Series(range(4), index=['d', 'a', 'b', 'c'])\n", - "df2 = DataFrame(np.arange(8).reshape((2, 4)), index=['three', 'one'],\n", - " columns=['d', 'a', 'b', 'c'])\n", - "print(obj)\n", - "print(df2)\n", - "print(obj.sort_index())\n", - "print(df2.sort_index())\n", - "print(df2.sort_index(axis=1))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "obj = Series([4, 7, -3, 2])\n", - "obj.sort_values() #igual para pandas" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df3 = DataFrame({'b': [4, 7, -3, 2], 'a': [0, 1, 0, 1]})\n", - "print(df3)\n", - "print(df3.sort_index(by='b'))\n", - "print(df3.sort_index(by=['a','b']))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "data = {'name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'], \n", - " 'nota': [8, 7, 7.5, 10, 5]}\n", - "df4 = DataFrame(data)\n", - "print(df4)\n", - "df4['rank'] = df4['nota'].rank(ascending=0)\n", - "df4.sort_values('rank')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Sumarização e Estatística Descritiva" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df5 = DataFrame([[1.4, np.nan], [7.1, -4.5],\n", - " [np.nan, np.nan], [0.75, -1.3]],\n", - " index=['a', 'b', 'c', 'd'],\n", - " columns=['one', 'two'])\n", - "print(df5)\n", - "print(df5.sum())\n", - "print(df5.sum(axis=1))\n", - "print(df5.count())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df5.describe()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "obj = Series(['c', 'a', 'd', 'a', 'a', 'b', 'b', 'c', 'c'])\n", - "uniques = obj.unique()\n", - "uniques" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "mask = obj.isin(['b', 'c'])\n", - "mask" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Manipulação de Valores Faltantes " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "string_data = Series(['laranja', 'uva', np.nan, 'abacate'])\n", - "print(string_data)\n", - "print(string_data.isnull())\n", - "string_data[0] = None\n", - "print(string_data.isnull())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "data = DataFrame([[1., 6.5, 3.], [1., np.nan, np.nan],\n", - " [np.nan, np.nan, np.nan], [np.nan, 6.5, 3.]])\n", - "print(data)\n", - "cleaned = data.dropna()\n", - "print('\\n',cleaned)\n", - "data.dropna(how='all')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(data.fillna(0))\n", - "print(data.fillna(data.mean()))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## TODO Section" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Manipulação de DataFrame\n", - "\n", - " > Crie, a partir do dicionário abaixo, um DataFrame cujo index seja os valores da variável labels\n", - " > encontre a média dos valores da coluna age e preencha os valores faltantes dessa coluna com o valor da média\n", - " > crie uma nova coluna chamada 'rank', que mostre os animais que receberam mais visitas\n", - " > qual o animal que recebeu a maior quantidade de visitas?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "data = {'animal': ['cat', 'cat', 'snake', 'dog', 'dog', 'cat', 'snake', 'cat', 'dog', 'dog'],\n", - " 'age': [2.5, 3, 0.5, np.nan, 5, 2, 4.5, np.nan, 7, 3],\n", - " 'visits': [1, 3, 2, 3, 2, 3, 1, 1, 2, 1],\n", - " 'priority': ['yes', 'yes', 'no', 'yes', 'no', 'no', 'no', 'yes', 'no', 'no']}\n", - "\n", - "labels = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# TODO: sua resposta aqui\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Carregamento e Armazenamento de Dados\n", - "\n", - "### Arquivo CSV" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "poke = pd.read_csv('bases/Pokemon.csv')\n", - "poke.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Arquivo JSON" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "obj = \"\"\"\n", - "{\"name\": \"Wes\",\n", - "\"places_lived\": [\"United States\", \"Spain\", \"Germany\"],\n", - "\"pet\": null,\n", - "\"siblings\": [{\"name\": \"Scott\", \"age\": 25, \"pet\": \"Zuko\"},\n", - "{\"name\": \"Katie\", \"age\": 33, \"pet\": \"Cisco\"}]\n", - "}\n", - "\"\"\"\n", - "print(type(obj))\n", - "print(obj)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import json\n", - "result = json.loads(obj)\n", - "result" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "asjson = json.dumps(result)\n", - "print(type(asjson))\n", - "asjson" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "siblings = pd.DataFrame(result['siblings'], columns=['name', 'age'])\n", - "siblings" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### SQL" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import sqlite3\n", - "query = \"\"\"\n", - "CREATE TABLE test\n", - "(a VARCHAR(20), b VARCHAR(20),\n", - "c REAL, d INTEGER\n", - ");\"\"\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "con = sqlite3.connect(':memory:')\n", - "con.execute(query)\n", - "con.commit()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "data = [('Atlanta', 'Georgia', 1.25, 6),\n", - "('Tallahassee', 'Florida', 2.6, 3),\n", - "('Sacramento', 'California', 1.7, 5)]\n", - "stmt = \"INSERT INTO test VALUES(?, ?, ?, ?)\"\n", - "con.executemany(stmt, data)\n", - "con.commit()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "cursor = con.execute('select * from test')\n", - "rows = cursor.fetchall()\n", - "rows" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(cursor.description)\n", - "pd.DataFrame(rows, columns=list(zip(*cursor.description))[0])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas.io.sql as sql\n", - "sql.read_sql_query('select * from test', con)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Combinação de Dados" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df1 = pd.DataFrame({'key': ['b', 'b', 'a', 'c', 'a', 'a', 'b'],\n", - " 'data1': range(7)})\n", - "\n", - "df2 = pd.DataFrame({'key': ['a', 'b', 'd','b'],\n", - " 'data2': range(4)})\n", - "\n", - "pd.merge(df1,df2,on='key') #default inner" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df3 = pd.DataFrame({'lkey': ['b', 'b', 'a', 'c', 'a', 'a', 'b'],\n", - " 'data1': range(7)})\n", - "\n", - "df4 = pd.DataFrame({'rkey': ['a', 'b', 'd'],\n", - " 'data2': range(3)})\n", - "pd.merge(df3, df4, left_on='lkey', right_on='rkey')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "pd.merge(df3, df4, how='outer',left_on='lkey',right_on='rkey')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "left = pd.DataFrame({'key1': ['foo', 'foo', 'bar'],\n", - " 'key2': ['one', 'two', 'one'],\n", - " 'lval': [1, 2, 3]})\n", - "right = pd.DataFrame({'key1': ['foo', 'foo', 'bar', 'bar'],\n", - " 'key2': ['one', 'one', 'one', 'two'],\n", - " 'rval': [4, 5, 6, 7]})\n", - "pd.merge(left, right, on=['key1', 'key2'], how='outer')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "arr = np.arange(12).reshape((3, 4))\n", - "print(arr)\n", - "np.concatenate([arr, arr], axis=1)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "s1 = pd.Series([0, 1], index=['a', 'b'])\n", - "s2 = pd.Series([2, 3, 4], index=['c', 'd', 'e'])\n", - "s3 = pd.Series([5, 6], index=['f', 'g'])\n", - "pd.concat([s1, s2, s3])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df1 = pd.DataFrame(np.arange(6).reshape(3, 2), \n", - " index=['a', 'b', 'c'],\n", - " columns=['one', 'two'])\n", - "df2 = pd.DataFrame(5 + np.arange(4).reshape(2, 2), \n", - " index=['a', 'c'],\n", - " columns=['three', 'four'])\n", - "print(df1)\n", - "print(df2)\n", - "pd.concat([df1, df2], axis=1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## TODO Section" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Manipulação de Dados usando Pandas\n", - "\n", - "Usando o dataset Pokemon.csv, faça:\n", - "\n", - " 1) Verifique em qual(is) coluna(s) existem valores faltantes\n", - " 2) Preencha os valores faltantes da coluna Type 2 com os valores correspondentes da coluna Type 1\n", - " 3) Crie um DataFrame a partir dos dados originais contendo apenas pokemons lendários. Imprima os 5 primeiros\n", - " 4) Use apply/applymap para passar todos os valores das colunas Name, Type 1 e Type 2 para minúscula\n", - " 5) Agrupe os pokemons por Type 1 e retorne uma Série ordenada pela quantidade em ordem decrescente" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Resposta 1" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Resposta 2" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Resposta 3" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Resposta 4" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Resposta 5" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.5" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} From 95ab97ccc91e491a29b8b4249ee9a5f28d7b7184 Mon Sep 17 00:00:00 2001 From: Rubens Date: Tue, 8 Sep 2020 20:07:28 -0300 Subject: [PATCH 5/5] remove desktop.ini --- .gitignore | 3 ++- bases/desktop.ini | 5 ----- 2 files changed, 2 insertions(+), 6 deletions(-) delete mode 100644 bases/desktop.ini diff --git a/.gitignore b/.gitignore index 75555e0..ec5d53b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ *.ini calc.py .ipynb_checkpoints -.ipynb_checkpoints/* \ No newline at end of file +.ipynb_checkpoints/* +**/*.ini \ No newline at end of file diff --git a/bases/desktop.ini b/bases/desktop.ini deleted file mode 100644 index bd28da3..0000000 --- a/bases/desktop.ini +++ /dev/null @@ -1,5 +0,0 @@ -[.ShellClassInfo] -InfoTip=Esta pasta est compartilhada on-line. -IconFile=C:\Program Files\Google\Drive\googledrivesync.exe -IconIndex=16 - \ No newline at end of file