<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 What is this?
We have a Dataset of Pokemons. They have various values which indicate there strongness, total is simply the sum of these values.
Got this set from https
Step1:  Okay, please try to create the following images
Step2:  Okay, let's go! 
<table>
<tr>
<td><img src='https
Step3:  Okay, nice. 
Now, some Heatmap of the mean of the type1 to type 2 pokemons
Step4:  Nice, we need to choose ground & fire pokemon for the maximum total power. <font size=16>Do never choose Pokemon with the Bug&Ghost Kombi!!!!!!</font>
Step5:  Now, let's try the melt feature we all know from R's reshape2 package
Step6:  And one fancy, so-called "swarmplot"
<ASSISTANT_TASK:>
Python Code:
data.head()
Explanation: What is this?
We have a Dataset of Pokemons. They have various values which indicate there strongness, total is simply the sum of these values.
Got this set from https://www.kaggle.com/abcsds/pokemon
Got the swarmplot idea from https://www.kaggle.com/ndrewgele/visualizing-pok-mon-stats-with-seaborn
Have a look:
End of explanation
from IPython.display import display, HTML
display(HTML("<h1>Okay, you want not to do this on your own.. then now: How to do this (scroll down)</h1>"))
for i in range(20):
    display(HTML("<br />"))
Explanation: Okay, please try to create the following images:
<table>
<tr>
    <td rowspan=2><img src='figures/distributions.svg' /></td>
    <td><img src='figures/example_heatmap.svg' /></td>
</tr><tr>
    <td><img src='figures/example_swarmplot.svg' /></td>
</tr>
</table>
Hints:
use seaborn.distplot, seaborn.swarmplot, seaborn.heatmap... for the swarmplot, you maybe need pandas.melt, its a reshape routine similar to the one in reshape2 in R.
End of explanation
numerical_cols = [col for col in data.columns if data[col].dtype == 'int64']
numerical_cols.pop(0)
f, ax = plt.subplots(len(numerical_cols) / 2 + len(numerical_cols) % 2, 2, figsize=(20,20))
for i, col in enumerate(numerical_cols):
    axx = ax[i / 2, i % 2]
    sns.distplot(data[col], ax=axx)
    axx.set_title(col, fontsize=20)
f.suptitle("Distributions of Columns in Pokemon Data Set", fontsize=24)
f.savefig("figures/distributions.svg")
Explanation: Okay, let's go! 
<table>
<tr>
<td><img src='https://media4.giphy.com/media/vsyKKf1t22nmw/giphy.gif' /></td>
<td><img src='https://media.giphy.com/media/yhfTY8JL1wIAE/giphy.gif' /></td>
<td><img src='https://media.giphy.com/media/rAm0u2k17rM3e/giphy.gif' /></td>
</tr>
</table>
Now, let us inspect, which distributions these numerical columns have:
End of explanation
numerical_cols.remove("Generation")
for col in ['Type 1', 'Type 2']:
    data[col].fillna("Type not set", inplace=True)
mean_power = data.groupby(['Type 1', 'Type 2']).Total.mean().unstack()
f = plt.figure(figsize=(20,10))
with sns.axes_style("white"):
    sns.heatmap(
        mean_power, linewidths=0.5, cmap='coolwarm'
    )
plt.gcf().savefig("figures/example_heatmap.svg")
Explanation: Okay, nice. 
Now, some Heatmap of the mean of the type1 to type 2 pokemons:
End of explanation
f, ax = plt.subplots(len(numerical_cols) / 2 + len(numerical_cols) %2, 2, figsize=(20,30))
for i, col in enumerate(numerical_cols):
    axx = ax[i / 2, i % 2]
    with sns.axes_style("white"):
        sns.heatmap(data.groupby(['Type 1', 'Type 2'])[col].mean().unstack(),
                    linewidths=0.5, cmap='coolwarm', ax=axx, square=True)
    axx.set_title(col, fontsize=20)
    axx.set_xticklabels(axx.xaxis.get_majorticklabels(), rotation=45)
    axx.set_xlabel("")
    axx.set_ylabel("")
f.suptitle("Distributions of Columns in Pokemon Data Set", fontsize=20)
Explanation: Nice, we need to choose ground & fire pokemon for the maximum total power. <font size=16>Do never choose Pokemon with the Bug&Ghost Kombi!!!!!!</font>
End of explanation
pkmn = pd.melt(data,
               id_vars=["Name", "Type 1", "Type 2"],
               value_vars = ['HP', 'Attack', 'Defense', 'Sp. Atk', 'Sp. Def', 'Speed'],
               var_name="Stat")
pkmn.sample(20)
Explanation: Now, let's try the melt feature we all know from R's reshape2 package:
End of explanation
plt.figure(figsize=(12,10))
plt.ylim(0, 275)
sns.swarmplot(x="Stat", y="value", data=pkmn, hue="Type 1", split=True, size=7)
plt.legend(bbox_to_anchor=(1, 1), loc=2, borderaxespad=0.)
plt.gcf().savefig("figures/example_swarmplot.svg")
Explanation: And one fancy, so-called "swarmplot":
End of explanation
<END_TASK>