Jupyter-ITVitae/pokémon.ipynb

489 lines
156 KiB
Plaintext
Raw Normal View History

2024-03-07 12:26:30 +01:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><style>\n",
".dataframe > thead > tr,\n",
".dataframe > tbody > tr {\n",
" text-align: right;\n",
" white-space: pre-wrap;\n",
"}\n",
"</style>\n",
"<small>shape: (800, 13)</small><table border=\"1\" class=\"dataframe\"><thead><tr><th>#</th><th>Name</th><th>Type 1</th><th>Type 2</th><th>Total</th><th>HP</th><th>Attack</th><th>Defense</th><th>Sp. Atk</th><th>Sp. Def</th><th>Speed</th><th>Generation</th><th>Legendary</th></tr><tr><td>i64</td><td>str</td><td>str</td><td>str</td><td>i64</td><td>i64</td><td>i64</td><td>i64</td><td>i64</td><td>i64</td><td>i64</td><td>i64</td><td>bool</td></tr></thead><tbody><tr><td>1</td><td>&quot;Bulbasaur&quot;</td><td>&quot;Grass&quot;</td><td>&quot;Poison&quot;</td><td>318</td><td>45</td><td>49</td><td>49</td><td>65</td><td>65</td><td>45</td><td>1</td><td>false</td></tr><tr><td>2</td><td>&quot;Ivysaur&quot;</td><td>&quot;Grass&quot;</td><td>&quot;Poison&quot;</td><td>405</td><td>60</td><td>62</td><td>63</td><td>80</td><td>80</td><td>60</td><td>1</td><td>false</td></tr><tr><td>3</td><td>&quot;Venusaur&quot;</td><td>&quot;Grass&quot;</td><td>&quot;Poison&quot;</td><td>525</td><td>80</td><td>82</td><td>83</td><td>100</td><td>100</td><td>80</td><td>1</td><td>false</td></tr><tr><td>3</td><td>&quot;VenusaurMega V…</td><td>&quot;Grass&quot;</td><td>&quot;Poison&quot;</td><td>625</td><td>80</td><td>100</td><td>123</td><td>122</td><td>120</td><td>80</td><td>1</td><td>false</td></tr><tr><td>4</td><td>&quot;Charmander&quot;</td><td>&quot;Fire&quot;</td><td>null</td><td>309</td><td>39</td><td>52</td><td>43</td><td>60</td><td>50</td><td>65</td><td>1</td><td>false</td></tr><tr><td>5</td><td>&quot;Charmeleon&quot;</td><td>&quot;Fire&quot;</td><td>null</td><td>405</td><td>58</td><td>64</td><td>58</td><td>80</td><td>65</td><td>80</td><td>1</td><td>false</td></tr><tr><td>6</td><td>&quot;Charizard&quot;</td><td>&quot;Fire&quot;</td><td>&quot;Flying&quot;</td><td>534</td><td>78</td><td>84</td><td>78</td><td>109</td><td>85</td><td>100</td><td>1</td><td>false</td></tr><tr><td>6</td><td>&quot;CharizardMega …</td><td>&quot;Fire&quot;</td><td>&quot;Dragon&quot;</td><td>634</td><td>78</td><td>130</td><td>111</td><td>130</td><td>85</td><td>100</td><td>1</td><td>false</td></tr><tr><td>6</td><td>&quot;CharizardMega …</td><td>&quot;Fire&quot;</td><td>&quot;Flying&quot;</td><td>634</td><td>78</td><td>104</td><td>78</td><td>159</td><td>115</td><td>100</td><td>1</td><td>false</td></tr><tr><td>7</td><td>&quot;Squirtle&quot;</td><td>&quot;Water&quot;</td><td>null</td><td>314</td><td>44</td><td>48</td><td>65</td><td>50</td><td>64</td><td>43</td><td>1</td><td>false</td></tr><tr><td>8</td><td>&quot;Wartortle&quot;</td><td>&quot;Water&quot;</td><td>null</td><td>405</td><td>59</td><td>63</td><td>80</td><td>65</td><td>80</td><td>58</td><td>1</td><td>false</td></tr><tr><td>9</td><td>&quot;Blastoise&quot;</td><td>&quot;Water&quot;</td><td>null</td><td>530</td><td>79</td><td>83</td><td>100</td><td>85</td><td>105</td><td>78</td><td>1</td><td>false</td></tr><tr><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td></tr><tr><td>712</td><td>&quot;Bergmite&quot;</td><td>&quot;Ice&quot;</td><td>null</td><td>304</td><td>55</td><td>69</td><td>85</td><td>32</td><td>35</td><td>28</td><td>6</td><td>false</td></tr><tr><td>713</td><td>&quot;Avalugg&quot;</td><td>&quot;Ice&quot;</td><td>null</td><td>514</td><td>95</td><td>117</td><td>184</td><td>44</td><td>46</td><td>28</td><td>6</td><td>false</td></tr><tr><td>714</td><td>&quot;Noibat&quot;</td><td>&quot;Flying&quot;</td><td>&quot;Dragon&quot;</td><td>245</td><td>40</td><td>30</td><td>35</td><td>45</td><td>40</td><td>55</td><td>6</td><td>false</td></tr><tr><td>715</td><td>&quot;Noivern&quot;</td><td>&quot;Flying&quot;</td><td>&quot;Dragon&quot;</td><td>535</td><td>85</td><td>70</td><td>80</td><td>97</td><td>80</td><td>123</td><td>6</td><td>false</td></tr><tr><td>716</td><td>&quot;Xerneas&quot;</td><td>&quot;Fairy&quot;</td><td>null</td><td>680</td><td>126</td><td>131</td><td>95</td><td>131</td><td>98</td><td>99</td><td>6</td><td>true</td></tr><tr><td>717</td><td>&
],
"text/plain": [
"shape: (800, 13)\n",
"┌─────┬───────────────────────┬─────────┬────────┬───┬─────────┬───────┬────────────┬───────────┐\n",
"│ # ┆ Name ┆ Type 1 ┆ Type 2 ┆ … ┆ Sp. Def ┆ Speed ┆ Generation ┆ Legendary │\n",
"│ --- ┆ --- ┆ --- ┆ --- ┆ ┆ --- ┆ --- ┆ --- ┆ --- │\n",
"│ i64 ┆ str ┆ str ┆ str ┆ ┆ i64 ┆ i64 ┆ i64 ┆ bool │\n",
"╞═════╪═══════════════════════╪═════════╪════════╪═══╪═════════╪═══════╪════════════╪═══════════╡\n",
"│ 1 ┆ Bulbasaur ┆ Grass ┆ Poison ┆ … ┆ 65 ┆ 45 ┆ 1 ┆ false │\n",
"│ 2 ┆ Ivysaur ┆ Grass ┆ Poison ┆ … ┆ 80 ┆ 60 ┆ 1 ┆ false │\n",
"│ 3 ┆ Venusaur ┆ Grass ┆ Poison ┆ … ┆ 100 ┆ 80 ┆ 1 ┆ false │\n",
"│ 3 ┆ VenusaurMega Venusaur ┆ Grass ┆ Poison ┆ … ┆ 120 ┆ 80 ┆ 1 ┆ false │\n",
"│ 4 ┆ Charmander ┆ Fire ┆ null ┆ … ┆ 50 ┆ 65 ┆ 1 ┆ false │\n",
"│ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │\n",
"│ 719 ┆ Diancie ┆ Rock ┆ Fairy ┆ … ┆ 150 ┆ 50 ┆ 6 ┆ true │\n",
"│ 719 ┆ DiancieMega Diancie ┆ Rock ┆ Fairy ┆ … ┆ 110 ┆ 110 ┆ 6 ┆ true │\n",
"│ 720 ┆ HoopaHoopa Confined ┆ Psychic ┆ Ghost ┆ … ┆ 130 ┆ 70 ┆ 6 ┆ true │\n",
"│ 720 ┆ HoopaHoopa Unbound ┆ Psychic ┆ Dark ┆ … ┆ 130 ┆ 80 ┆ 6 ┆ true │\n",
"│ 721 ┆ Volcanion ┆ Fire ┆ Water ┆ … ┆ 90 ┆ 70 ┆ 6 ┆ true │\n",
"└─────┴───────────────────────┴─────────┴────────┴───┴─────────┴───────┴────────────┴───────────┘"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import polars as ps\n",
"\n",
"pokémon = ps.read_csv(\"./pokémon/Pokemon.csv\")\n",
"pokémon"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><style>\n",
".dataframe > thead > tr,\n",
".dataframe > tbody > tr {\n",
" text-align: right;\n",
" white-space: pre-wrap;\n",
"}\n",
"</style>\n",
"<small>shape: (1, 13)</small><table border=\"1\" class=\"dataframe\"><thead><tr><th>#</th><th>Name</th><th>Type 1</th><th>Type 2</th><th>Total</th><th>HP</th><th>Attack</th><th>Defense</th><th>Sp. Atk</th><th>Sp. Def</th><th>Speed</th><th>Generation</th><th>Legendary</th></tr><tr><td>i64</td><td>str</td><td>str</td><td>str</td><td>i64</td><td>i64</td><td>i64</td><td>i64</td><td>i64</td><td>i64</td><td>i64</td><td>i64</td><td>bool</td></tr></thead><tbody><tr><td>242</td><td>&quot;Blissey&quot;</td><td>&quot;Normal&quot;</td><td>null</td><td>540</td><td>255</td><td>10</td><td>10</td><td>75</td><td>135</td><td>55</td><td>2</td><td>false</td></tr></tbody></table></div>"
],
"text/plain": [
"shape: (1, 13)\n",
"┌─────┬─────────┬────────┬────────┬───┬─────────┬───────┬────────────┬───────────┐\n",
"│ # ┆ Name ┆ Type 1 ┆ Type 2 ┆ … ┆ Sp. Def ┆ Speed ┆ Generation ┆ Legendary │\n",
"│ --- ┆ --- ┆ --- ┆ --- ┆ ┆ --- ┆ --- ┆ --- ┆ --- │\n",
"│ i64 ┆ str ┆ str ┆ str ┆ ┆ i64 ┆ i64 ┆ i64 ┆ bool │\n",
"╞═════╪═════════╪════════╪════════╪═══╪═════════╪═══════╪════════════╪═══════════╡\n",
"│ 242 ┆ Blissey ┆ Normal ┆ null ┆ … ┆ 135 ┆ 55 ┆ 2 ┆ false │\n",
"└─────┴─────────┴────────┴────────┴───┴─────────┴───────┴────────────┴───────────┘"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pokémon.sort(ps.col(\"HP\")).tail(1)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><style>\n",
".dataframe > thead > tr,\n",
".dataframe > tbody > tr {\n",
" text-align: right;\n",
" white-space: pre-wrap;\n",
"}\n",
"</style>\n",
"<small>shape: (800, 13)</small><table border=\"1\" class=\"dataframe\"><thead><tr><th>#</th><th>Name</th><th>Type 1</th><th>Type 2</th><th>Total</th><th>HP</th><th>Attack</th><th>Defense</th><th>Sp. Atk</th><th>Sp. Def</th><th>Speed</th><th>Generation</th><th>Legendary</th></tr><tr><td>i64</td><td>str</td><td>str</td><td>str</td><td>i64</td><td>i64</td><td>i64</td><td>i64</td><td>i64</td><td>i64</td><td>i64</td><td>i64</td><td>bool</td></tr></thead><tbody><tr><td>1</td><td>&quot;Bulbasaur&quot;</td><td>&quot;Grass&quot;</td><td>&quot;Poison&quot;</td><td>318</td><td>45</td><td>49</td><td>49</td><td>65</td><td>65</td><td>45</td><td>1</td><td>false</td></tr><tr><td>2</td><td>&quot;Ivysaur&quot;</td><td>&quot;Grass&quot;</td><td>&quot;Poison&quot;</td><td>405</td><td>60</td><td>62</td><td>63</td><td>80</td><td>80</td><td>60</td><td>1</td><td>false</td></tr><tr><td>3</td><td>&quot;Venusaur&quot;</td><td>&quot;Grass&quot;</td><td>&quot;Poison&quot;</td><td>525</td><td>80</td><td>82</td><td>83</td><td>100</td><td>100</td><td>80</td><td>1</td><td>false</td></tr><tr><td>3</td><td>&quot;VenusaurMega V…</td><td>&quot;Grass&quot;</td><td>&quot;Poison&quot;</td><td>625</td><td>80</td><td>100</td><td>123</td><td>122</td><td>120</td><td>80</td><td>1</td><td>false</td></tr><tr><td>4</td><td>&quot;Charmander&quot;</td><td>&quot;Fire&quot;</td><td>&quot;Fire&quot;</td><td>309</td><td>39</td><td>52</td><td>43</td><td>60</td><td>50</td><td>65</td><td>1</td><td>false</td></tr><tr><td>5</td><td>&quot;Charmeleon&quot;</td><td>&quot;Fire&quot;</td><td>&quot;Fire&quot;</td><td>405</td><td>58</td><td>64</td><td>58</td><td>80</td><td>65</td><td>80</td><td>1</td><td>false</td></tr><tr><td>6</td><td>&quot;Charizard&quot;</td><td>&quot;Fire&quot;</td><td>&quot;Flying&quot;</td><td>534</td><td>78</td><td>84</td><td>78</td><td>109</td><td>85</td><td>100</td><td>1</td><td>false</td></tr><tr><td>6</td><td>&quot;CharizardMega …</td><td>&quot;Fire&quot;</td><td>&quot;Dragon&quot;</td><td>634</td><td>78</td><td>130</td><td>111</td><td>130</td><td>85</td><td>100</td><td>1</td><td>false</td></tr><tr><td>6</td><td>&quot;CharizardMega …</td><td>&quot;Fire&quot;</td><td>&quot;Flying&quot;</td><td>634</td><td>78</td><td>104</td><td>78</td><td>159</td><td>115</td><td>100</td><td>1</td><td>false</td></tr><tr><td>7</td><td>&quot;Squirtle&quot;</td><td>&quot;Water&quot;</td><td>&quot;Water&quot;</td><td>314</td><td>44</td><td>48</td><td>65</td><td>50</td><td>64</td><td>43</td><td>1</td><td>false</td></tr><tr><td>8</td><td>&quot;Wartortle&quot;</td><td>&quot;Water&quot;</td><td>&quot;Water&quot;</td><td>405</td><td>59</td><td>63</td><td>80</td><td>65</td><td>80</td><td>58</td><td>1</td><td>false</td></tr><tr><td>9</td><td>&quot;Blastoise&quot;</td><td>&quot;Water&quot;</td><td>&quot;Water&quot;</td><td>530</td><td>79</td><td>83</td><td>100</td><td>85</td><td>105</td><td>78</td><td>1</td><td>false</td></tr><tr><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td></tr><tr><td>712</td><td>&quot;Bergmite&quot;</td><td>&quot;Ice&quot;</td><td>&quot;Ice&quot;</td><td>304</td><td>55</td><td>69</td><td>85</td><td>32</td><td>35</td><td>28</td><td>6</td><td>false</td></tr><tr><td>713</td><td>&quot;Avalugg&quot;</td><td>&quot;Ice&quot;</td><td>&quot;Ice&quot;</td><td>514</td><td>95</td><td>117</td><td>184</td><td>44</td><td>46</td><td>28</td><td>6</td><td>false</td></tr><tr><td>714</td><td>&quot;Noibat&quot;</td><td>&quot;Flying&quot;</td><td>&quot;Dragon&quot;</td><td>245</td><td>40</td><td>30</td><td>35</td><td>45</td><td>40</td><td>55</td><td>6</td><td>false</td></tr><tr><td>715</td><td>&quot;Noivern&quot;</td><td>&quot;Flying&quot;</td><td>&quot;Dragon&quot;</td><td>535</td><td>85</td><td>70</td><td>80</td><td>97</td><td>80</td><td>123</td><td>6</td><td>false</td></tr><tr><td>716</td><td>&quot;Xerneas&quot;</td><td>&quot;Fairy&quot;</td><td>&quot;Fairy&quot;</td><td>680</td><td>126</td><td>131<
],
"text/plain": [
"shape: (800, 13)\n",
"┌─────┬───────────────────────┬─────────┬────────┬───┬─────────┬───────┬────────────┬───────────┐\n",
"│ # ┆ Name ┆ Type 1 ┆ Type 2 ┆ … ┆ Sp. Def ┆ Speed ┆ Generation ┆ Legendary │\n",
"│ --- ┆ --- ┆ --- ┆ --- ┆ ┆ --- ┆ --- ┆ --- ┆ --- │\n",
"│ i64 ┆ str ┆ str ┆ str ┆ ┆ i64 ┆ i64 ┆ i64 ┆ bool │\n",
"╞═════╪═══════════════════════╪═════════╪════════╪═══╪═════════╪═══════╪════════════╪═══════════╡\n",
"│ 1 ┆ Bulbasaur ┆ Grass ┆ Poison ┆ … ┆ 65 ┆ 45 ┆ 1 ┆ false │\n",
"│ 2 ┆ Ivysaur ┆ Grass ┆ Poison ┆ … ┆ 80 ┆ 60 ┆ 1 ┆ false │\n",
"│ 3 ┆ Venusaur ┆ Grass ┆ Poison ┆ … ┆ 100 ┆ 80 ┆ 1 ┆ false │\n",
"│ 3 ┆ VenusaurMega Venusaur ┆ Grass ┆ Poison ┆ … ┆ 120 ┆ 80 ┆ 1 ┆ false │\n",
"│ 4 ┆ Charmander ┆ Fire ┆ Fire ┆ … ┆ 50 ┆ 65 ┆ 1 ┆ false │\n",
"│ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │\n",
"│ 719 ┆ Diancie ┆ Rock ┆ Fairy ┆ … ┆ 150 ┆ 50 ┆ 6 ┆ true │\n",
"│ 719 ┆ DiancieMega Diancie ┆ Rock ┆ Fairy ┆ … ┆ 110 ┆ 110 ┆ 6 ┆ true │\n",
"│ 720 ┆ HoopaHoopa Confined ┆ Psychic ┆ Ghost ┆ … ┆ 130 ┆ 70 ┆ 6 ┆ true │\n",
"│ 720 ┆ HoopaHoopa Unbound ┆ Psychic ┆ Dark ┆ … ┆ 130 ┆ 80 ┆ 6 ┆ true │\n",
"│ 721 ┆ Volcanion ┆ Fire ┆ Water ┆ … ┆ 90 ┆ 70 ┆ 6 ┆ true │\n",
"└─────┴───────────────────────┴─────────┴────────┴───┴─────────┴───────┴────────────┴───────────┘"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from polars import col\n",
"\n",
"pokémon.select(ps.col(\"Type 2\").fill_null(ps.col(\"Type 1\")))\n",
"pnn = pokémon.with_columns([\n",
" ps.when(col(\"Type 2\").is_null()).then(col(\"Type 1\")).otherwise(col(\"Type 2\")).alias(\"Type 2\")\n",
"])\n",
"\n",
"pnn"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><style>\n",
".dataframe > thead > tr,\n",
".dataframe > tbody > tr {\n",
" text-align: right;\n",
" white-space: pre-wrap;\n",
"}\n",
"</style>\n",
"<small>shape: (166, 13)</small><table border=\"1\" class=\"dataframe\"><thead><tr><th>#</th><th>Name</th><th>Type 1</th><th>Type 2</th><th>Total</th><th>HP</th><th>Attack</th><th>Defense</th><th>Sp. Atk</th><th>Sp. Def</th><th>Speed</th><th>Generation</th><th>Legendary</th></tr><tr><td>i64</td><td>str</td><td>str</td><td>str</td><td>i64</td><td>i64</td><td>i64</td><td>i64</td><td>i64</td><td>i64</td><td>i64</td><td>i64</td><td>bool</td></tr></thead><tbody><tr><td>1</td><td>&quot;Bulbasaur&quot;</td><td>&quot;Grass&quot;</td><td>&quot;Poison&quot;</td><td>318</td><td>45</td><td>49</td><td>49</td><td>65</td><td>65</td><td>45</td><td>1</td><td>false</td></tr><tr><td>2</td><td>&quot;Ivysaur&quot;</td><td>&quot;Grass&quot;</td><td>&quot;Poison&quot;</td><td>405</td><td>60</td><td>62</td><td>63</td><td>80</td><td>80</td><td>60</td><td>1</td><td>false</td></tr><tr><td>3</td><td>&quot;Venusaur&quot;</td><td>&quot;Grass&quot;</td><td>&quot;Poison&quot;</td><td>525</td><td>80</td><td>82</td><td>83</td><td>100</td><td>100</td><td>80</td><td>1</td><td>false</td></tr><tr><td>3</td><td>&quot;VenusaurMega V…</td><td>&quot;Grass&quot;</td><td>&quot;Poison&quot;</td><td>625</td><td>80</td><td>100</td><td>123</td><td>122</td><td>120</td><td>80</td><td>1</td><td>false</td></tr><tr><td>4</td><td>&quot;Charmander&quot;</td><td>&quot;Fire&quot;</td><td>&quot;Fire&quot;</td><td>309</td><td>39</td><td>52</td><td>43</td><td>60</td><td>50</td><td>65</td><td>1</td><td>false</td></tr><tr><td>5</td><td>&quot;Charmeleon&quot;</td><td>&quot;Fire&quot;</td><td>&quot;Fire&quot;</td><td>405</td><td>58</td><td>64</td><td>58</td><td>80</td><td>65</td><td>80</td><td>1</td><td>false</td></tr><tr><td>6</td><td>&quot;Charizard&quot;</td><td>&quot;Fire&quot;</td><td>&quot;Flying&quot;</td><td>534</td><td>78</td><td>84</td><td>78</td><td>109</td><td>85</td><td>100</td><td>1</td><td>false</td></tr><tr><td>6</td><td>&quot;CharizardMega …</td><td>&quot;Fire&quot;</td><td>&quot;Dragon&quot;</td><td>634</td><td>78</td><td>130</td><td>111</td><td>130</td><td>85</td><td>100</td><td>1</td><td>false</td></tr><tr><td>6</td><td>&quot;CharizardMega …</td><td>&quot;Fire&quot;</td><td>&quot;Flying&quot;</td><td>634</td><td>78</td><td>104</td><td>78</td><td>159</td><td>115</td><td>100</td><td>1</td><td>false</td></tr><tr><td>7</td><td>&quot;Squirtle&quot;</td><td>&quot;Water&quot;</td><td>&quot;Water&quot;</td><td>314</td><td>44</td><td>48</td><td>65</td><td>50</td><td>64</td><td>43</td><td>1</td><td>false</td></tr><tr><td>8</td><td>&quot;Wartortle&quot;</td><td>&quot;Water&quot;</td><td>&quot;Water&quot;</td><td>405</td><td>59</td><td>63</td><td>80</td><td>65</td><td>80</td><td>58</td><td>1</td><td>false</td></tr><tr><td>9</td><td>&quot;Blastoise&quot;</td><td>&quot;Water&quot;</td><td>&quot;Water&quot;</td><td>530</td><td>79</td><td>83</td><td>100</td><td>85</td><td>105</td><td>78</td><td>1</td><td>false</td></tr><tr><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td></tr><tr><td>142</td><td>&quot;AerodactylMega…</td><td>&quot;Rock&quot;</td><td>&quot;Flying&quot;</td><td>615</td><td>80</td><td>135</td><td>85</td><td>70</td><td>95</td><td>150</td><td>1</td><td>false</td></tr><tr><td>143</td><td>&quot;Snorlax&quot;</td><td>&quot;Normal&quot;</td><td>&quot;Normal&quot;</td><td>540</td><td>160</td><td>110</td><td>65</td><td>65</td><td>110</td><td>30</td><td>1</td><td>false</td></tr><tr><td>144</td><td>&quot;Articuno&quot;</td><td>&quot;Ice&quot;</td><td>&quot;Flying&quot;</td><td>580</td><td>90</td><td>85</td><td>100</td><td>95</td><td>125</td><td>85</td><td>1</td><td>true</td></tr><tr><td>145</td><td>&quot;Zapdos&quot;</td><td>&quot;Electric&quot;</td><td>&quot;Flying&quot;</td><td>580</td><td>90</td><td>90</td><td>85</td><td>125</td><td>90</td><td>100</td><td>1</td><td>true</td></tr><tr><td>146</td><td>&quot;Moltres&quot;</td><td>&quot;Fire&quot;</td><td>&quot;Flying&quot;</td><td>580</td><td
],
"text/plain": [
"shape: (166, 13)\n",
"┌─────┬───────────────────────┬─────────┬──────────┬───┬─────────┬───────┬────────────┬───────────┐\n",
"│ # ┆ Name ┆ Type 1 ┆ Type 2 ┆ … ┆ Sp. Def ┆ Speed ┆ Generation ┆ Legendary │\n",
"│ --- ┆ --- ┆ --- ┆ --- ┆ ┆ --- ┆ --- ┆ --- ┆ --- │\n",
"│ i64 ┆ str ┆ str ┆ str ┆ ┆ i64 ┆ i64 ┆ i64 ┆ bool │\n",
"╞═════╪═══════════════════════╪═════════╪══════════╪═══╪═════════╪═══════╪════════════╪═══════════╡\n",
"│ 1 ┆ Bulbasaur ┆ Grass ┆ Poison ┆ … ┆ 65 ┆ 45 ┆ 1 ┆ false │\n",
"│ 2 ┆ Ivysaur ┆ Grass ┆ Poison ┆ … ┆ 80 ┆ 60 ┆ 1 ┆ false │\n",
"│ 3 ┆ Venusaur ┆ Grass ┆ Poison ┆ … ┆ 100 ┆ 80 ┆ 1 ┆ false │\n",
"│ 3 ┆ VenusaurMega Venusaur ┆ Grass ┆ Poison ┆ … ┆ 120 ┆ 80 ┆ 1 ┆ false │\n",
"│ 4 ┆ Charmander ┆ Fire ┆ Fire ┆ … ┆ 50 ┆ 65 ┆ 1 ┆ false │\n",
"│ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │\n",
"│ 149 ┆ Dragonite ┆ Dragon ┆ Flying ┆ … ┆ 100 ┆ 80 ┆ 1 ┆ false │\n",
"│ 150 ┆ Mewtwo ┆ Psychic ┆ Psychic ┆ … ┆ 90 ┆ 130 ┆ 1 ┆ true │\n",
"│ 150 ┆ MewtwoMega Mewtwo X ┆ Psychic ┆ Fighting ┆ … ┆ 100 ┆ 130 ┆ 1 ┆ true │\n",
"│ 150 ┆ MewtwoMega Mewtwo Y ┆ Psychic ┆ Psychic ┆ … ┆ 120 ┆ 140 ┆ 1 ┆ true │\n",
"│ 151 ┆ Mew ┆ Psychic ┆ Psychic ┆ … ┆ 100 ┆ 100 ┆ 1 ┆ false │\n",
"└─────┴───────────────────────┴─────────┴──────────┴───┴─────────┴───────┴────────────┴───────────┘"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gen1 = pnn.filter(col(\"Generation\") == 1)\n",
"gen1"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><style>\n",
".dataframe > thead > tr,\n",
".dataframe > tbody > tr {\n",
" text-align: right;\n",
" white-space: pre-wrap;\n",
"}\n",
"</style>\n",
"<small>shape: (752, 13)</small><table border=\"1\" class=\"dataframe\"><thead><tr><th>#</th><th>Name</th><th>Type 1</th><th>Type 2</th><th>Total</th><th>HP</th><th>Attack</th><th>Defense</th><th>Sp. Atk</th><th>Sp. Def</th><th>Speed</th><th>Generation</th><th>Legendary</th></tr><tr><td>i64</td><td>str</td><td>str</td><td>str</td><td>i64</td><td>i64</td><td>i64</td><td>i64</td><td>i64</td><td>i64</td><td>i64</td><td>i64</td><td>bool</td></tr></thead><tbody><tr><td>1</td><td>&quot;Bulbasaur&quot;</td><td>&quot;Grass&quot;</td><td>&quot;Poison&quot;</td><td>318</td><td>45</td><td>49</td><td>49</td><td>65</td><td>65</td><td>45</td><td>1</td><td>false</td></tr><tr><td>2</td><td>&quot;Ivysaur&quot;</td><td>&quot;Grass&quot;</td><td>&quot;Poison&quot;</td><td>405</td><td>60</td><td>62</td><td>63</td><td>80</td><td>80</td><td>60</td><td>1</td><td>false</td></tr><tr><td>3</td><td>&quot;Venusaur&quot;</td><td>&quot;Grass&quot;</td><td>&quot;Poison&quot;</td><td>525</td><td>80</td><td>82</td><td>83</td><td>100</td><td>100</td><td>80</td><td>1</td><td>false</td></tr><tr><td>4</td><td>&quot;Charmander&quot;</td><td>&quot;Fire&quot;</td><td>&quot;Fire&quot;</td><td>309</td><td>39</td><td>52</td><td>43</td><td>60</td><td>50</td><td>65</td><td>1</td><td>false</td></tr><tr><td>5</td><td>&quot;Charmeleon&quot;</td><td>&quot;Fire&quot;</td><td>&quot;Fire&quot;</td><td>405</td><td>58</td><td>64</td><td>58</td><td>80</td><td>65</td><td>80</td><td>1</td><td>false</td></tr><tr><td>6</td><td>&quot;Charizard&quot;</td><td>&quot;Fire&quot;</td><td>&quot;Flying&quot;</td><td>534</td><td>78</td><td>84</td><td>78</td><td>109</td><td>85</td><td>100</td><td>1</td><td>false</td></tr><tr><td>7</td><td>&quot;Squirtle&quot;</td><td>&quot;Water&quot;</td><td>&quot;Water&quot;</td><td>314</td><td>44</td><td>48</td><td>65</td><td>50</td><td>64</td><td>43</td><td>1</td><td>false</td></tr><tr><td>8</td><td>&quot;Wartortle&quot;</td><td>&quot;Water&quot;</td><td>&quot;Water&quot;</td><td>405</td><td>59</td><td>63</td><td>80</td><td>65</td><td>80</td><td>58</td><td>1</td><td>false</td></tr><tr><td>9</td><td>&quot;Blastoise&quot;</td><td>&quot;Water&quot;</td><td>&quot;Water&quot;</td><td>530</td><td>79</td><td>83</td><td>100</td><td>85</td><td>105</td><td>78</td><td>1</td><td>false</td></tr><tr><td>10</td><td>&quot;Caterpie&quot;</td><td>&quot;Bug&quot;</td><td>&quot;Bug&quot;</td><td>195</td><td>45</td><td>30</td><td>35</td><td>20</td><td>20</td><td>45</td><td>1</td><td>false</td></tr><tr><td>11</td><td>&quot;Metapod&quot;</td><td>&quot;Bug&quot;</td><td>&quot;Bug&quot;</td><td>205</td><td>50</td><td>20</td><td>55</td><td>25</td><td>25</td><td>30</td><td>1</td><td>false</td></tr><tr><td>12</td><td>&quot;Butterfree&quot;</td><td>&quot;Bug&quot;</td><td>&quot;Flying&quot;</td><td>395</td><td>60</td><td>45</td><td>50</td><td>90</td><td>80</td><td>70</td><td>1</td><td>false</td></tr><tr><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td></tr><tr><td>711</td><td>&quot;GourgeistSuper…</td><td>&quot;Ghost&quot;</td><td>&quot;Grass&quot;</td><td>494</td><td>85</td><td>100</td><td>122</td><td>58</td><td>75</td><td>54</td><td>6</td><td>false</td></tr><tr><td>712</td><td>&quot;Bergmite&quot;</td><td>&quot;Ice&quot;</td><td>&quot;Ice&quot;</td><td>304</td><td>55</td><td>69</td><td>85</td><td>32</td><td>35</td><td>28</td><td>6</td><td>false</td></tr><tr><td>713</td><td>&quot;Avalugg&quot;</td><td>&quot;Ice&quot;</td><td>&quot;Ice&quot;</td><td>514</td><td>95</td><td>117</td><td>184</td><td>44</td><td>46</td><td>28</td><td>6</td><td>false</td></tr><tr><td>714</td><td>&quot;Noibat&quot;</td><td>&quot;Flying&quot;</td><td>&quot;Dragon&quot;</td><td>245</td><td>40</td><td>30</td><td>35</td><td>45</td><td>40</td><td>55</td><td>6</td><td>false</td></tr><tr><td>715</td><td>&quot;Noivern&quot;</td><td>&quot;Flying&quot;</td><td>&quot;Dragon&quot;</td><td>535</td><td>85</td><td>70</td><td>80</td><td>97</t
],
"text/plain": [
"shape: (752, 13)\n",
"┌─────┬─────────────────────┬─────────┬────────┬───┬─────────┬───────┬────────────┬───────────┐\n",
"│ # ┆ Name ┆ Type 1 ┆ Type 2 ┆ … ┆ Sp. Def ┆ Speed ┆ Generation ┆ Legendary │\n",
"│ --- ┆ --- ┆ --- ┆ --- ┆ ┆ --- ┆ --- ┆ --- ┆ --- │\n",
"│ i64 ┆ str ┆ str ┆ str ┆ ┆ i64 ┆ i64 ┆ i64 ┆ bool │\n",
"╞═════╪═════════════════════╪═════════╪════════╪═══╪═════════╪═══════╪════════════╪═══════════╡\n",
"│ 1 ┆ Bulbasaur ┆ Grass ┆ Poison ┆ … ┆ 65 ┆ 45 ┆ 1 ┆ false │\n",
"│ 2 ┆ Ivysaur ┆ Grass ┆ Poison ┆ … ┆ 80 ┆ 60 ┆ 1 ┆ false │\n",
"│ 3 ┆ Venusaur ┆ Grass ┆ Poison ┆ … ┆ 100 ┆ 80 ┆ 1 ┆ false │\n",
"│ 4 ┆ Charmander ┆ Fire ┆ Fire ┆ … ┆ 50 ┆ 65 ┆ 1 ┆ false │\n",
"│ 5 ┆ Charmeleon ┆ Fire ┆ Fire ┆ … ┆ 65 ┆ 80 ┆ 1 ┆ false │\n",
"│ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │\n",
"│ 718 ┆ Zygarde50% Forme ┆ Dragon ┆ Ground ┆ … ┆ 95 ┆ 95 ┆ 6 ┆ true │\n",
"│ 719 ┆ Diancie ┆ Rock ┆ Fairy ┆ … ┆ 150 ┆ 50 ┆ 6 ┆ true │\n",
"│ 720 ┆ HoopaHoopa Confined ┆ Psychic ┆ Ghost ┆ … ┆ 130 ┆ 70 ┆ 6 ┆ true │\n",
"│ 720 ┆ HoopaHoopa Unbound ┆ Psychic ┆ Dark ┆ … ┆ 130 ┆ 80 ┆ 6 ┆ true │\n",
"│ 721 ┆ Volcanion ┆ Fire ┆ Water ┆ … ┆ 90 ┆ 70 ┆ 6 ┆ true │\n",
"└─────┴─────────────────────┴─────────┴────────┴───┴─────────┴───────┴────────────┴───────────┘"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"no_megas = pnn.filter(~col(\"Name\").str.contains(\"Mega \"))\n",
"no_megas"
]
},
{
"cell_type": "code",
2024-03-07 15:31:20 +01:00
"execution_count": 7,
2024-03-07 12:26:30 +01:00
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
},
"metadata": {
"image/png": {
"height": 480,
"width": 640
}
},
"output_type": "display_data"
}
],
"source": [
"from plotnine import ggplot, aes, geom_histogram, labs\n",
"\n",
"(\n",
" ggplot(no_megas.to_pandas())\n",
" + aes(x=\"Attack\") \n",
" + geom_histogram(bins=(200/25))\n",
" + labs(title=\"Distribution of attack stat for all Pokémon\", y=\"Amount of Pokémon\")\n",
")\n"
]
},
{
"cell_type": "code",
2024-03-07 15:31:20 +01:00
"execution_count": 8,
2024-03-07 12:26:30 +01:00
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABQAAAAPACAYAAABq3NR5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAB7CAAAewgFu0HU+AACW3klEQVR4nOzdd5gUVdo34KdnyBkkG1AxRwyriKKICRVzVgRz3vDu7ruGdc2bfVfdpK7rYsYsrqtgzoppwawoYAQJkjMzU98fQn8zMKFnqGGgvO/r6osO55x+pruorv511alckiRJAAAAAACZVNTQBQAAAAAA9UcACAAAAAAZJgAEAAAAgAwTAAIAAABAhgkAAQAAACDDBIAAAAAAkGECQAAAAADIMAEgAAAAAGSYABAAAAAAMkwACAAAAAAZJgAEAAAAgAwTAAIAAABAhgkAAQCIiIhbbrklcrlc5HK5aNu2bbz//vsNXRIAACnIJUmSNHQRAAA0rHHjxkWvXr1i7ty5UVRUFI888kgccMABDV0WAAApsAcgAFThtddei9NPPz222mqraNu2bRQXF+f3jjrppJNWevwlS5bEv/71rxg4cGCsu+660bx58/z4uVwunnvuuZV+jpqU3+Nr/fXXr/fnozD9+vXLvy+XXXZZvT9fSUlJHH/88TF37tyIiPjjH/8o/FtNffbZZxXWE5999llDl0QBvG9kxUknnZTqthCw6jRq6AKA74cDDzwwHnvssfzt3XbbLV588cUGrIj6cu2118bMmTMjIuLQQw+NXr16NWg9dXXJJZfEVVddFfW1o/z06dNj7733jtGjR9fL+KyoX79+8fzzz1f5eFFRUbRt2zY6duwY2267beyxxx5xwgknRPv27VdhlQ3jkksuiddffz0iIk455ZT46U9/2sAVAVCfyv+4dNJJJ/kREL4HBIBAvZs0aVI8/vjjFe576aWX4tNPP42NNtqogaqivlx77bXx+eefR0TE+uuvv0YGgCNGjIgrr7yywn1rrbVWtG3bNnK5XEREdOnSZaWe4+yzz64Q/hUXF0e3bt2iadOm+fuaN2++Us9B7ZSVlcWMGTNixowZ8cknn8T9998fv/jFL+Kyyy6Ln//851FUlM0DJ5577rn4/e9/HxERffv2jeuvv76BKwKgvl1++eX56/369RMAwveAABCod7fffnuUlpaucP8tt9wSV111VQNUBNW74YYb8tc32GCD+M9//hNbbLFFauN/++23cf/99+dvn3baafGnP/0pWrdundpzUL1GjRpFjx49KtxXWloa06dPj9mzZ+fvW7BgQZx//vnx/vvvx6233rqqy6x3M2bMiBNPPDHKyspigw02iAcffDCaNGnS0GUBAJCybP6UDaxWbrnllvz18r8u3nbbbVFWVrbqC4IaLDsUMiLiF7/4RarhX0TEm2++mV/2i4qK4tprr22w8O+kk06KJEkiSZLv1ZxUa6+9dnz66acVLhMmTIhZs2bFhx9+GGeffXZ+b8+I79ZX//znPxuw4vpx+umnx1dffRWtW7eOf//739GxY8eGLokarL/++vn/s0mS2GsHWKVuueWW/Pqn/DY+sPoTAAL16rXXXosPP/wwIiJyuVzceeed+cPovvzyy3j66acbsjyo1LRp0/LX6+Mw9fLjd+vWLVq2bJn6c1B3m222Wfz973+Pm266qcL9V1xxRb3NCdlQ7r///kiSJGbPnh1bbbVVQ5cDAEA9cQgwUK+GDh2av77rrrtGnz59Yq+99oonn3wy//g+++yTynNNnTo1Xnjhhfjqq69iwYIFscEGG8Ree+1V7R4tkyZNihdeeCE+//zzKCoqivXWWy/23XffaNeuXZ3rGD16dLz77rsxefLkKC4uji5dusSOO+4Ym266aZ3HXFWSJImXX345xo4dG5MnT4527drFVlttFX369Ini4uKGLq9aZWVl8dprr8VHH30UU6ZMiWbNmkWXLl2iT58+sd5669VqrJKSkvz1Ro3S/6hcsmTJSo0/Y8aMeOedd2Ls2LExffr0SJIk1lprrejZs2fssssuq3zuwMWLF8eLL74Yn3/+eUyePDlatWoVRxxxRHTv3n2V1pG2U089Ne6888549tlnI+K7Hy3GjBkT2223XZV9lixZEi+99FKMGzcupk6dGq1bt45u3bpF3759o3Pnzquq9IIsWLAgXnzxxfjiiy9i6tSp0aZNm1h33XVjzz33TGWP1JKSknjhhRfyr0WHDh2iT58+sc0221TZZ/HixfHCCy/EBx98EHPnzo1OnTrFrrvuulJ74U6ZMiVefPHFmDRpUsyZMyc6deoUPXv2jN122y0aN25c53HLe+utt+K9996LSZMmRatWrWKTTTaJPfbYo8Kcnqub1aHmsWPHxltvvRWTJ0+OxYsXR5cuXWK77bardhmpzqJFi+Kdd97Jfw4sXLgw2rdvH2uvvXbsuuuuqezh+tVXX8WoUaNi8uTJMXPmzGjRokWst956se22267UD0YN/X7897//jTFjxsSUKVNirbXWig022CD22GOP1P6PTJ06NV566aWYNGlSzJo1Kzp27BibbLJJ7Lrrrql8zi5YsCCeffbZ+Oyzz2L27NnRqVOn6N27d2y55ZYrNW7ay+jyvvnmm3jllVdi4sSJMXv27FhvvfVi0KBBlbYtKSmJ9957Lz788MP45ptvYv78+dG2bdv8ts7aa6+dSk316YsvvohXXnklJk+eHAsXLozOnTvHZpttFjvvvHMq8+yuyduxsEokAPVkwYIFSdu2bZOISCIiueGGG5IkSZLbbrstf1/z5s2TmTNnFjzmkCFD8n2HDBmSJEmSTJ06NTn22GOTxo0b5x9bdmnatGnyi1/8IlmyZEmFcb766qvkqKOOSoqKilbo06RJk+Tiiy9eoU91SkpKkr/85S/JOuuss8J4yy6bbbZZcvfddxc03h577JHvd+mllxbU59lnn63wfLVtd+uttyYbbLBBpbV37949ufPOO6scc+jQoVX+3VVdJkyYUNDfVZP58+cnl19+edKxY8cqn2vHHXdMnnzyySrHmDBhQq1q32OPPWpd56WXXlqr5xg6dGiF/uPHj0+uuOKKZPvtt690uS2//J588snJZ599VlBd5d+7Hj161KrdokWLkvPPPz/p0KHDCnU89NBDya233pq/ncvlkvHjx9fqNevfv3++/5577lmrvpUp//+qur+1vL/97W8V/q6bb7650nbTp09PfvzjHydt2rSp9H0pKipK9txzz+SNN96oda2FrAOeeuqppFWrVvk+PXv2rPL1Hj9+fHLcccclzZs3r7TWpk2bJieeeGIyceLEGp+3qvXJtddem3Tr1q3S8Xfffffkk08+qTBOaWlpcvXVV1e6LEVE0q9fv2TcuHE11lPea6+9lvTr16/K/y9t2rRJfvKTnxT0GbT8OmLZ+uvRRx9Nttpqq0rHb9euXXLttdfWquZCVFXL6lxzeaWlpcnNN9+cbLLJJlWuxzbaaKOCPy9nzJiR3HDDDclee+2VNGvWrMoxc7lc0r9//+Sll16qU8133HFHsvXWW1e73u7Ro0dy0UUXJdOnT19hjNX1/XjiiSeSzTbbrNLn79KlS/L73/8+KSsrS5IkqfDYs88+W9D4zz//fLL77rtX+f+wQ4cOyeWXX54sXLiwxrHKf44u+xxetGhRcsEFFyTt2rWrdPwdd9yx4PXuMmkvo5Wtzz/++ONkv/32S4qLiyuM27Zt2wp958+fn9xxxx3JQQcdlLRu3bra5W/HHXdMHnnkkYJfw0Ivy6tsW7wmI0eOTHbYYYcqn6NTp07JlVdemSxYsKDGsepjOxa+LwSAQL2588478x+8TZo0yW8Qz507N2nZsmX+sWXBYCGW3+j48MMPqw3dll0OO+yw/AbsmDFjkk6dOtXY58QTTyyophkzZiS77LJLwRtSRxxxRLJo0aJqx1yVAWBZWVly5plnFlT7H//4x0rHbKgA8PPPP692A335y49+9KP8clDemhAAHnHEEbXq3759++S5556rsa66BoAzZsxItt9++yqf/6GHHkrmz59f4UeASy6
},
"metadata": {
"image/png": {
"height": 480,
"width": 640
}
},
"output_type": "display_data"
}
],
"source": [
"only_fairy = pnn.filter(col(\"Type 1\").str.contains(\"Fairy\") | col(\"Type 2\").str.contains(\"Fairy\"))\n",
"\n",
"(\n",
" ggplot(only_fairy.to_pandas())\n",
" + aes(x=\"Generation\") \n",
" + geom_histogram(bins=(6), color='#EF9FEF', fill='#EF6FEF')\n",
" + labs(title=\"Amount of fairy Pokémon in each generation\", y=\"Amount of Pokémon\")\n",
")"
]
2024-03-07 15:31:20 +01:00
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"types = pokémon.select([\"Type 1\"]).unique().to_series().to_list()"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><style>\n",
".dataframe > thead > tr,\n",
".dataframe > tbody > tr {\n",
" text-align: right;\n",
" white-space: pre-wrap;\n",
"}\n",
"</style>\n",
"<small>shape: (18, 19)</small><table border=\"1\" class=\"dataframe\"><thead><tr><th></th><th>Normal</th><th>Fire</th><th>Water</th><th>Electric</th><th>Grass</th><th>Ice</th><th>Fighting</th><th>Poison</th><th>Ground</th><th>Flying</th><th>Psychic</th><th>Bug</th><th>Rock</th><th>Ghost</th><th>Dragon</th><th>Dark</th><th>Steel</th><th>Fairy</th></tr><tr><td>str</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td></tr></thead><tbody><tr><td>&quot;Normal&quot;</td><td>1.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>0.5</td><td>0.0</td><td>1.0</td><td>1.0</td><td>0.5</td><td>1.0</td></tr><tr><td>&quot;Fire&quot;</td><td>1.0</td><td>0.5</td><td>0.5</td><td>1.0</td><td>2.0</td><td>2.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>2.0</td><td>0.5</td><td>1.0</td><td>0.5</td><td>1.0</td><td>2.0</td><td>1.0</td></tr><tr><td>&quot;Water&quot;</td><td>1.0</td><td>2.0</td><td>0.5</td><td>1.0</td><td>0.5</td><td>1.0</td><td>1.0</td><td>1.0</td><td>2.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>2.0</td><td>1.0</td><td>0.5</td><td>1.0</td><td>1.0</td><td>1.0</td></tr><tr><td>&quot;Electric&quot;</td><td>1.0</td><td>1.0</td><td>2.0</td><td>0.5</td><td>0.5</td><td>1.0</td><td>1.0</td><td>1.0</td><td>0.0</td><td>2.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>0.5</td><td>1.0</td><td>1.0</td><td>1.0</td></tr><tr><td>&quot;Grass&quot;</td><td>1.0</td><td>0.5</td><td>2.0</td><td>1.0</td><td>0.5</td><td>1.0</td><td>1.0</td><td>0.5</td><td>2.0</td><td>0.5</td><td>1.0</td><td>0.5</td><td>2.0</td><td>1.0</td><td>0.5</td><td>1.0</td><td>0.5</td><td>1.0</td></tr><tr><td>&quot;Ice&quot;</td><td>1.0</td><td>0.5</td><td>0.5</td><td>1.0</td><td>2.0</td><td>0.5</td><td>1.0</td><td>1.0</td><td>2.0</td><td>2.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>2.0</td><td>1.0</td><td>0.5</td><td>1.0</td></tr><tr><td>&quot;Fighting&quot;</td><td>2.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>2.0</td><td>1.0</td><td>0.5</td><td>1.0</td><td>0.5</td><td>0.5</td><td>0.5</td><td>2.0</td><td>0.0</td><td>1.0</td><td>2.0</td><td>2.0</td><td>0.5</td></tr><tr><td>&quot;Poison&quot;</td><td>1.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>2.0</td><td>1.0</td><td>1.0</td><td>0.5</td><td>0.5</td><td>1.0</td><td>1.0</td><td>1.0</td><td>0.5</td><td>0.5</td><td>1.0</td><td>1.0</td><td>0.0</td><td>2.0</td></tr><tr><td>&quot;Ground&quot;</td><td>1.0</td><td>2.0</td><td>1.0</td><td>2.0</td><td>0.5</td><td>1.0</td><td>1.0</td><td>2.0</td><td>1.0</td><td>0.0</td><td>1.0</td><td>0.5</td><td>2.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>2.0</td><td>1.0</td></tr><tr><td>&quot;Flying&quot;</td><td>1.0</td><td>1.0</td><td>1.0</td><td>0.5</td><td>2.0</td><td>1.0</td><td>2.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>2.0</td><td>0.5</td><td>1.0</td><td>1.0</td><td>1.0</td><td>0.5</td><td>1.0</td></tr><tr><td>&quot;Psychic&quot;</td><td>1.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>2.0</td><td>2.0</td><td>1.0</td><td>1.0</td><td>0.5</td><td>1.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>0.0</td><td>0.5</td><td>1.0</td></tr><tr><td>&quot;Bug&quot;</td><td>1.0</td><td>0.5</td><td>1.0</td><td>1.0</td><td>2.0</td><td>1.0</td><td>0.5</td><td>0.5</td><td>1.0</td><td>0.5</td><td>2.0</td><td>1.0</td><td>1.0</td><td>0.5</td><td>1.0</td><td>2.0</td><td>0.5</td><td>0.5</td></tr><tr><td>&quot;Rock&quot;</td><td>1.0</td><td>2.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>2.0</td><td>0.5</td><td>1.0</td><td>0.5</td><td>2.0</td><td>1.0</td><td>2.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>0.5</td><td>1.0</td></tr><tr><td>&quot;Ghost&quot;</td><td>0.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>2.0</td><td>1.0</td><td>1.0</td><td>2.0</td><td>1.0</td><td
],
"text/plain": [
"shape: (18, 19)\n",
"┌──────────┬────────┬──────┬───────┬───┬────────┬──────┬───────┬───────┐\n",
"│ ┆ Normal ┆ Fire ┆ Water ┆ … ┆ Dragon ┆ Dark ┆ Steel ┆ Fairy │\n",
"│ --- ┆ --- ┆ --- ┆ --- ┆ ┆ --- ┆ --- ┆ --- ┆ --- │\n",
"│ str ┆ f64 ┆ f64 ┆ f64 ┆ ┆ f64 ┆ f64 ┆ f64 ┆ f64 │\n",
"╞══════════╪════════╪══════╪═══════╪═══╪════════╪══════╪═══════╪═══════╡\n",
"│ Normal ┆ 1.0 ┆ 1.0 ┆ 1.0 ┆ … ┆ 1.0 ┆ 1.0 ┆ 0.5 ┆ 1.0 │\n",
"│ Fire ┆ 1.0 ┆ 0.5 ┆ 0.5 ┆ … ┆ 0.5 ┆ 1.0 ┆ 2.0 ┆ 1.0 │\n",
"│ Water ┆ 1.0 ┆ 2.0 ┆ 0.5 ┆ … ┆ 0.5 ┆ 1.0 ┆ 1.0 ┆ 1.0 │\n",
"│ Electric ┆ 1.0 ┆ 1.0 ┆ 2.0 ┆ … ┆ 0.5 ┆ 1.0 ┆ 1.0 ┆ 1.0 │\n",
"│ Grass ┆ 1.0 ┆ 0.5 ┆ 2.0 ┆ … ┆ 0.5 ┆ 1.0 ┆ 0.5 ┆ 1.0 │\n",
"│ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │\n",
"│ Ghost ┆ 0.0 ┆ 1.0 ┆ 1.0 ┆ … ┆ 1.0 ┆ 0.5 ┆ 1.0 ┆ 1.0 │\n",
"│ Dragon ┆ 1.0 ┆ 1.0 ┆ 1.0 ┆ … ┆ 2.0 ┆ 1.0 ┆ 0.5 ┆ 0.0 │\n",
"│ Dark ┆ 1.0 ┆ 1.0 ┆ 1.0 ┆ … ┆ 1.0 ┆ 0.5 ┆ 1.0 ┆ 0.5 │\n",
"│ Steel ┆ 1.0 ┆ 0.5 ┆ 0.5 ┆ … ┆ 1.0 ┆ 1.0 ┆ 0.5 ┆ 2.0 │\n",
"│ Fairy ┆ 1.0 ┆ 0.5 ┆ 1.0 ┆ … ┆ 2.0 ┆ 2.0 ┆ 0.5 ┆ 1.0 │\n",
"└──────────┴────────┴──────┴───────┴───┴────────┴──────┴───────┴───────┘"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pokétype = ps.read_csv(\"./pokémon/Pokemon Type Chart.csv\")\n",
"pokétype"
]
},
{
"cell_type": "code",
"execution_count": 255,
"metadata": {},
"outputs": [],
"source": [
"from dataclasses import dataclass\n",
"from enum import Enum\n",
"from typing import TypeVar\n",
"import random\n",
"\n",
"TPokémon = TypeVar(\"TPokémon\", bound=\"Pokémon\")\n",
"\n",
"pokémon_list: list = []\n",
"\n",
"class Effective(Enum):\n",
" \"\"\"\n",
" Enum Description: \n",
" \"\"\"\n",
" SUPER = \"It's super effective!\"\n",
" NORMAL = \"\"\n",
" NOTVERY = \"It's not very effective...\"\n",
" NOT = \"But it has no effect!\"\n",
"\n",
"\n",
"@dataclass\n",
"class Pokémon:\n",
" name: str\n",
" types: list\n",
" hp: int\n",
" curr_hp: int\n",
" attack: int\n",
" defense: int\n",
" sp_atk: int\n",
" sp_def: int\n",
"\n",
" def attack_opponent(self, opponent: TPokémon, typeatk: str, atkpwr: int):\n",
" if opponent.curr_hp == 0:\n",
" print(\"You cannot attack a fainted Pokémon!\")\n",
" return\n",
"\n",
" type_modifier = pokétype.filter(pokétype[\"\"].str.contains(typeatk))[opponent.types[0]][0]\n",
" if (opponent.types[1] is not None):\n",
" type_modifier *= pokétype.filter(pokétype[\"\"].str.contains(typeatk))[opponent.types[1]][0]\n",
" \n",
" damage = self.attack * type_modifier * (atkpwr / 100)\n",
" \n",
"\n",
" if(typeatk in self.types):\n",
" damage = damage * 1.5\n",
" opponent.curr_hp = opponent.curr_hp - damage\n",
" print(f\"\"\"{self.name} attacks {opponent.name} for {int(damage)} damage!\\n\n",
"{Effective.SUPER.value if type_modifier > 1.0 else Effective.NORMAL.value}\n",
"{Effective.NOTVERY.value if ((type_modifier < 1.0) and (type_modifier > 0.0)) else Effective.NORMAL.value}\n",
"{Effective.NOT.value if type_modifier == 0.0 else Effective.NORMAL.value}\"\"\")\n",
"\n",
" if (opponent.curr_hp <= 0):\n",
" opponent.curr_hp = 0\n",
" print(f\"{opponent.name} fainted!\")\n",
" return\n",
" print(f\"It now has {int(opponent.curr_hp)} HP\")\n",
"\n",
" def heal(self):\n",
" self.curr_hp = self.hp\n",
"\n",
"for row in pokémon.rows(named=True):\n",
" pokémon_list.append(Pokémon(\n",
" name = row[\"Name\"],\n",
" types = [row[\"Type 1\"], row[\"Type 2\"]],\n",
" hp = row[\"HP\"],\n",
" curr_hp = row[\"HP\"],\n",
" attack = row[\"Attack\"],\n",
" defense = row[\"Defense\"],\n",
" sp_atk = row[\"Sp. Atk\"],\n",
" sp_def = row[\"Sp. Def\"],\n",
" ))\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 256,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Bulbasaur attacks Butterfree for 16 damage!\n",
"\n",
"\n",
"It's not very effective...\n",
"\n",
"It now has 167 HP\n"
]
}
],
"source": [
"pokémon_list[0].attack_opponent(pokémon_list[15], \"Grass\", 40)"
]
},
{
"cell_type": "code",
"execution_count": 201,
"metadata": {},
"outputs": [],
"source": [
"for poke in pokémon_list:\n",
" poke.heal()"
]
2024-03-07 12:26:30 +01:00
}
],
"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.11.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}