Swarmplot Part 2
Solution
from sklearn import preprocessing
df = wbdata.get_dataframe(indicators, country=countries, data_date=dates)
df.dropna(inplace=True)
df.reset_index(inplace=True)
x = df[['GDP', 'Inflation', 'Oil Rents', 'Pollution']].values
min_max_scaler = preprocessing.MinMaxScaler()
x_scaled = min_max_scaler.fit_transform(x)
df[['GDP', 'Inflation', 'Oil Rents', 'Pollution']] = x_scaled
del(df["date"])
We use the line x = df[[‘GDP’, ‘Inflation’, ‘Oil Rents’, ‘Pollution’]].values to set x equal to the values of variable columns, min_max_scaler = preprocessing.MinMaxScaler() creates an object for setting our scaler, x_scaled = min_max_scaler.fit_transform(x) scales x values and finally df[[‘GDP’, ‘Inflation’, ‘Oil Rents’, ‘Pollution’]] = x_scaled reassigns our values to the columns.
Melt it down again, and plot!
df = pd.melt(df, "country", var_name="indicator")
sns.swarmplot(x="indicator", y="value", hue="country", data=df)
plt.show()
Source Code