import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from scipy.stats import pearsonr
import matplotlib as mpl
import holoviews as hv
from holoviews import dim, opts
from scipy.stats import pearsonr
hv.extension('bokeh')
%matplotlib inline
# This enables high res graphics inline
%config InlineBackend.figure_format = 'svg'
sns.set_style('white')
sns.set_context("talk", font_scale=1, rc={"lines.linewidth": 2.0, 'lines.markersize': 5})
sns.set_style("ticks")
sns.set_style({"xtick.direction": "in","ytick.direction": "in"})
tw = 1.5
sns.set_style({"xtick.major.size": 6, "ytick.major.size": 6,
"xtick.minor.size": 4, "ytick.minor.size": 4,
'axes.labelsize': 24,
'xtick.major.width': tw, 'xtick.minor.width': tw,
'ytick.major.width': tw, 'ytick.minor.width': tw})
mpl.rc('xtick', labelsize=18)
mpl.rc('ytick', labelsize=18)
mpl.rc('axes', linewidth=1.75)
plt.gcf().subplots_adjust(bottom=0.15)
sns.set_style({'axes.labelsize': 24})
<matplotlib.figure.Figure at 0x1a14393710>
path = '../data/'
fig_path = '../../'
regional = pd.read_csv(path + 'regional_well_being_OECD.csv', encoding = 'ISO-8859-1')
regional.head(3)
Country | Region | Code | Education | Jobs | Income | Safety | Health | Environment | Civic engagement | Accessiblity to services | Housing | Community | Life satisfaction | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Australia | New South Wales | AU1 | 8.1128 | 8.3726 | 6.8640 | 9.5062 | 8.5489 | 9.2444 | 9.9997 | 7.9193 | 7.7778 | 8.8988 | 7.7778 |
1 | Australia | Victoria | AU2 | 8.2184 | 8.2976 | 5.8103 | 9.2593 | 8.9090 | 9.6254 | 9.9997 | 8.0810 | 9.4444 | 9.3364 | 8.5185 |
2 | Australia | Queensland | AU3 | 7.6024 | 7.8695 | 5.7549 | 9.5062 | 8.3470 | 9.2812 | 9.9994 | 8.0810 | 7.7778 | 8.6203 | 8.1481 |
regional.shape
(402, 14)
null_columns=regional.columns[regional.isnull().any()]
null_columns
Index(['Education', 'Income', 'Safety', 'Environment', 'Accessiblity to services', 'Housing', 'Community', 'Life satisfaction'], dtype='object')
regional[null_columns].isnull().sum()
Education 10 Income 25 Safety 1 Environment 1 Accessiblity to services 3 Housing 23 Community 20 Life satisfaction 20 dtype: int64
set(list(regional[regional["Community"].isnull()]['Country'].unique()) + \
list(regional[regional["Housing"].isnull()]['Country'].unique()) + \
list(regional[regional["Community"].isnull()]['Country'].unique()) + \
list(regional[regional["Education"].isnull()]['Country'].unique()))
{'Canada', 'Chile', 'Estonia', 'Finland', 'France', 'Latvia', 'Lithuania'}
regional[regional["Housing"].isnull()]
Country | Region | Code | Education | Jobs | Income | Safety | Health | Environment | Civic engagement | Accessiblity to services | Housing | Community | Life satisfaction | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
46 | Chile | Los Rios | CL14 | 4.4347 | 6.8726 | 0.5202 | 0.0028 | 4.3619 | 9.2352 | 0.9192 | 1.0287 | NaN | 6.4322 | 2.5926 |
47 | Chile | Arica y Parinacota | CL15 | 6.2474 | 4.1365 | 0.3747 | 0.3704 | 5.5116 | 5.4987 | 0.0003 | 3.4550 | NaN | 6.7107 | 4.8148 |
61 | Estonia | North Estonia | EE001 | 9.6614 | 9.2092 | NaN | 6.6667 | 4.6693 | 8.6110 | 5.6133 | 8.6633 | NaN | 7.4666 | 1.1111 |
62 | Estonia | West Estonia | EE004 | 8.5879 | 6.8251 | NaN | 4.6914 | 3.3267 | 8.2116 | 3.8504 | 7.9354 | NaN | 5.2785 | 1.1111 |
63 | Estonia | Central Estonia | EE006 | 7.9544 | 7.3133 | NaN | 9.5062 | 2.4754 | 8.4228 | 3.9529 | 7.9354 | NaN | 7.7451 | 2.2222 |
64 | Estonia | Northeast Estonia | EE007 | 9.4502 | 4.5934 | NaN | 4.5679 | 0.5967 | 7.9454 | 2.7230 | 7.3046 | NaN | 3.8463 | 0.3704 |
65 | Estonia | South Estonia | EE008 | 9.1159 | 7.8747 | NaN | 6.1728 | 3.5196 | 7.5506 | 4.3014 | 8.1134 | NaN | 6.0742 | 1.4815 |
168 | Latvia | Kurzeme | LV003 | NaN | 5.4150 | NaN | 7.0370 | 0.1580 | 6.8666 | 3.4200 | 5.4445 | NaN | NaN | NaN |
169 | Latvia | Latgale | LV005 | NaN | 2.1808 | NaN | 5.6790 | -0.0007 | 6.1368 | 1.0831 | 5.1695 | NaN | NaN | NaN |
170 | Latvia | Riga | LV006 | NaN | 7.6987 | NaN | 3.7037 | 1.2024 | 6.0817 | 5.7363 | 7.0620 | NaN | NaN | NaN |
171 | Latvia | Pieriga | LV007 | NaN | 7.8984 | NaN | 5.8025 | 1.0095 | 6.5361 | 4.6704 | 6.7870 | NaN | NaN | NaN |
172 | Latvia | Vidzeme | LV008 | NaN | 5.2776 | NaN | 3.5802 | 0.0001 | 6.4535 | 3.7684 | 5.5415 | NaN | NaN | NaN |
173 | Latvia | Zemgale | LV009 | NaN | 5.4594 | NaN | 5.9259 | -0.0001 | 6.0495 | 2.8255 | 5.6224 | NaN | NaN | NaN |
174 | Lithuania | Alytus | LT001 | 9.9989 | 3.7849 | NaN | 2.9630 | 0.0968 | 4.1445 | 2.9485 | 4.6196 | NaN | NaN | NaN |
175 | Lithuania | Kaunas | LT002 | 9.9997 | 7.3179 | NaN | 3.0864 | 0.5092 | 4.5531 | 1.0421 | 6.1238 | NaN | NaN | NaN |
176 | Lithuania | Klaipeda | LT003 | 9.9254 | 8.2687 | NaN | 2.9630 | 0.5619 | 5.5676 | 0.0005 | 5.0725 | NaN | NaN | NaN |
177 | Lithuania | Marijampole | LT004 | 9.6438 | 5.3354 | NaN | 0.0023 | 0.0000 | 4.4750 | 0.3042 | 4.4416 | NaN | NaN | NaN |
178 | Lithuania | Paneve_ys | LT005 | 9.3622 | 4.9182 | NaN | 4.6914 | 0.0004 | 5.6043 | 0.1812 | 5.4930 | NaN | NaN | NaN |
179 | Lithuania | _iauliai | LT006 | 9.2918 | 4.0573 | NaN | 1.6049 | 0.0003 | 5.8384 | 0.4682 | 4.0696 | NaN | NaN | NaN |
180 | Lithuania | Taurage | LT007 | 8.7991 | 5.6147 | NaN | 4.4444 | -0.0004 | NaN | 2.0261 | 4.3284 | NaN | NaN | NaN |
181 | Lithuania | Tel_iai | LT008 | 9.3798 | 5.8581 | NaN | 2.7160 | 0.3948 | 5.2600 | 0.0004 | 5.4607 | NaN | NaN | NaN |
182 | Lithuania | Utena | LT009 | 9.7318 | 4.2084 | NaN | 2.4691 | -0.0005 | 6.0541 | 2.0671 | 3.9402 | NaN | NaN | NaN |
183 | Lithuania | Vilnius | LT00A | 9.9997 | 7.3600 | NaN | 5.1852 | 0.3601 | 5.7420 | 2.0261 | 4.9916 | NaN | NaN | NaN |
regional[regional["Income"].isnull()]
Country | Region | Code | Education | Jobs | Income | Safety | Health | Environment | Civic engagement | Accessiblity to services | Housing | Community | Life satisfaction | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
61 | Estonia | North Estonia | EE001 | 9.6614 | 9.2092 | NaN | 6.6667 | 4.6693 | 8.6110 | 5.6133 | 8.6633 | NaN | 7.4666 | 1.1111 |
62 | Estonia | West Estonia | EE004 | 8.5879 | 6.8251 | NaN | 4.6914 | 3.3267 | 8.2116 | 3.8504 | 7.9354 | NaN | 5.2785 | 1.1111 |
63 | Estonia | Central Estonia | EE006 | 7.9544 | 7.3133 | NaN | 9.5062 | 2.4754 | 8.4228 | 3.9529 | 7.9354 | NaN | 7.7451 | 2.2222 |
64 | Estonia | Northeast Estonia | EE007 | 9.4502 | 4.5934 | NaN | 4.5679 | 0.5967 | 7.9454 | 2.7230 | 7.3046 | NaN | 3.8463 | 0.3704 |
65 | Estonia | South Estonia | EE008 | 9.1159 | 7.8747 | NaN | 6.1728 | 3.5196 | 7.5506 | 4.3014 | 8.1134 | NaN | 6.0742 | 1.4815 |
109 | Greece | Attica | EL30 | 8.5175 | 1.1353 | NaN | 9.2593 | 6.7499 | 1.7484 | 5.6953 | 3.7138 | 3.3333 | 3.1700 | 0.3704 |
110 | Greece | North Aegean | EL41 | 5.5082 | 0.7168 | NaN | 9.8765 | 7.9612 | 2.0192 | 1.1446 | 3.7138 | 3.8889 | 0.0024 | 3.3333 |
111 | Greece | South Aegean | EL42 | 5.1563 | 2.7187 | NaN | 9.9985 | 7.7066 | 0.7982 | 2.9280 | 3.7138 | 3.3333 | 7.1085 | 1.4815 |
112 | Greece | Crete | EL43 | 5.6314 | 2.2074 | NaN | 9.3827 | 8.0577 | 1.5280 | 5.5518 | 3.7138 | 3.3333 | 5.5570 | 2.9630 |
168 | Latvia | Kurzeme | LV003 | NaN | 5.4150 | NaN | 7.0370 | 0.1580 | 6.8666 | 3.4200 | 5.4445 | NaN | NaN | NaN |
169 | Latvia | Latgale | LV005 | NaN | 2.1808 | NaN | 5.6790 | -0.0007 | 6.1368 | 1.0831 | 5.1695 | NaN | NaN | NaN |
170 | Latvia | Riga | LV006 | NaN | 7.6987 | NaN | 3.7037 | 1.2024 | 6.0817 | 5.7363 | 7.0620 | NaN | NaN | NaN |
171 | Latvia | Pieriga | LV007 | NaN | 7.8984 | NaN | 5.8025 | 1.0095 | 6.5361 | 4.6704 | 6.7870 | NaN | NaN | NaN |
172 | Latvia | Vidzeme | LV008 | NaN | 5.2776 | NaN | 3.5802 | 0.0001 | 6.4535 | 3.7684 | 5.5415 | NaN | NaN | NaN |
173 | Latvia | Zemgale | LV009 | NaN | 5.4594 | NaN | 5.9259 | -0.0001 | 6.0495 | 2.8255 | 5.6224 | NaN | NaN | NaN |
174 | Lithuania | Alytus | LT001 | 9.9989 | 3.7849 | NaN | 2.9630 | 0.0968 | 4.1445 | 2.9485 | 4.6196 | NaN | NaN | NaN |
175 | Lithuania | Kaunas | LT002 | 9.9997 | 7.3179 | NaN | 3.0864 | 0.5092 | 4.5531 | 1.0421 | 6.1238 | NaN | NaN | NaN |
176 | Lithuania | Klaipeda | LT003 | 9.9254 | 8.2687 | NaN | 2.9630 | 0.5619 | 5.5676 | 0.0005 | 5.0725 | NaN | NaN | NaN |
177 | Lithuania | Marijampole | LT004 | 9.6438 | 5.3354 | NaN | 0.0023 | 0.0000 | 4.4750 | 0.3042 | 4.4416 | NaN | NaN | NaN |
178 | Lithuania | Paneve_ys | LT005 | 9.3622 | 4.9182 | NaN | 4.6914 | 0.0004 | 5.6043 | 0.1812 | 5.4930 | NaN | NaN | NaN |
179 | Lithuania | _iauliai | LT006 | 9.2918 | 4.0573 | NaN | 1.6049 | 0.0003 | 5.8384 | 0.4682 | 4.0696 | NaN | NaN | NaN |
180 | Lithuania | Taurage | LT007 | 8.7991 | 5.6147 | NaN | 4.4444 | -0.0004 | NaN | 2.0261 | 4.3284 | NaN | NaN | NaN |
181 | Lithuania | Tel_iai | LT008 | 9.3798 | 5.8581 | NaN | 2.7160 | 0.3948 | 5.2600 | 0.0004 | 5.4607 | NaN | NaN | NaN |
182 | Lithuania | Utena | LT009 | 9.7318 | 4.2084 | NaN | 2.4691 | -0.0005 | 6.0541 | 2.0671 | 3.9402 | NaN | NaN | NaN |
183 | Lithuania | Vilnius | LT00A | 9.9997 | 7.3600 | NaN | 5.1852 | 0.3601 | 5.7420 | 2.0261 | 4.9916 | NaN | NaN | NaN |
We can see that there are regions that have multiple missing values in Lithuania, Latvia, Greece, Estonia, and others.
Let's print all of the countries with missing values.
set(list(regional[regional["Community"].isnull()]['Country'].unique()) + \
list(regional[regional["Housing"].isnull()]['Country'].unique()) + \
list(regional[regional["Community"].isnull()]['Country'].unique()) + \
list(regional[regional["Education"].isnull()]['Country'].unique()))
{'Canada', 'Chile', 'Estonia', 'Finland', 'France', 'Latvia', 'Lithuania'}
Let's drop all the rows but continue to take this into consideration when making observations downstream in the analysis.
regional = regional.dropna()
Europe = ['Austria', 'Belgium', 'Iceland', 'Ireland', 'Czech Republic', 'Denmark',
'Estonia', 'Finland', 'France', 'Germany', 'Greece', 'Hungary',
'Italy', 'Lithuania', 'Luxembourg', 'Netherlands', 'Norway', 'Poland',
'Portugal', 'Slovak Republic', 'Slovenia', 'Spain', 'Sweden',
'Switzerland', 'Turkey', 'United Kingdom', 'Latvia']
America = ['Chile', 'Canada', 'United States', 'Mexico']
Australia = ['Australia', 'New Zealand']
Asia = ['Japan', 'Korea', 'Israel']
def annotate_continent_df(df):
continent = []
for country in df['Country']:
if country in Europe:
continent.append('Europe')
elif country in America:
continent.append('America')
elif country in Australia:
continent.append('Australia')
elif country in Asia:
continent.append('Asia')
else :
continent.append('Other')
df['Continent'] = continent
return df
regional = annotate_continent_df(regional)
regional.head()
Country | Region | Code | Education | Jobs | Income | Safety | Health | Environment | Civic engagement | Accessiblity to services | Housing | Community | Life satisfaction | Continent | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Australia | New South Wales | AU1 | 8.1128 | 8.3726 | 6.8640 | 9.5062 | 8.5489 | 9.2444 | 9.9997 | 7.9193 | 7.7778 | 8.8988 | 7.7778 | Australia |
1 | Australia | Victoria | AU2 | 8.2184 | 8.2976 | 5.8103 | 9.2593 | 8.9090 | 9.6254 | 9.9997 | 8.0810 | 9.4444 | 9.3364 | 8.5185 | Australia |
2 | Australia | Queensland | AU3 | 7.6024 | 7.8695 | 5.7549 | 9.5062 | 8.3470 | 9.2812 | 9.9994 | 8.0810 | 7.7778 | 8.6203 | 8.1481 | Australia |
3 | Australia | South Australia | AU4 | 7.3384 | 7.5562 | 5.7098 | 9.1358 | 8.3560 | 9.7677 | 9.9997 | 7.4340 | 7.7778 | 8.6203 | 8.5185 | Australia |
4 | Australia | Western Australia | AU5 | 7.6728 | 8.4713 | 6.7376 | 9.0123 | 8.8910 | 8.2345 | 9.9992 | 8.4045 | 9.4444 | 8.4612 | 7.7778 | Australia |
regional[regional.Country == 'Mexico'].tail()
Country | Region | Code | Education | Jobs | Income | Safety | Health | Environment | Civic engagement | Accessiblity to services | Housing | Community | Life satisfaction | Continent | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
212 | Mexico | Tamaulipas | ME28 | 1.6718 | 6.6511 | 0.2009 | 0.0002 | 2.2813 | 6.9263 | 0.6937 | 3.1800 | 0.5556 | 0.0023 | 9.9998 | America |
213 | Mexico | Tlaxcala | ME29 | 0.6159 | 7.0417 | 0.0016 | 1.4815 | 2.2543 | 2.5241 | -0.0002 | 0.0001 | 0.5556 | 3.6076 | 8.5185 | America |
214 | Mexico | Veracruz | ME30 | 0.4224 | 5.4793 | 0.0019 | 0.0012 | 0.5790 | 4.1813 | 0.8782 | 0.0003 | 0.0036 | 2.8119 | 5.5556 | America |
215 | Mexico | Yucatan | ME31 | 0.8271 | 8.1927 | 0.0028 | 6.7901 | 0.5282 | 8.4595 | 5.9823 | 3.6814 | 0.0036 | 8.8988 | 9.9998 | America |
216 | Mexico | Zacatecas | ME32 | 0.0018 | 6.2882 | 0.0024 | -0.0003 | 2.3070 | 8.5880 | 0.7757 | 0.0007 | 1.1111 | 7.9440 | 4.4444 | America |
ax = plt.figure(figsize = (8, 6))
ax = sns.boxplot(data = regional, x = 'Continent', y = 'Education', color = 'lightgrey')
ax = sns.swarmplot(data = regional, x = 'Continent', y = 'Education', palette = 'Set2')
plt.xlabel('Continent', fontsize= 21)
plt.ylabel('Education', fontsize= 21);
plt.figure(figsize = (8, 6))
sns.violinplot(data = regional, x = 'Continent', y = 'Education', palette = 'Set2',
inner = 'quartile')
#plt.ylim(0,10)
plt.xlabel('Continent', fontsize= 21)
plt.ylabel('Education', fontsize= 21);
Variance is a measure of the "spread" of a distribution. Mathematically, it is the mean of the difference between each point and the mean.
regional.groupby('Continent').agg({'Education': np.var}).rename( columns = {'Education': 'variance of education'})
variance of education | |
---|---|
Continent | |
America | 14.141527 |
Asia | 10.616445 |
Australia | 6.150897 |
Europe | 8.420490 |
regional.head()
Country | Region | Code | Education | Jobs | Income | Safety | Health | Environment | Civic engagement | Accessiblity to services | Housing | Community | Life satisfaction | Continent | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Australia | New South Wales | AU1 | 8.1128 | 8.3726 | 6.8640 | 9.5062 | 8.5489 | 9.2444 | 9.9997 | 7.9193 | 7.7778 | 8.8988 | 7.7778 | Australia |
1 | Australia | Victoria | AU2 | 8.2184 | 8.2976 | 5.8103 | 9.2593 | 8.9090 | 9.6254 | 9.9997 | 8.0810 | 9.4444 | 9.3364 | 8.5185 | Australia |
2 | Australia | Queensland | AU3 | 7.6024 | 7.8695 | 5.7549 | 9.5062 | 8.3470 | 9.2812 | 9.9994 | 8.0810 | 7.7778 | 8.6203 | 8.1481 | Australia |
3 | Australia | South Australia | AU4 | 7.3384 | 7.5562 | 5.7098 | 9.1358 | 8.3560 | 9.7677 | 9.9997 | 7.4340 | 7.7778 | 8.6203 | 8.5185 | Australia |
4 | Australia | Western Australia | AU5 | 7.6728 | 8.4713 | 6.7376 | 9.0123 | 8.8910 | 8.2345 | 9.9992 | 8.4045 | 9.4444 | 8.4612 | 7.7778 | Australia |
sns.jointplot(data = regional, x = 'Education', y = 'Income',
kind = 'kde', stat_func = pearsonr, n_levels = 15);
/Users/manoloflores/anaconda/lib/python3.6/site-packages/seaborn/axisgrid.py:1847: UserWarning: JointGrid annotation is deprecated and will be removed in a future release. warnings.warn(UserWarning(msg))
sns.lmplot(data = regional, x = 'Education', y = 'Income', hue = 'Continent',
fit_reg = False, palette = 'Set2')
<seaborn.axisgrid.FacetGrid at 0x1a1f4cb668>
%%opts Scatter [show_grid=True, width=500, height=300, tools=['hover']] (size=6, color= '#24f295')
scatter = hv.Scatter(regional , kdims = ['Education'], vdims = ['Income', 'Country', 'Continent'] )
scatter
%%opts Scatter [show_grid=True, width=450, height=350, tools=['hover']] (size=5)
# Make groupby object
gb = scatter.groupby('Continent')
# Take a look
gb
overlay = gb.overlay()
# Take a look
overlay
sns.lmplot(data = regional, x = 'Education', y = 'Life satisfaction', hue = 'Continent',
fit_reg = False, palette = 'Set2')
<seaborn.axisgrid.FacetGrid at 0x1a1f34c198>
for i, feature in enumerate(regional.columns[3:14]):
print(i, feature)
0 Education 1 Jobs 2 Income 3 Safety 4 Health 5 Environment 6 Civic engagement 7 Accessiblity to services 8 Housing 9 Community 10 Life satisfaction
regional.head()
Country | Region | Code | Education | Jobs | Income | Safety | Health | Environment | Civic engagement | Accessiblity to services | Housing | Community | Life satisfaction | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Australia | New South Wales | AU1 | 8.1128 | 8.3726 | 6.8640 | 9.5062 | 8.5489 | 9.2444 | 9.9997 | 7.9193 | 7.7778 | 8.8988 | 7.7778 |
1 | Australia | Victoria | AU2 | 8.2184 | 8.2976 | 5.8103 | 9.2593 | 8.9090 | 9.6254 | 9.9997 | 8.0810 | 9.4444 | 9.3364 | 8.5185 |
2 | Australia | Queensland | AU3 | 7.6024 | 7.8695 | 5.7549 | 9.5062 | 8.3470 | 9.2812 | 9.9994 | 8.0810 | 7.7778 | 8.6203 | 8.1481 |
3 | Australia | South Australia | AU4 | 7.3384 | 7.5562 | 5.7098 | 9.1358 | 8.3560 | 9.7677 | 9.9997 | 7.4340 | 7.7778 | 8.6203 | 8.5185 |
4 | Australia | Western Australia | AU5 | 7.6728 | 8.4713 | 6.7376 | 9.0123 | 8.8910 | 8.2345 | 9.9992 | 8.4045 | 9.4444 | 8.4612 | 7.7778 |
fig = plt.figure(figsize = (22, 12))
fig.subplots_adjust(hspace = 0.4, wspace = 0.3)
for i, feature in enumerate(regional.columns[3:14]):
ax = fig.add_subplot(4, 3, i+1 )
ax = sns.violinplot(data = regional, x= 'Continent', y = feature, palette = 'Set2', inner = 'quartile')
plt.savefig(fig_path + 'regional_distributions_oecd.svg', dpi = 500)
grids = sns.PairGrid(regional.iloc[:, 3:-1])
grids.map_diag(sns.violinplot)
grids.map_upper(sns.kdeplot)
grids.map_lower(plt.scatter)
plt.tight_layout()
plt.savefig(fig_path + 'regional_pairgrid.svg', dpi = 500)
corr_regional = regional.iloc[:, 3:-1].corr()
corr_regional
Education | Jobs | Income | Safety | Health | Environment | Civic engagement | Accessiblity to services | Housing | Community | Life satisfaction | |
---|---|---|---|---|---|---|---|---|---|---|---|
Education | 1.000000 | 0.443079 | 0.676615 | 0.250509 | 0.168494 | 0.101778 | 0.258711 | 0.695009 | 0.412449 | 0.557706 | 0.324148 |
Jobs | 0.443079 | 1.000000 | 0.454913 | 0.019657 | 0.038462 | 0.338001 | 0.117268 | 0.412259 | 0.334974 | 0.398493 | 0.562609 |
Income | 0.676615 | 0.454913 | 1.000000 | 0.128913 | 0.279097 | 0.368482 | 0.568871 | 0.540391 | 0.806074 | 0.566545 | 0.426924 |
Safety | 0.250509 | 0.019657 | 0.128913 | 1.000000 | 0.622432 | -0.114992 | 0.250749 | 0.545953 | 0.212540 | 0.373705 | -0.167887 |
Health | 0.168494 | 0.038462 | 0.279097 | 0.622432 | 1.000000 | 0.074726 | 0.184396 | 0.514609 | 0.350514 | 0.373204 | 0.112114 |
Environment | 0.101778 | 0.338001 | 0.368482 | -0.114992 | 0.074726 | 1.000000 | 0.141584 | 0.210058 | 0.565361 | 0.399082 | 0.588267 |
Civic engagement | 0.258711 | 0.117268 | 0.568871 | 0.250749 | 0.184396 | 0.141584 | 1.000000 | 0.271850 | 0.591958 | 0.240452 | 0.210696 |
Accessiblity to services | 0.695009 | 0.412259 | 0.540391 | 0.545953 | 0.514609 | 0.210058 | 0.271850 | 1.000000 | 0.453819 | 0.651400 | 0.364314 |
Housing | 0.412449 | 0.334974 | 0.806074 | 0.212540 | 0.350514 | 0.565361 | 0.591958 | 0.453819 | 1.000000 | 0.560259 | 0.421721 |
Community | 0.557706 | 0.398493 | 0.566545 | 0.373705 | 0.373204 | 0.399082 | 0.240452 | 0.651400 | 0.560259 | 1.000000 | 0.452420 |
Life satisfaction | 0.324148 | 0.562609 | 0.426924 | -0.167887 | 0.112114 | 0.588267 | 0.210696 | 0.364314 | 0.421721 | 0.452420 | 1.000000 |
?sns.heatmap
sns.heatmap(corr_regional, robust = True, linewidths = 1.3, cmap = 'magma_r');
plt.figure( figsize = (8, 4))
sns.clustermap(corr_regional, robust = True, cmap = 'magma_r');
<matplotlib.figure.Figure at 0x1a2139bb38>