From c83f9dd296827826c98ebea9c67d89dab8bda4a5 Mon Sep 17 00:00:00 2001 From: Joachim Bache-Mathiesen Date: Tue, 18 May 2021 13:56:12 +0200 Subject: [PATCH 1/6] Initial version of documentation generation --- __init__.py | 0 generate_documentation.py | 19 + unlabeled_preprocessing/prep_hdro_v2.ipynb | 2358 +++++++++++--------- 3 files changed, 1305 insertions(+), 1072 deletions(-) create mode 100644 __init__.py create mode 100644 generate_documentation.py diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/generate_documentation.py b/generate_documentation.py new file mode 100644 index 0000000..e7e5fdf --- /dev/null +++ b/generate_documentation.py @@ -0,0 +1,19 @@ +import pdoc +import os +context = pdoc.Context() + +modules = pdoc.Module(".", context=context, skip_errors=True) + +pdoc.link_inheritance(context) + +def recursive_htmls(mod): + yield mod.name, mod.html() + for submod in mod.submodules(): + yield from recursive_htmls(submod) + +for module_name, html in recursive_htmls(modules): + fname = f"documentation/{'/'.join(module_name.split('.'))}/index.html" + os.makedirs(os.path.dirname(fname), exist_ok=True) + with open(fname,"w", encoding="utf-8") as f: + f.writelines(html) + diff --git a/unlabeled_preprocessing/prep_hdro_v2.ipynb b/unlabeled_preprocessing/prep_hdro_v2.ipynb index 820f22f..6cf9b35 100644 --- a/unlabeled_preprocessing/prep_hdro_v2.ipynb +++ b/unlabeled_preprocessing/prep_hdro_v2.ipynb @@ -7,16 +7,9 @@ "outputs": [ { "output_type": "stream", - "name": "stdout", + "name": "stderr", "text": [ - "Something went wrong loading the Economic Fitness Dataset [Errno 2] File b'../data/unlabeled/raw/Economic_Fitness_CSV\\\\Country.csv' does not exist: b'../data/unlabeled/raw/Economic_Fitness_CSV\\\\Country.csv'\n", - "Something went wrong loading the Education Dataset [Errno 2] File b'../data/unlabeled/raw/Edstats_csv/EdStatsCountry.csv' does not exist: b'../data/unlabeled/raw/Edstats_csv/EdStatsCountry.csv'\n", - "../data/unlabeled/raw/__init__.py:41: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.\n", - " aquastat_eah = pd.read_csv(aquastat_eah_path, skipfooter=8)\n", - "../data/unlabeled/raw/__init__.py:42: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.\n", - " aquastat_wr = pd.read_csv(aquastat_wr_path, skipfooter=8)\n", - "../data/unlabeled/raw/__init__.py:43: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.\n", - " aquastat_wu = pd.read_csv(aquastat_wu_path, skipfooter=8)\n" + "..\\data\\unlabeled\\raw\\__init__.py:41: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.\n aquastat_eah = pd.read_csv(aquastat_eah_path, skipfooter=8)\n..\\data\\unlabeled\\raw\\__init__.py:42: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.\n aquastat_wr = pd.read_csv(aquastat_wr_path, skipfooter=8)\n..\\data\\unlabeled\\raw\\__init__.py:43: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.\n aquastat_wu = pd.read_csv(aquastat_wu_path, skipfooter=8)\n" ] } ], @@ -38,7 +31,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 5, "metadata": { "tags": [] }, @@ -58,7 +51,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 6, "metadata": { "tags": [] }, @@ -316,10 +309,10 @@ "\n", "[195 rows x 98 columns]" ], - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Population with at least some secondary education (% ages 25 and older)Population with at least some secondary education, female (% ages 25 and older)Population with at least some secondary education, male (% ages 25 and older)Mean years of schooling, female (years)Mean years of schooling, male (years)Share of seats in parliament (% held by women)Adolescent birth rate (births per 1,000 women ages 15-19)Vulnerable employment (% of total employment)Total population (millions)Urban population (%)...Gross enrolment ratio, pre-primary (% of preschool-age children)Percentage of primary schools with access to the internetPercentage of secondary schools with access to the internetGross enrolment ratio, tertiary (% of tertiary school-age population)Share of graduates in science, technology, engineering and mathematics programmes at tertiary level, female (%)Share of graduates in science, technology, engineering and mathematics programmes at tertiary level, male (%)Share of graduates from science, technology, engineering and mathematics programmes in tertiary education who are female (%)Share of graduates from science, technology, engineering and mathematics programmes in tertiary education who are male (%)Primary school teachers trained to teach (%)Pupil-teacher ratio, primary school (pupils per teacher)
AFG26.08013.22036.9201.9486.00627.24468.95779.72638.04225.8...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AGO30.23223.13338.0564.0236.35930.000150.52665.99531.82566.2...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ALB93.17493.70092.4979.70210.61429.50819.64252.8522.88161.2...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AND72.32771.48473.32710.43910.56446.429NaNNaN0.07788.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ARG57.15859.16154.82811.12310.72939.87762.78221.80544.78192.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
..................................................................
WSM74.94279.12771.583NaNNaN10.00023.88629.9830.19718.1...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
YEM28.02019.92036.9182.8805.1460.97160.35245.62729.16237.3...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ZAF75.47874.97778.20710.03110.29145.33367.90810.29858.55866.9...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ZMB44.44038.48854.0686.2838.17617.964120.11278.13417.86144.1...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ZWE64.93559.79270.7838.0668.92334.57186.13564.73914.64532.2...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
\n

195 rows × 98 columns

\n
" + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Population with at least some secondary education (% ages 25 and older)Population with at least some secondary education, female (% ages 25 and older)Population with at least some secondary education, male (% ages 25 and older)Mean years of schooling, female (years)Mean years of schooling, male (years)Share of seats in parliament (% held by women)Adolescent birth rate (births per 1,000 women ages 15-19)Vulnerable employment (% of total employment)Total population (millions)Urban population (%)...Gross enrolment ratio, pre-primary (% of preschool-age children)Percentage of primary schools with access to the internetPercentage of secondary schools with access to the internetGross enrolment ratio, tertiary (% of tertiary school-age population)Share of graduates in science, technology, engineering and mathematics programmes at tertiary level, female (%)Share of graduates in science, technology, engineering and mathematics programmes at tertiary level, male (%)Share of graduates from science, technology, engineering and mathematics programmes in tertiary education who are female (%)Share of graduates from science, technology, engineering and mathematics programmes in tertiary education who are male (%)Primary school teachers trained to teach (%)Pupil-teacher ratio, primary school (pupils per teacher)
AFG26.08013.22036.9201.9486.00627.24468.95779.72638.04225.8...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AGO30.23223.13338.0564.0236.35930.000150.52665.99531.82566.2...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ALB93.17493.70092.4979.70210.61429.50819.64252.8522.88161.2...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AND72.32771.48473.32710.43910.56446.429NaNNaN0.07788.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ARG57.15859.16154.82811.12310.72939.87762.78221.80544.78192.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
..................................................................
WSM74.94279.12771.583NaNNaN10.00023.88629.9830.19718.1...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
YEM28.02019.92036.9182.8805.1460.97160.35245.62729.16237.3...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ZAF75.47874.97778.20710.03110.29145.33367.90810.29858.55866.9...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ZMB44.44038.48854.0686.2838.17617.964120.11278.13417.86144.1...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ZWE64.93559.79270.7838.0668.92334.57186.13564.73914.64532.2...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
\n

195 rows × 98 columns

\n
" }, "metadata": {}, - "execution_count": 3 + "execution_count": 6 } ], "source": [ @@ -338,7 +331,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -356,7 +349,7 @@ ] }, "metadata": {}, - "execution_count": 4 + "execution_count": 7 } ], "source": [ @@ -372,7 +365,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -388,14 +381,14 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 9, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "Max, min and mean number of missing values for the columns\nMax: 49.743589743589745 %\nMin: 0.0 %\nMean: 10.616150019135096 %\n" + "Max, min and mean number of missing values for the columns\nMax: 49.743589743589745 %\nMin: 0.0 %\nMean: 10.616150019135095 %\n" ] } ], @@ -405,7 +398,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -574,10 +567,10 @@ "\n", "[8 rows x 67 columns]" ], - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Population with at least some secondary education (% ages 25 and older)Population with at least some secondary education, female (% ages 25 and older)Population with at least some secondary education, male (% ages 25 and older)Mean years of schooling, female (years)Mean years of schooling, male (years)Share of seats in parliament (% held by women)Adolescent birth rate (births per 1,000 women ages 15-19)Vulnerable employment (% of total employment)Total population (millions)Urban population (%)...Gender Development Index (GDI)Estimated gross national income per capita, female (2017 PPP $)Estimated gross national income per capita, male (2017 PPP $)Human Development Index (HDI), femaleHuman Development Index (HDI), maleInequality-adjusted income indexOverall loss in HDI due to inequality (%)Inequality in income (%)Coefficient of human inequalityInequality-adjusted HDI (IHDI)
count175.000000167.000000167.000000174.000000174.000000193.000000185.000000180.000000195.000000195.000000...167.000000178.000000178.000000167.000000167.000000156.000000152.000000156.000000152.000000152.000000
mean61.06807461.73601265.8235878.4800179.13340222.98129548.30934638.25801139.39142659.257436...0.93899414440.99851124458.3313540.7026830.7421860.54506419.38914523.40138519.0025990.595250
std29.61079829.28405026.3953583.4213322.80298411.82878440.52883427.774415146.48585523.231038...0.07455915359.93598623943.4826280.1658670.1431940.1727899.9487189.7440049.7773240.190002
min0.0000001.7380009.0000001.0700002.2560000.1000000.2830000.1440000.01100013.200000...0.488000186.041000640.1050000.2700000.4320000.1760004.4440008.5000004.4240000.232000
25%37.29650036.92500045.3565005.8500006.73375014.76500013.17700012.5382502.08100041.200000...0.9085002925.6142506275.9337500.5770000.6215000.40475010.79225016.60300010.5940000.431500
50%64.82800068.06700070.6820009.1110009.25250021.09400040.53600032.5335008.77200060.000000...0.9650008399.44250016951.3570000.7300000.7600000.52750017.93450021.77950017.5260000.604000
75%89.14500087.99050090.91650011.23050011.55100030.00000070.50400063.34550028.56250078.000000...0.98600022583.77950035488.4760000.8315000.8485000.69175027.61525028.62500027.0125000.767250
max100.000000100.000000100.00000013.88200014.43100055.660000186.53800094.5810001433.784000100.000000...1.03600071387.276000107833.0290000.9490000.9650000.85800045.30700056.99600044.1670000.899000
\n

8 rows × 67 columns

\n
" + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Population with at least some secondary education (% ages 25 and older)Population with at least some secondary education, female (% ages 25 and older)Population with at least some secondary education, male (% ages 25 and older)Mean years of schooling, female (years)Mean years of schooling, male (years)Share of seats in parliament (% held by women)Adolescent birth rate (births per 1,000 women ages 15-19)Vulnerable employment (% of total employment)Total population (millions)Urban population (%)...Gender Development Index (GDI)Estimated gross national income per capita, female (2017 PPP $)Estimated gross national income per capita, male (2017 PPP $)Human Development Index (HDI), femaleHuman Development Index (HDI), maleInequality-adjusted income indexOverall loss in HDI due to inequality (%)Inequality in income (%)Coefficient of human inequalityInequality-adjusted HDI (IHDI)
count175.000000167.000000167.000000174.000000174.000000193.000000185.000000180.000000195.000000195.000000...167.000000178.000000178.000000167.000000167.000000156.000000152.000000156.000000152.000000152.000000
mean61.06807461.73601265.8235878.4800179.13340222.98129548.30934638.25801139.39142659.257436...0.93899414440.99851124458.3313540.7026830.7421860.54506419.38914523.40138519.0025990.595250
std29.61079829.28405026.3953583.4213322.80298411.82878440.52883427.774415146.48585523.231038...0.07455915359.93598623943.4826280.1658670.1431940.1727899.9487189.7440049.7773240.190002
min0.0000001.7380009.0000001.0700002.2560000.1000000.2830000.1440000.01100013.200000...0.488000186.041000640.1050000.2700000.4320000.1760004.4440008.5000004.4240000.232000
25%37.29650036.92500045.3565005.8500006.73375014.76500013.17700012.5382502.08100041.200000...0.9085002925.6142506275.9337500.5770000.6215000.40475010.79225016.60300010.5940000.431500
50%64.82800068.06700070.6820009.1110009.25250021.09400040.53600032.5335008.77200060.000000...0.9650008399.44250016951.3570000.7300000.7600000.52750017.93450021.77950017.5260000.604000
75%89.14500087.99050090.91650011.23050011.55100030.00000070.50400063.34550028.56250078.000000...0.98600022583.77950035488.4760000.8315000.8485000.69175027.61525028.62500027.0125000.767250
max100.000000100.000000100.00000013.88200014.43100055.660000186.53800094.5810001433.784000100.000000...1.03600071387.276000107833.0290000.9490000.9650000.85800045.30700056.99600044.1670000.899000
\n

8 rows × 67 columns

\n
" }, "metadata": {}, - "execution_count": 7 + "execution_count": 10 } ], "source": [ @@ -596,7 +589,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -666,22 +659,13 @@ ] }, "metadata": {}, - "execution_count": 8 + "execution_count": 12 } ], "source": [ - "# Column values are shown\n", - "\n", "df_inicator_values.columns.values" ] }, - { - "source": [ - "## Initial Correlation Matrix" - ], - "cell_type": "markdown", - "metadata": {} - }, { "cell_type": "code", "execution_count": 13, @@ -716,23 +700,16 @@ "sns.heatmap(corr, vmin=-1, vmax=1, center=0, xticklabels=range(size), yticklabels=range(size),cmap='mako')" ] }, - { - "source": [ - "## Division of the columns" - ], - "cell_type": "markdown", - "metadata": {} - }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 14, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "['Population with at least some secondary education (% ages 25 and older)', 'Population with at least some secondary education, female (% ages 25 and older)', 'Population with at least some secondary education, male (% ages 25 and older)', 'Share of seats in parliament (% held by women)', 'Vulnerable employment (% of total employment)', 'Urban population (%)', 'Labour force participation rate (% ages 15 and older), female', 'Labour force participation rate (% ages 15 and older), male', 'Remittances, inflows (% of GDP)', 'Foreign direct investment, net inflows (% of GDP)', 'Infants lacking immunization, measles (% of one-year-olds)', 'Infants lacking immunization, DTP (% of one-year-olds)', 'Gross fixed capital formation (% of GDP)', 'Inequality in education (%)', 'Inequality in life expectancy (%)', 'Unemployment, youth (% ages 15?24)', 'Private capital flows (% of GDP)', 'Exports and imports (% of GDP)', 'Unemployment, total (% of labour force)', 'Youth not in school or employment (% ages 15-24)', 'Labour force participation rate (% ages 15 and older)', 'Employment to population ratio (% ages 15 and older)', 'Employment in agriculture (% of total employment)', 'Employment in services (% of total employment)', 'Working poor at PPP$3.20 a day (% of total employment)', 'Share of employment in nonagriculture, female (% of total employment in nonagriculture)', 'Gross capital formation (% of GDP)', 'Overall loss in HDI due to inequality (%)', 'Inequality in income (%)'] \n 29\n['Gross domestic product (GDP), total (2017 PPP $ billions)', 'GDP per capita (2017 PPP $)', 'Gross national income (GNI) per capita (constant 2017 PPP$)', 'Estimated gross national income per capita, female (2017 PPP $)', 'Estimated gross national income per capita, male (2017 PPP $)'] \n 5\n['Gender Inequality Index (GII)', 'Inequality-adjusted education index', 'Inequality-adjusted life expectancy index', 'Life expectancy index', 'Income index', 'Education index', 'Human Development Index (HDI)', 'Gender Development Index (GDI)', 'Human Development Index (HDI), female', 'Human Development Index (HDI), male', 'Inequality-adjusted income index'] \n 11\n['Mean years of schooling, female (years)', 'Mean years of schooling, male (years)', 'Life expectancy at birth (years)', 'Expected years of schooling (years)', 'Mean years of schooling (years)', 'Life expectancy at birth, female (years)', 'Life expectancy at birth, male (years)', 'Expected years of schooling, female (years)', 'Expected years of schooling, male (years)'] \n 9\n['Total population (millions)', 'Population ages 15?64 (millions)', 'Population ages 65 and older (millions)', 'Population under age 5 (millions)'] \n 4\n['Adolescent birth rate (births per 1,000 women ages 15-19)', 'Sex ratio at birth (male to female births)', 'Young age (0-14) dependency ratio (per 100 people ages 15-64)', 'Old-age (65 and older) dependency ratio (per 100 people ages 15-64)', 'HDI rank', 'Total unemployment rate (female to male ratio)', 'Youth unemployment rate (female to male ratio)', 'Coefficient of human inequality', 'Inequality-adjusted HDI (IHDI)'] \n 9\n" + "['Population with at least some secondary education (% ages 25 and older)', 'Population with at least some secondary education, female (% ages 25 and older)', 'Population with at least some secondary education, male (% ages 25 and older)', 'Share of seats in parliament (% held by women)', 'Vulnerable employment (% of total employment)', 'Urban population (%)', 'Labour force participation rate (% ages 15 and older), female', 'Labour force participation rate (% ages 15 and older), male', 'Remittances, inflows (% of GDP)', 'Foreign direct investment, net inflows (% of GDP)', 'Infants lacking immunization, measles (% of one-year-olds)', 'Infants lacking immunization, DTP (% of one-year-olds)', 'Gross fixed capital formation (% of GDP)', 'Inequality in education (%)', 'Inequality in life expectancy (%)', 'Unemployment, youth (% ages 15?24)', 'Private capital flows (% of GDP)', 'Exports and imports (% of GDP)', 'Unemployment, total (% of labour force)', 'Youth not in school or employment (% ages 15-24)', 'Labour force participation rate (% ages 15 and older)', 'Employment to population ratio (% ages 15 and older)', 'Employment in agriculture (% of total employment)', 'Employment in services (% of total employment)', 'Working poor at PPP$3.20 a day (% of total employment)', 'Share of employment in nonagriculture, female (% of total employment in nonagriculture)', 'Gross capital formation (% of GDP)', 'Overall loss in HDI due to inequality (%)', 'Inequality in income (%)'] \n 29\n['Gross domestic product (GDP), total (2017 PPP $ billions)', 'GDP per capita (2017 PPP $)', 'Gross national income (GNI) per capita (constant 2017 PPP$)', 'Estimated gross national income per capita, female (2017 PPP $)', 'Estimated gross national income per capita, male (2017 PPP $)'] \n 5\n['Gender Inequality Index (GII)', 'Inequality-adjusted education index', 'Inequality-adjusted life expectancy index', 'Life expectancy index', 'Income index', 'Education index', 'Human Development Index (HDI)', 'Gender Development Index (GDI)', 'Human Development Index (HDI), female', 'Human Development Index (HDI), male', 'Inequality-adjusted income index'] \n 11\n['Mean years of schooling, female (years)', 'Mean years of schooling, male (years)', 'Life expectancy at birth (years)', 'Expected years of schooling (years)', 'Mean years of schooling (years)', 'Life expectancy at birth, female (years)', 'Life expectancy at birth, male (years)', 'Expected years of schooling, female (years)', 'Expected years of schooling, male (years)'] \n 9\n['Adolescent birth rate (births per 1,000 women ages 15-19)', 'Total population (millions)', 'Sex ratio at birth (male to female births)', 'Population ages 15?64 (millions)', 'Young age (0-14) dependency ratio (per 100 people ages 15-64)', 'Old-age (65 and older) dependency ratio (per 100 people ages 15-64)', 'Population ages 65 and older (millions)', 'Population under age 5 (millions)', 'HDI rank', 'Total unemployment rate (female to male ratio)', 'Youth unemployment rate (female to male ratio)', 'Coefficient of human inequality', 'Inequality-adjusted HDI (IHDI)'] \n 13\n67\n" ] } ], @@ -741,7 +718,6 @@ "money_columns = []\n", "index_columns = []\n", "year_columns = []\n", - "millions_columns = []\n", "rest = []\n", "\n", "for column in df_inicator_values.columns.values:\n", @@ -753,8 +729,6 @@ " year_columns.append(column)\n", " elif 'index' in column.lower():\n", " index_columns.append(column)\n", - " elif 'millions' in column.lower():\n", - " millions_columns.append(column)\n", " else:\n", " rest.append(column)\n", "\n", @@ -762,8 +736,9 @@ "print(money_columns,'\\n',len(money_columns))\n", "print(index_columns,'\\n',len(index_columns))\n", "print(year_columns,'\\n',len(year_columns))\n", - "print(millions_columns,'\\n',len(millions_columns))\n", - "print(rest,'\\n',len(rest))" + "print(rest,'\\n',len(rest))\n", + "\n", + "print(len(percentage_columns)+len(money_columns)+len(index_columns)+len(year_columns)+len(rest))" ] }, { @@ -775,7 +750,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -783,20 +758,19 @@ "split_df2 = df_inicator_values[money_columns]\n", "split_df3 = df_inicator_values[index_columns]\n", "split_df4 = df_inicator_values[year_columns]\n", - "split_df5 = df_inicator_values[millions_columns]\n", - "split_df6 = df_inicator_values[rest]" + "split_df5 = df_inicator_values[rest]" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 16, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "- Dataframe 1 -\nMax, min and mean number of missing values for the columns\nMax: 49.743589743589745 %\nMin: 0.0 %\nMean: 14.624226348364274 %\n- Dataframe 2 -\nMax, min and mean number of missing values for the columns\nMax: 8.717948717948717 %\nMin: 2.051282051282051 %\nMean: 6.153846153846153 %\n- Dataframe 3 -\nMax, min and mean number of missing values for the columns\nMax: 20.0 %\nMin: 2.051282051282051 %\nMean: 9.790209790209792 %\n- Dataframe 4 -\nMax, min and mean number of missing values for the columns\nMax: 10.76923076923077 %\nMin: 1.0256410256410255 %\nMean: 5.584045584045585 %\n- Dataframe 5 -\nMax, min and mean number of missing values for the columns\nMax: 5.128205128205129 %\nMin: 0.0 %\nMean: 3.8461538461538467 %\n- Dataframe 6 -\nMax, min and mean number of missing values for the columns\nMax: 22.05128205128205 %\nMin: 3.076923076923077 %\nMean: 9.230769230769232 %\n" + "- Dataframe 1 -\nMax, min and mean number of missing values for the columns\nMax: 49.743589743589745 %\nMin: 0.0 %\nMean: 14.624226348364278 %\n- Dataframe 2 -\nMax, min and mean number of missing values for the columns\nMax: 8.717948717948717 %\nMin: 2.051282051282051 %\nMean: 6.153846153846153 %\n- Dataframe 3 -\nMax, min and mean number of missing values for the columns\nMax: 20.0 %\nMin: 2.051282051282051 %\nMean: 9.790209790209792 %\n- Dataframe 4 -\nMax, min and mean number of missing values for the columns\nMax: 10.76923076923077 %\nMin: 1.0256410256410255 %\nMean: 5.584045584045584 %\n- Dataframe 5 -\nMax, min and mean number of missing values for the columns\nMax: 22.05128205128205 %\nMin: 0.0 %\nMean: 7.57396449704142 %\n" ] } ], @@ -810,9 +784,7 @@ "print('- Dataframe 4 -')\n", "min4, max4 = print_missing_percentages(split_df4)\n", "print('- Dataframe 5 -')\n", - "min5, max5 = print_missing_percentages(split_df5)\n", - "print('- Dataframe 6 -')\n", - "min6, max6 = print_missing_percentages(split_df6)" + "min5, max5 = print_missing_percentages(split_df5)" ] }, { @@ -825,7 +797,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -833,125 +805,174 @@ "name": "stdout", "text": [ "[IterativeImputer] Completing matrix with shape (195, 29)\n", - "[IterativeImputer] Ending imputation round 1/49, elapsed time 0.22\n", - "[IterativeImputer] Ending imputation round 2/49, elapsed time 0.30\n", - "[IterativeImputer] Ending imputation round 3/49, elapsed time 0.42\n", - "[IterativeImputer] Ending imputation round 4/49, elapsed time 0.49\n", - "[IterativeImputer] Ending imputation round 5/49, elapsed time 0.56\n", - "[IterativeImputer] Ending imputation round 6/49, elapsed time 0.63\n", - "[IterativeImputer] Ending imputation round 7/49, elapsed time 0.73\n", - "[IterativeImputer] Ending imputation round 8/49, elapsed time 0.81\n", - "[IterativeImputer] Ending imputation round 9/49, elapsed time 0.92\n", - "[IterativeImputer] Ending imputation round 10/49, elapsed time 0.97\n", - "[IterativeImputer] Ending imputation round 11/49, elapsed time 1.03\n", - "[IterativeImputer] Ending imputation round 12/49, elapsed time 1.08\n", - "[IterativeImputer] Ending imputation round 13/49, elapsed time 1.13\n", - "[IterativeImputer] Ending imputation round 14/49, elapsed time 1.21\n", - "[IterativeImputer] Ending imputation round 15/49, elapsed time 1.30\n", - "[IterativeImputer] Ending imputation round 16/49, elapsed time 1.41\n", - "[IterativeImputer] Ending imputation round 17/49, elapsed time 1.50\n", - "[IterativeImputer] Ending imputation round 18/49, elapsed time 1.60\n", - "[IterativeImputer] Ending imputation round 19/49, elapsed time 1.69\n", - "[IterativeImputer] Ending imputation round 20/49, elapsed time 1.75\n", - "[IterativeImputer] Ending imputation round 21/49, elapsed time 1.81\n", - "[IterativeImputer] Ending imputation round 22/49, elapsed time 1.86\n", - "[IterativeImputer] Ending imputation round 23/49, elapsed time 1.92\n", - "[IterativeImputer] Ending imputation round 24/49, elapsed time 1.98\n", - "[IterativeImputer] Ending imputation round 25/49, elapsed time 2.06\n", - "[IterativeImputer] Ending imputation round 26/49, elapsed time 2.18\n", - "[IterativeImputer] Ending imputation round 27/49, elapsed time 2.26\n", - "[IterativeImputer] Ending imputation round 28/49, elapsed time 2.35\n", - "[IterativeImputer] Ending imputation round 29/49, elapsed time 2.43\n", - "[IterativeImputer] Ending imputation round 30/49, elapsed time 2.50\n", - "[IterativeImputer] Ending imputation round 31/49, elapsed time 2.57\n", - "[IterativeImputer] Ending imputation round 32/49, elapsed time 2.63\n", - "[IterativeImputer] Ending imputation round 33/49, elapsed time 2.71\n", - "[IterativeImputer] Ending imputation round 34/49, elapsed time 2.77\n", - "[IterativeImputer] Ending imputation round 35/49, elapsed time 2.90\n", - "[IterativeImputer] Ending imputation round 36/49, elapsed time 2.97\n", - "[IterativeImputer] Ending imputation round 37/49, elapsed time 3.09\n", - "[IterativeImputer] Ending imputation round 38/49, elapsed time 3.16\n", - "[IterativeImputer] Ending imputation round 39/49, elapsed time 3.22\n", - "[IterativeImputer] Ending imputation round 40/49, elapsed time 3.27\n", - "[IterativeImputer] Ending imputation round 41/49, elapsed time 3.32\n", - "[IterativeImputer] Ending imputation round 42/49, elapsed time 3.37\n", - "[IterativeImputer] Ending imputation round 43/49, elapsed time 3.44\n", - "[IterativeImputer] Ending imputation round 44/49, elapsed time 3.51\n", - "[IterativeImputer] Ending imputation round 45/49, elapsed time 3.61\n", - "[IterativeImputer] Ending imputation round 46/49, elapsed time 3.68\n", - "[IterativeImputer] Ending imputation round 47/49, elapsed time 3.75\n", - "[IterativeImputer] Ending imputation round 48/49, elapsed time 3.80\n", - "[IterativeImputer] Ending imputation round 49/49, elapsed time 3.86\n", + "[IterativeImputer] Ending imputation round 1/49, elapsed time 0.08\n", + "[IterativeImputer] Change: 228.09157262466636, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 2/49, elapsed time 0.15\n", + "[IterativeImputer] Change: 62.25538442972473, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 3/49, elapsed time 0.21\n", + "[IterativeImputer] Change: 42.97964424882681, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 4/49, elapsed time 0.27\n", + "[IterativeImputer] Change: 32.49599901077046, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 5/49, elapsed time 0.40\n", + "[IterativeImputer] Change: 24.095208515105927, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 6/49, elapsed time 0.46\n", + "[IterativeImputer] Change: 31.682426801495314, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 7/49, elapsed time 0.52\n", + "[IterativeImputer] Change: 140.975818147823, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 8/49, elapsed time 0.57\n", + "[IterativeImputer] Change: 39.46695219020222, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 9/49, elapsed time 0.62\n", + "[IterativeImputer] Change: 49.53774118145801, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 10/49, elapsed time 0.67\n", + "[IterativeImputer] Change: 44.68154513428162, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 11/49, elapsed time 0.72\n", + "[IterativeImputer] Change: 46.60916297395449, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 12/49, elapsed time 0.78\n", + "[IterativeImputer] Change: 21.86554010415628, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 13/49, elapsed time 0.83\n", + "[IterativeImputer] Change: 25.92892647183729, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 14/49, elapsed time 0.88\n", + "[IterativeImputer] Change: 18.83927866098054, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 15/49, elapsed time 0.94\n", + "[IterativeImputer] Change: 38.405696393605794, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 16/49, elapsed time 0.99\n", + "[IterativeImputer] Change: 38.25297377918183, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 17/49, elapsed time 1.04\n", + "[IterativeImputer] Change: 41.19811600250341, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 18/49, elapsed time 1.11\n", + "[IterativeImputer] Change: 34.112333701182216, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 19/49, elapsed time 1.16\n", + "[IterativeImputer] Change: 5.287239305308968, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 20/49, elapsed time 1.21\n", + "[IterativeImputer] Change: 9.819564256199563, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 21/49, elapsed time 1.26\n", + "[IterativeImputer] Change: 19.412604471395234, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 22/49, elapsed time 1.31\n", + "[IterativeImputer] Change: 39.00936641411021, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 23/49, elapsed time 1.36\n", + "[IterativeImputer] Change: 21.32069071919966, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 24/49, elapsed time 1.42\n", + "[IterativeImputer] Change: 27.607026109939916, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 25/49, elapsed time 1.46\n", + "[IterativeImputer] Change: 12.932035632308278, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 26/49, elapsed time 1.52\n", + "[IterativeImputer] Change: 20.500731676727007, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 27/49, elapsed time 1.56\n", + "[IterativeImputer] Change: 37.90038155709468, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 28/49, elapsed time 1.62\n", + "[IterativeImputer] Change: 23.402932009174002, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 29/49, elapsed time 1.67\n", + "[IterativeImputer] Change: 37.483562456385734, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 30/49, elapsed time 1.73\n", + "[IterativeImputer] Change: 38.620880987628844, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 31/49, elapsed time 1.78\n", + "[IterativeImputer] Change: 34.235210757797404, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 32/49, elapsed time 1.83\n", + "[IterativeImputer] Change: 5.958748778584713, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 33/49, elapsed time 1.88\n", + "[IterativeImputer] Change: 12.587404647069434, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 34/49, elapsed time 1.93\n", + "[IterativeImputer] Change: 19.321006684253774, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 35/49, elapsed time 1.98\n", + "[IterativeImputer] Change: 23.179317411983668, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 36/49, elapsed time 2.03\n", + "[IterativeImputer] Change: 16.391282472541278, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 37/49, elapsed time 2.08\n", + "[IterativeImputer] Change: 16.142877556306736, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 38/49, elapsed time 2.13\n", + "[IterativeImputer] Change: 8.395072354352404, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 39/49, elapsed time 2.18\n", + "[IterativeImputer] Change: 6.103784872152183, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 40/49, elapsed time 2.23\n", + "[IterativeImputer] Change: 4.99694813675092, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 41/49, elapsed time 2.27\n", + "[IterativeImputer] Change: 4.166011730288048, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 42/49, elapsed time 2.32\n", + "[IterativeImputer] Change: 3.547339840851814, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 43/49, elapsed time 2.37\n", + "[IterativeImputer] Change: 3.076150838166326, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 44/49, elapsed time 2.43\n", + "[IterativeImputer] Change: 2.704813693700327, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 45/49, elapsed time 2.47\n", + "[IterativeImputer] Change: 2.4026926256614516, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 46/49, elapsed time 2.51\n", + "[IterativeImputer] Change: 2.1506562406006946, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 47/49, elapsed time 2.56\n", + "[IterativeImputer] Change: 1.93535948311116, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 48/49, elapsed time 2.61\n", + "[IterativeImputer] Change: 1.7485725296176398, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 49/49, elapsed time 2.66\n", + "[IterativeImputer] Change: 1.5846246034457572, scaled tolerance: 0.381517 \n", "[IterativeImputer] Completing matrix with shape (195, 29)\n", "[IterativeImputer] Ending imputation round 1/49, elapsed time 0.00\n", "[IterativeImputer] Ending imputation round 2/49, elapsed time 0.01\n", "[IterativeImputer] Ending imputation round 3/49, elapsed time 0.01\n", - "[IterativeImputer] Ending imputation round 4/49, elapsed time 0.01\n", + "[IterativeImputer] Ending imputation round 4/49, elapsed time 0.02\n", "[IterativeImputer] Ending imputation round 5/49, elapsed time 0.02\n", "[IterativeImputer] Ending imputation round 6/49, elapsed time 0.02\n", - "[IterativeImputer] Ending imputation round 7/49, elapsed time 0.02\n", + "[IterativeImputer] Ending imputation round 7/49, elapsed time 0.03\n", "[IterativeImputer] Ending imputation round 8/49, elapsed time 0.03\n", - "[IterativeImputer] Ending imputation round 9/49, elapsed time 0.03\n", - "[IterativeImputer] Ending imputation round 10/49, elapsed time 0.03\n", + "[IterativeImputer] Ending imputation round 9/49, elapsed time 0.04\n", + "[IterativeImputer] Ending imputation round 10/49, elapsed time 0.04\n", "[IterativeImputer] Ending imputation round 11/49, elapsed time 0.04\n", - "[IterativeImputer] Ending imputation round 12/49, elapsed time 0.04\n", - "[IterativeImputer] Ending imputation round 13/49, elapsed time 0.04\n", + "[IterativeImputer] Ending imputation round 12/49, elapsed time 0.05\n", + "[IterativeImputer] Ending imputation round 13/49, elapsed time 0.05\n", "[IterativeImputer] Ending imputation round 14/49, elapsed time 0.05\n", - "[IterativeImputer] Ending imputation round 15/49, elapsed time 0.05\n", - "[IterativeImputer] Ending imputation round 16/49, elapsed time 0.05\n", - "[IterativeImputer] Ending imputation round 17/49, elapsed time 0.06\n", - "[IterativeImputer] Ending imputation round 18/49, elapsed time 0.06\n", + "[IterativeImputer] Ending imputation round 15/49, elapsed time 0.06\n", + "[IterativeImputer] Ending imputation round 16/49, elapsed time 0.06\n", + "[IterativeImputer] Ending imputation round 17/49, elapsed time 0.07\n", + "[IterativeImputer] Ending imputation round 18/49, elapsed time 0.07\n", "[IterativeImputer] Ending imputation round 19/49, elapsed time 0.07\n", - "[IterativeImputer] Ending imputation round 20/49, elapsed time 0.07\n", - "[IterativeImputer] Ending imputation round 21/49, elapsed time 0.07\n", - "[IterativeImputer] Ending imputation round 22/49, elapsed time 0.08\n", - "[IterativeImputer] Ending imputation round 23/49, elapsed time 0.08\n", - "[IterativeImputer] Ending imputation round 24/49, elapsed time 0.08\n", - "[IterativeImputer] Ending imputation round 25/49, elapsed time 0.09\n", - "[IterativeImputer] Ending imputation round 26/49, elapsed time 0.09\n", - "[IterativeImputer] Ending imputation round 27/49, elapsed time 0.09\n", - "[IterativeImputer] Ending imputation round 28/49, elapsed time 0.10\n", - "[IterativeImputer] Ending imputation round 29/49, elapsed time 0.10\n", - "[IterativeImputer] Ending imputation round 30/49, elapsed time 0.10\n", - "[IterativeImputer] Ending imputation round 31/49, elapsed time 0.11\n", - "[IterativeImputer] Ending imputation round 32/49, elapsed time 0.11\n", - "[IterativeImputer] Ending imputation round 33/49, elapsed time 0.11\n", - "[IterativeImputer] Ending imputation round 34/49, elapsed time 0.11\n", - "[IterativeImputer] Ending imputation round 35/49, elapsed time 0.12\n", - "[IterativeImputer] Ending imputation round 36/49, elapsed time 0.12\n", - "[IterativeImputer] Ending imputation round 37/49, elapsed time 0.12\n", - "[IterativeImputer] Ending imputation round 38/49, elapsed time 0.13\n", - "[IterativeImputer] Ending imputation round 39/49, elapsed time 0.13\n", - "[IterativeImputer] Ending imputation round 40/49, elapsed time 0.13\n", - "[IterativeImputer] Ending imputation round 41/49, elapsed time 0.14\n", - "[IterativeImputer] Ending imputation round 42/49, elapsed time 0.14\n", - "[IterativeImputer] Ending imputation round 43/49, elapsed time 0.14\n", - "[IterativeImputer] Ending imputation round 44/49, elapsed time 0.15\n", - "[IterativeImputer] Ending imputation round 45/49, elapsed time 0.15\n", - "[IterativeImputer] Ending imputation round 46/49, elapsed time 0.15\n", - "[IterativeImputer] Ending imputation round 47/49, elapsed time 0.16\n", - "[IterativeImputer] Ending imputation round 48/49, elapsed time 0.16\n", - "[IterativeImputer] Ending imputation round 49/49, elapsed time 0.16\n", - "/opt/anaconda3/lib/python3.7/site-packages/sklearn/impute/_iterative.py:603: ConvergenceWarning: [IterativeImputer] Early stopping criterion not reached.\n", - " \" reached.\", ConvergenceWarning)\n" + "[IterativeImputer] Ending imputation round 20/49, elapsed time 0.08\n", + "[IterativeImputer] Ending imputation round 21/49, elapsed time 0.08\n", + "[IterativeImputer] Ending imputation round 22/49, elapsed time 0.09\n", + "[IterativeImputer] Ending imputation round 23/49, elapsed time 0.09\n", + "[IterativeImputer] Ending imputation round 24/49, elapsed time 0.10\n", + "[IterativeImputer] Ending imputation round 25/49, elapsed time 0.10\n", + "[IterativeImputer] Ending imputation round 26/49, elapsed time 0.10\n", + "[IterativeImputer] Ending imputation round 27/49, elapsed time 0.11\n", + "[IterativeImputer] Ending imputation round 28/49, elapsed time 0.11\n", + "[IterativeImputer] Ending imputation round 29/49, elapsed time 0.12\n", + "[IterativeImputer] Ending imputation round 30/49, elapsed time 0.12\n", + "[IterativeImputer] Ending imputation round 31/49, elapsed time 0.12\n", + "C:\\Users\\joach\\.conda\\envs\\wsenv\\lib\\site-packages\\sklearn\\impute\\_iterative.py:685: ConvergenceWarning: [IterativeImputer] Early stopping criterion not reached.\n", + " warnings.warn(\"[IterativeImputer] Early stopping criterion not\"\n", + "[IterativeImputer] Ending imputation round 32/49, elapsed time 0.13\n", + "[IterativeImputer] Ending imputation round 33/49, elapsed time 0.13\n", + "[IterativeImputer] Ending imputation round 34/49, elapsed time 0.14\n", + "[IterativeImputer] Ending imputation round 35/49, elapsed time 0.14\n", + "[IterativeImputer] Ending imputation round 36/49, elapsed time 0.15\n", + "[IterativeImputer] Ending imputation round 37/49, elapsed time 0.15\n", + "[IterativeImputer] Ending imputation round 38/49, elapsed time 0.15\n", + "[IterativeImputer] Ending imputation round 39/49, elapsed time 0.16\n", + "[IterativeImputer] Ending imputation round 40/49, elapsed time 0.16\n", + "[IterativeImputer] Ending imputation round 41/49, elapsed time 0.17\n", + "[IterativeImputer] Ending imputation round 42/49, elapsed time 0.17\n", + "[IterativeImputer] Ending imputation round 43/49, elapsed time 0.18\n", + "[IterativeImputer] Ending imputation round 44/49, elapsed time 0.18\n", + "[IterativeImputer] Ending imputation round 45/49, elapsed time 0.19\n", + "[IterativeImputer] Ending imputation round 46/49, elapsed time 0.19\n", + "[IterativeImputer] Ending imputation round 47/49, elapsed time 0.20\n", + "[IterativeImputer] Ending imputation round 48/49, elapsed time 0.20\n", + "[IterativeImputer] Ending imputation round 49/49, elapsed time 0.21\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ - "" + "" ] }, "metadata": {}, - "execution_count": 12 + "execution_count": 17 }, { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "iVBORw0KGgoAAAANSUhEUgAABCkAAARiCAYAAACJaa3IAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzde7TlZ1kn+O9Tpy4hqSQQEsIlgZAEFERbpaTttsehBSWCyijQcmkFBilHF6Ijq5E1KIK3MdjION00TaEiyMjd1oiIihjtFtRUY0yTBCQEMGWIkPu9KrX3O39U0assss8mqbP3+3L257NWLU7t3958n9TlnKpvvb9nV2stAAAAAL1t6T0AAAAAQKKkAAAAAAahpAAAAACGoKQAAAAAhqCkAAAAAIagpAAAAACGoKQAAAAAhrB13hOq6iuTPDXJQ5K0JFcnuaC1dvmCZwMAAABWyLonKarqJ5K8PUkl+eskFx3++G1V9bLFjwcAAACsimqtzb5Y9XdJvqq1dtdRj29Pcmlr7RELng8AAABYEfNu95gmeXCSzxz1+IMOX7tbVbU7ye4kecNP/+Bjdz/jW49lxi87bTLplv2E73llt+xTX/nWbtkvfv2Pdsl93jU3dclNkjMe8qRu2Vf9wx90y35YzfzUs3DHPfbVXXKnN36iS26SfPzvXt8t+zlvfEe37E9+bnaBv0gf/7/+TZfcJDnugY/vlv2vbuv3a/xdN3+6W/ZXfOWPdcn9x2s+0CU3SSbTu+Y/aUEe/KLzu2X/v+/f3S37Jd/xhi65N/3Cc7rkJslna3u37Cf/ypu6ZV/6mgu6ZX/gg6+sbuHLcOl7+vzBYNG+6mlD/rzNKyl+LMmfVNUnklx1+LGHJjk3yYtmvai1tifJniSb9ycUAAAA2FDrlhSttfdX1SOTPC6HFmdWkn1JLmqt9TsuAAAAAGw6c9/do7U2TfKXS5gFAAAAWGFzSwoAAABYVT13Di7SkAspMuctSAEAAACWRUkBAAAADEFJAQAAAAxBSQEAAAAMweJMAAAAmGVysPcEK8VJCgAAAGAISgoAAABgCEoKAAAAYAh2UgAAAMAMbbo5d1JU7wFmcJICAAAAGIKSAgAAABiCkgIAAAAYgp0UAAAAMMtk0nuCleIkBQAAADAEJykWoN15W+8RujjhuH7ZWzrVbVX9duK2tjm3DI9sctwJXXK3rPX7zdXatFv2yffp16Mft73Pv5hsr37/zWtr2/tld9wv3vNfayYHb+2Yvnp2bG/dsrft6Je9o99v7W6mrd+/eu/Y2u/z2XRyZ7ds2EhOUgAAAABDcJICAAAAZmgTJ5iXyUkKAAAAYAhKCgAAAGAISgoAAABgCEoKAAAAYAgWZwIAAMAsFmculZMUAAAAwBCUFAAAAMAQlBQAAADAEOykAAAAgBna1E6KZXKSAgAAABiCkgIAAAAYgpICAAAAGIKdFAAAADDLZNJ7gpXiJAUAAAAwBCUFAAAAMIR7XVJU1fM3chAAAABgtR3LTopXJXnT3V2oqt1JdifJG376B7P7Gd96DDEAAADQR5sc7D3CSlm3pKiqS2ZdSnL6rNe11vYk2ZMkufQ97d4OBwAAAKyOeScpTk/ypCQ3HPV4JfnQQiYCAAAAVtK8kuK9SXa21i4++kJVXbiQiQAAAICVtG5J0Vp7wTrXnr3x4wAAAACr6lgWZwIAAMDmZnHmUt3rtyAFAAAA2EhKCgAAAGAISgoAAABgCHZSAAAAwAxtOuk9wkpxkgIAAAAYgpICAAAAGIKSAgAAABiCnRQAAAAwQ5sc7D3CSnGSAgAAABiCkgIAAAAYgpICAAAAGIKdFAAAADCLnRRL5SQFAAAAMISFn6Rok8miI2Zn33lbl9wtJ5zUJTdJDrbWLfuz11W37P139enbpq3fr++1LTu6Za+qtRuu6pJ71/5ru+QmyZba1i37ymv7/f669qY+uaf95Ntz5c88rUv28fuv65KbJJP0+9o1Sb+vXWvb7tstu5fW8evmjTf2+7e5W2/sd3j5+hv7/RrvZUutdcv+/C39Pp+tbT2hWzZspE17kqJXQQEA91avggIAYBSbtqQAAAAAvrxYnAkAAAAztGm/W9VWkZMUAAAAwBCUFAAAAMAQlBQAAADAEOykAAAAgFkmB3tPsFKcpAAAAACGoKQAAAAAhqCkAAAAAIZgJwUAAADM0OykWConKQAAAIAhKCkAAACAISgpAAAAgCHYSQEAAACz2EmxVE5SAAAAAENQUgAAAABDmFtSVNVXVtUTqmrnUY+ft7ixAAAAgFWzbklRVS9O8rtJfiTJR6vqqUdc/oVFDgYAAACslnmLM1+Y5LGttVur6qwk766qs1prv5KkZr2oqnYn2Z0k//mnXpjdT3/iBo0LAAAAy9Omk94jrJR5JcVaa+3WJGmtfbqqHp9DRcXDsk5J0Vrbk2RPkrRL3tk2aFYAAABgE5u3k+KaqvraL3zncGHxHUlOTfLVixwMAAAAWC3zSorvT3LNkQ+01g621r4/yTcvbCoAAABg5ax7u0drbd861/5i48cBAACAgUwO9p5gpcx9C1IAAACAZVBSAAAAAENQUgAAAABDmPcWpAAAALCy2mTSe4SV4iQFAAAAMAQlBQAAADAEJQUAAAAwBDspAAAAYIY2Odh7hJXiJAUAAAAwBCUFAAAAMAQlBQAAADAEJQUAAAAwBIszAQAAYJapxZnL5CQFAAAAMIRqrS004FvOffRiAwZ0cME/puv58wt+rlv2ru97W7fs0275eJfcbbXWJTdJLjlwc7fs+538qG7Zt962r1t2belz+Kx1bO/vc5/Tu2WvbdnWLXvrtp3dsq+99iNdclubdMk9pGd2v8/jjzj3+V1yb7ryLV1yk2Safn9GunX7/btlP3hyS7fsz+3o83n8gfs/1yU3ST417ffr7OSTzu2WfdMtV3bL/uQnP1rdwpfg1jf82035d9qdP/jWIX/enKQAgEH0KigAAEZhJwUAAADM0CY9T/ytHicpAAAAgCEoKQAAAIAhKCkAAACAIdhJAQAAALPYSbFUTlIAAAAAQ1BSAAAAAENQUgAAAABfpKrOq6qPV9UVVfWyu7n+0Kr606r6m6q6pKqefKyZdlIAAADADG1ysPcIXVTVWpLXJfnWJPuSXFRVF7TWLjviaT+Z5J2ttddX1aOTvC/JWceS6yQFAAAAcLTHJbmitXZla+1AkrcneepRz2lJTjr88clJrj7WUCUFAAAArJiq2l1Ve4/4tvuopzwkyVVHfH/f4ceO9Mok/7aq9uXQKYofOda53O4BAAAAK6a1tifJnnWeUnf3sqO+/6wkv9Fae01V/Yskv1lVj2mtTe/tXE5SAAAAAEfbl+TMI75/Rr74do4XJHlnkrTWPpzkuCSnHkuokxQAAAAwy2TSe4JeLkryiKp6eJJ/SPLMJM8+6jl/n+QJSX6jqh6VQyXF548l1EkKAAAA4J9orR1M8qIkf5jk8hx6F49Lq+pnquq7Dj/tJUleWFV/m+RtSZ7XWjv6lpB7xEkKAAAA4Iu01t6XQwsxj3zsFUd8fFmSb9rIzLklRVU97lB2u+jw+56el+Rjh4cFAAAA2BDrlhRV9dNJvj3J1qr64yT/PMmFSV5WVV/XWvv5xY8IAAAAfbTV3UnRxbyTFE9P8rVJdiS5JskZrbWbq+qXkvxVkrstKQ6/v+ruJPmK0x6YB590v42bGAAAANiU5i3OPNham7TWbk/yydbazUnSWrsjycz3PW2t7Wmt7Wqt7VJQAAAAAF+KeSXFgao6/vDHj/3Cg1V1ctYpKQAAAADuqXm3e3xza21/krTWjiwltiV57sKmAgAAgAG0qZ0Uy7RuSfGFguJuHr82ybULmQgAAABYSfNu9wAAAABYCiUFAAAAMIR5OykAAABgdU3spFgmJykAAACAISgpAAAAgCEoKQAAAIAhKCkAAACAIVicCQAAADM0izOXykkKAAAAYAhKCgAAAGAISgoAAABgCHZSAAAAwAxtMu09wkpxkgIAAAAYgpICAAAAGMLCb/c49ZVvXXTE3TrhuC6xSZLPXlfdsnd93893y977m8/qlv3EC8/ukvuVr39xl9wkOXFtW7fsO/d/tlv25dtO7Jb9i8fv6JJ7x7Rfn/yq6z/RLfvC73tot+wdZz+oS+5T3/qcLrlJcr+rf69b9m3n/B/dsj+773e6ZZ+w77e75D7qhNO75CbJWvr9GenVr3lKt+zXHH9et+wf+vBPdsn9htfd1iU3SXZ0/HX2J9/T77/7RW+7T7ds2Eh2UgAAAMAsdlIslds9AAAAgCEoKQAAAIAhKCkAAACAIdhJAQAAADO0yaT3CCvFSQoAAABgCEoKAAAAYAhKCgAAAGAIdlIAAADADG3Seo+wUpykAAAAAIagpAAAAACGoKQAAAAAhqCkAAAAAIZgcSYAAADM0CbT3iOsFCcpAAAAgCEoKQAAAIAhKCkAAACAIdzjnRRV9ZbW2vcvYhgAAAAYiZ0Uy7VuSVFVFxz9UJJ/XVX3TZLW2nctajAAAABgtcw7SXFGksuS/GqSlkMlxa4kr1nvRVW1O8nuJHns81+es7/le459UgAAAGBTm7eTYleS/57k5Uluaq1dmOSO1tqftdb+bNaLWmt7Wmu7Wmu7FBQAAADAl2LdkxSttWmS11bVuw7/7z/Oew0AAABsFm3aeo+wUr6kwqG1ti/JM6rqKUluXuxIAAAAwCq6R6ciWmu/n+T3FzQLAAAAsMLm7aQAAAAAWAr7JQAAAGCGNrGTYpmcpAAAAACGoKQAAAAAhqCkAAAAAIagpAAAAACGYHEmAAAAzNAmvSdYLU5SAAAAAENQUgAAAABDUFIAAAAAQ7CTAgAAAGZok9Z7hJXiJAUAAAAwBCUFAAAAMAQlBQAAADCEhe+kePHrf3TREXdrS8f6Zf9d/cJffcv13bKfeOHZ3bI/8Pgru+R+1euqS26S3Ln/tm7ZZ57xlG7Zx1/1X7pl/9Ip39Yl98CBG7vkJsnaidNu2d990/ndsvd/aluX3O2feWaX3CT5SOv3+ewpn3lzt+xP3/IP3bKvP/M7u+Re9rm/6JLb21Wf6/M5PEnecNmLumV/x6n/sUvugfqeLrlJsmXHad2yn3rdq7tl37D20m7Zm9203x+HVpKTFAAAAMAQlBQAAADAEJQUAAAAwBAWvpMCAAAAvly1Se8JVouTFAAAAMAQlBQAAADAEJQUAAAAwBCUFAAAAMAQLM4EAACAGSzOXC4nKQAAAIAhKCkAAACAISgpAAAAgCHYSQEAAAAzTKe9J1gtTlIAAAAAQ1BSAAAAAENQUgAAAABDsJMCAAAAZmiT3hOslntUUlTVv0ryuCQfba390WJGAgAAAFbRurd7VNVfH/HxC5P8xyQnJvnpqnrZgmcDAAAAVsi8nRTbjvh4d5Jvba29Ksm3JXnOrBdV1e6q2ltVey+45poNGBMAAADY7Obd7rGlqu6XQ2VGtdY+nySttduq6uCsF7XW9iTZkyT/7Zv+l7ZRwwIAAMAyTafVe4SVMq+kODnJf09SSVpVPbC1dk1V7Tz8GAAAAMCGWLekaK2dNePSNMl3b/g0AAAAwMq6V29B2lq7PcmnNngWAAAAYIXNW5wJAAAAsBT36iQFAAAArILptPcEq8VJCgAAAGAISgoAAABgCEoKAAAAYAh2UgAAAMAMbdJ7gtXiJAUAAAAwBCUFAAAAMAQlBQAAADAEOykAAABghum0eo+wUpykAAAAAIagpAAAAACGoKQAAAAAhmAnBQAAAMwwnfSeYLVUa22hAeee8zWLDZihqt9yk2nr96v4q9b69U7nbD+xW/YfdVpmc+m7frRLbpL8/LP+U7fsN995Y7fs4w/0y76lHeyS2/Pr4vb0+1x6MF2+fCRJztp2QpfcHd/wmi65SfKpD/1Qt+xtHQ92nvk1P9Ut+6av+NouuX/yjW/rkpskk5uv75b90l++vFv2h9bu2y37MXd9vkvu+d807ZKbJOf9cb9fZ1s6ft3smf2RT1+xqTdLXvYdj+v3h5IFevR7/3rInze3ewAAAABDUFIAAAAAQ1BSAAAAAEOwOBMAAABmmHbaf7eqnKQAAAAAhqCkAAAAAIagpAAAAACGYCcFAAAAzNDspFgqJykAAACAISgpAAAAgCEoKQAAAIAh2EkBAAAAM0ynvSdYLU5SAAAAAENQUgAAAABDUFIAAAAAQ7CTAgAAAGaYTqv3CCvFSQoAAABgCOuWFFX1z6vqpMMf36eqXlVVv1dV51fVycsZEQAAAFgF805S/HqS2w9//CtJTk5y/uHH3rTAuQAAAIAVM28nxZbW2sHDH+9qrX394Y//W1VdPOtFVbU7ye4kOe3Uh+Skk0459kkBAACATW1eSfHRqnp+a+1NSf62qna11vZW1SOT3DXrRa21PUn2JMm553xN27hxAQAAYHkszlyuebd7/ECS/7WqPpnk0Uk+XFVXJnnj4WsAAAAAG2LdkxSttZuSPK+qTkxy9uHn72ut/eMyhgMAAABWx7zbPZIkrbVbkvztgmcBAAAAVtiXVFIAAADAKprYSbFU83ZSAAAAACyFkgIAAAAYgpICAAAAGIKdFAAAADDD1E6KpXKSAgAAABiCkgIAAAAYgpICAAAAGIKdFAAAADDDtNlJsUxOUgAAAABDUFIAAAAAQ1BSAAAAAENQUgAAAABDWPjizDMe8qRFR8zU2sFu2WtbdnTJveQz7+ySmyQnrm3rln3n/tu65J7znT+V/33ng7pkv/xtP9wlN0ne+OR/1y37QFq37LW1E/rkJmmtz3/3znZXl9wkOWVrn8+jSXL7tM/Xjzv/6sey8+zndcl+6CN+MJ+74le7ZN+x/ZQuuUly8I5rumV//oIf6JL7NRckf/lvdnbJnh7o92ez6yb7u2WfcOIZ3bJPuuXGLrk//+Hkwulal+xH7Jh0yU2SWycHumX3+tq1CqbT3hOslk17kmIVCwqWr1dBwWrpVVCwfL0KiiTdCgqWr1dBwWrpVVAAX/42bUkBAAAAfHlRUgAAAABDWPhOCgAAAPhyNWnVe4SV4iQFAAAAMAQlBQAAADAEJQUAAAAwBDspAAAAYIbp1E6KZXKSAgAAABiCkgIAAAAYgpICAAAAGIKdFAAAADDDpNlJsUxOUgAAAABDUFIAAAAAQ1BSAAAAAENQUgAAAABDsDgTAAAAZphanLlU656kqKoXV9WZyxoGAAAAWF3zbvf42SR/VVX/tap+uKpOW8ZQAAAAwOqZV1JcmeSMHCorHpvksqp6f1U9t6pOnPWiqtpdVXurau/Vn/3bDRwXAAAA2Kzm7aRorbVpkj9K8kdVtS3Jtyd5VpJ/n+RuT1a01vYk2ZMkj//mf9c2blwAAABYnomdFEs1r6T4Jz8brbW7klyQ5IKqus/CpgIAAABWzrzbPb531oXW2h0bPAsAAACwwtYtKVprf7esQQAAAIDVNu92DwAAAFhZE1sWl2re7R4AAAAAS6GkAAAAAIagpAAAAACGYCcFAAAAzDBt1XuEleIkBQAAADAEJQUAAAAwBCUFAAAAMAQlBQAAADAEizMBAABghonFmUvlJAUAAAAwBCUFAAAAMAQlBQAAADAEOykAAABghknrPcFqqdYW+yN+zjmP8VO6RCftfFi37LP3f7Zb9nUPeEKX3Kuv+WCX3CQ5sP+Gbtmfft8vdct+5JNf0i17a/osTdpa/ZY1ben035wkx2/p16M/YNvx3bKv3H9Tl9zb13Z2yU2Slmm37Idk0i37m094YJfcd915a5fcJFlb29Et+5HT27plX3PyY7pl77z+I11yr7ir34/3A7Zs65Z9v639fo1//q47u2V/5NNXbOrNku/+uiduyr/TPv1vPjDkz5vbPQBgEL0KCgCAUSgpAAAAgCHYSQEAAAAzTDre/rqKnKQAAAAAhqCkAAAAAIagpAAAAACGYCcFAAAAzDDZlG9AOi4nKQAAAIAhKCkAAACAISgpAAAAgCEoKQAAAIAhWJwJAAAAM0x6D7BinKQAAAAAhqCkAAAAAIagpAAAAACGYCcFAAAAzGAnxXI5SQEAAAAMYd2TFFW1Pckzk1zdWvtAVT07yb9McnmSPa21u5YwIwAAALAC5t3u8abDzzm+qp6bZGeS307yhCSPS/LcxY4HAAAArIp5JcVXt9a+pqq2JvmHJA9urU2q6q1J/nbWi6pqd5LdSXLqqQ/KSSedsmEDAwAAwLJMUr1HWCnzdlJsOXzLx4lJjk9y8uHHdyTZNutFrbU9rbVdrbVdCgoAAADgSzHvJMWvJflYkrUkL0/yrqq6Msk3Jnn7gmcDAAAAVsi6JUVr7bVV9Y7DH19dVW9J8sQkb2yt/fUyBgQAAABWw7yTFGmtXX3ExzcmefdCJwIAAIBBTFrrPcJKmbeTAgAAAGAplBQAAADAEJQUAAAAwBCUFAAAAMAQ5i7OBAAAgFU16T3AinGSAgAAABiCkgIAAAAYgpICAAAA+CJVdV5Vfbyqrqiql63zvKdXVauqXceaaScFAAAAzLCqOymqai3J65J8a5J9SS6qqgtaa5cd9bwTk7w4yV9tRK6TFAAAAMDRHpfkitbala21A0nenuSpd/O8n03y6iR3bkSokgIAAAA42kOSXHXE9/cdfux/qqqvS3Jma+29GxWqpAAAAIAVU1W7q2rvEd92H/2Uu3lZO+L1W5K8NslLNnIuOykAAABghs26k6K1tifJnnWesi/JmUd8/4wkVx/x/ROTPCbJhVWVJA9MckFVfVdrbe+9nctJCgAAAOBoFyV5RFU9vKq2J3lmkgu+cLG1dlNr7dTW2lmttbOS/GWSYyookiWcpHhYTRcdwRGuum1ft+zLt53YLfv4q/5Ln9zW5j9pQQ6kX/Yjn7yhJ7rukb9732u6ZT/qaZ2yt+3sk5vk9v3Xdcu+bXqwW/at20/rE7z9tNxy88e7RD/ohW/pkpskP/WeH++W/UOf+1S37Hfcfn2X3G133dwlN0mmHb92XXnSI7tlf/UtH+uWff0jX9Ql99TL+329vq62dcu+ecsJ3bL3Z3+3bDan1trBqnpRkj9Mspbk11trl1bVzyTZ21q7YP3/h3vH7R4AMIheBQUAwN1prb0vyfuOeuwVM577+I3IVFIAAADADJOOp8BWkZ0UAAAAwBCUFAAAAMAQlBQAAADAEJQUAAAAwBAszgQAAIAZJr0HWDFOUgAAAABDUFIAAAAAQ1BSAAAAAEOwkwIAAABmmLTWe4SV4iQFAAAAMAQlBQAAADAEJQUAAAAwBDspAAAAYIZJ7wFWjJMUAAAAwBCUFAAAAMAQ5t7uUVXnJPnuJGcmOZjkE0ne1lq7acGzAQAAACtk3ZKiql6c5DuT/FmSb0hycQ6VFR+uqh9urV248AkBAACgk0la7xFWyrzbPV6Y5LzW2s8leWKSR7fWXp7kvCSvnfWiqtpdVXurau/VN9+wcdMCAAAAm9aXspPiC6ctdiQ5MUlaa3+fZNusF7TW9rTWdrXWdj34pPsd+5QAAADApjdvJ8WvJrmoqv4yyTcnOT9Jquq0JNcveDYAAABghaxbUrTWfqWqPpDkUUl+ubX2scOPfz6HSgsAAACADTH33T1aa5cmuXQJswAAAMBQLM5cri9lJwUAAADAwikpAAAAgCEoKQAAAIAhzN1JAQAAAKtq0nuAFeMkBQAAADAEJQUAAAAwBCUFAAAAMAQ7KQAAAGCGSWu9R1gpTlIAAAAAQ1BSAAAAAENQUgAAAABDsJMCAAAAZpjEToplcpICAAAAGIKSAgAAABjCwm/3OO6xr150xN2aHHdCl9wkWbvhqm7Z9bFf6Zb9i8fv6Jb9S6d8W5fcq/f9fpfcJFlb6/drfOvkjm7Zj3raa7plX/6el3TJveOjf9ElN0ke9RO/0y379aed1S37zNNu6pL7HZetdclNkuz53m7RLz/pK7plH98tOXlYTbvkXl7VJfeQfr/Gf25rnx/vJPn1s364W/YPXf3WLrkvnk665CbJ1q397mh/y4P6Zb/hc/fvlg0byUkKAAAAYAgWZwIAAMAMFmcul5MUAAAAwBCUFAAAAMAQlBQAAADAEOykAAAAgBmmzU6KZXKSAgAAABiCkgIAAAAYgpICAAAAGIKdFAAAADDDJHZSLJOTFAAAAMAQlBQAAADAEJQUAAAAwBDspAAAAIAZ7KRYLicpAAAAgCEoKQAAAIAhKCkAAACAISgpAAAAgCFYnAkAAAAzTJrFmcu07kmKqjq5qn6xqj5WVdcd/nb54cfuu87rdlfV3qra+/effP/GTw0AAABsOvNu93hnkhuSPL61dv/W2v2T/OvDj71r1otaa3taa7taa7sees55GzctAAAAsGnNKynOaq2d31q75gsPtNauaa2dn+Shix0NAAAAWCXzdlJ8pqpemuTNrbV/TJKqOj3J85JcteDZAAAAoKtJ7KRYpnknKb43yf2T/FlVXV9V1ye5MMkpSZ6x4NkAAACAFbLuSYrW2g1JfuLwt3+iqp6f5E0LmgsAAABYMfNOUqznVRs2BQAAALDy1j1JUVWXzLqU5PSNHwcAAADGMW12UizTvMWZpyd5Ug695eiRKsmHFjIRAAAAsJLmlRTvTbKztXbx0Req6sKFTAQAAACspHmLM1+wzrVnb/w4AAAAwKqad5ICAAAAVtYkdlIs07G8uwcAAADAhlFSAAAAAENQUgAAAABDUFIAAAAAQ7A4EwAAAGawOHO5nKQAAAAAhqCkAAAAAIaw8Ns9pjd+YtERd2vL2nFdcpPkrv3Xdstu04Pdsu+Y9uu8Dhy4sUvupEvqIVtav2NnW6u6ZWfbzm7Rd3z0L7rk3ucx39QlN0nWtry/W/bVd/W7I/GBB/p8Pqvq99+8vfp9Dr9r6326ZR/ItFv2lm4/5qv5b1R3tH5fu9rkzm7Zt046/XzXWp/cJDt23Ldb9h0HukXnpC2r+XubzcdOCgAAAJhh2vEfB1eRug0AAAAYgpICAAAAGIKSAgAAABiCnRQAAAAwwyR2UiyTkxQAAADAEJQUAAAAwBCUFAAAAMAQ7KQAAACAGSbNToplcpICAAAAGIKSAgAAABiCkgIAAAAYgpICAAAAGILFmQAAAJ9QWoEAACAASURBVDDDNBZnLpOTFAAAAMAQlBQAAADAEJQUAAAAwBDspAAAAIAZJs1OimVykgIAAAAYwr0uKarqD9a5truq9lbV3qv2ffjeRgAAAAArZN3bParq62ddSvK1s17XWtuTZE+SnPek1zobAwAAAMw1byfFRUn+LIdKiaPdd+PHAQAAgHFM7aRYqnklxeVJfrC19omjL1TVVYsZCQAAAFhF83ZSvHKd5/zIxo4CAAAArLJ1T1K01t69zuX7bfAsAAAAwAqbd7vHel6V5E0bNQgAAACMZhI7KZZp3rt7XDLrUpLTN34cAAAAYFXNO0lxepInJbnhqMcryYcWMhEAAACwkuaVFO9NsrO1dvHRF6rqwoVMBAAAAKykeYszX7DOtWdv/DgAAADAqjqWxZkAAACwqU3btPcIK2VL7wEAAAAAEiUFAAAAMAglBQAAADAEOykAAABghmla7xFWipMUAAAAwBCUFAAAAMAQlBQAAADAEKq1xd5f8/CHP7LLDTyt43vZbqlt3bJ37jyzW/bBmz/RLXvtxLO75O6/5ZNdcpNkZ/VbKdPzvrzbt9+3W/aBAzd0yV3bclyX3CT55O/9bLfshz/5x7tld2vwt57YKzlbtvT72rWl0++tJDm4dWe37G0Hb+2Su736/RvVllS37DvbpFv2ZPv9umWfcNfNXXJvbAe75CbJx/6f53TL/sofe3u37G3bT+6W/YlP/E2/39xL8MRzv2pTLqX4wBWXDvnz5iQFAAAAMAQlBQAAADAEJQUAAAAwhH43tQMAAMDgeu5jW0VOUgAAAABDUFIAAAAAQ1BSAAAAAENQUgAAAABDsDgTAAAAZpg2izOXyUkKAAAAYAhKCgAAAGAISgoAAABgCHZSAAAAwAzT3gOsGCcpAAAAgCEoKQAAAIAhKCkAAACAIdhJAQAAADNMW+s9wkpxkgIAAAAYgpICAAAAGMK6JUVVnVRV/3dV/WZVPfuoa/9pndftrqq9VbX3lltu2qhZAQAAgE1s3kmKNyWpJO9J8syqek9V7Th87Rtnvai1tqe1tqu1tuvEE0/eoFEBAABguaZpm/LbqOaVFOe01l7WWvud1tp3JflIkg9W1f2XMBsAAACwQua9u8eOqtrSWpsmSWvt56tqX5I/T7Jz4dMBAAAAK2PeSYrfS/ItRz7QWntzkpckObCooQAAAIDVs+5JitbaS2c8/v6q+oXFjAQAAACsonm3e6znVTm0WBMAAAA2pWkbd8nkZrRuSVFVl8y6lOT0jR8HAAAAWFXzTlKcnuRJSW446vFK8qGFTAQAAACspHklxXuT7GytXXz0haq6cCETAQAAACtp3uLMF6xz7dkbPw4AAACMYxo7KZZp3luQAgAAACyFkgIAAAAYgpICAAAAGMK8xZkAAACwsuykWC4nKQAAAIAhKCkAAACAISgpAAAAgCEsfCfFc974jkVHzHTyffp0MFdeO+mSmyR/+Yqf6pZ94fc9tFv2d990frfsqy54WpfcU7bu6JKbJLdPD3bLvq1j9utPO6tL7tV39Vsf9PAn/3i37E+975e7Zd/8/rd0y/4Xv3ZDl9yzDt7UJTdJDpz7gm7ZV1z5m92yn3fyOd2yf+vmT3XJ3ZLqkpskH/y2U7tlP+vRv9ot+//76A90yf3f/uasLrlJ8s9+7Le6ZX/8dc/vlv2yl32gW/ZmN7WSYqk27UmKXgUFq6VXQQFsTr0KClZLr4ICAL4U/iYPAAAADEFJAQAAAAyh343OAAAAMLhpLKVYJicpAAAAgCEoKQAAAIAhKCkAAACAISgpAAAAgCFYnAkAAAAzWJy5XE5SAAAAAENQUgAAAABDUFIAAAAAQ7CTAgAAAGZoVlIslZMUAAAAwBCUFAAAAMAQlBQAAADAEOykAAAAgBmmsZRimZykAAAAAIagpAAAAACGsJCSoqp2V9Xeqtr7kd9/zyIiAAAAgE1m3ZKiqh5YVa+vqtdV1f2r6pVV9T+q6p1V9aBZr2ut7Wmt7Wqt7fr6pzxt46cGAACAJWib9Nuo5p2k+I0klyW5KsmfJrkjyVOS/Nck/3mhkwEAAAArZV5JcXpr7T+01n4xyX1ba+e31v6+tfYfkjxsCfMBAAAAK2JeSXHk9bccdW1tg2cBAAAAVti8kuJ3q2pnkrTWfvILD1bVuUk+vsjBAAAAgNWydb2LrbVXzHj8iqr6/cWMBAAAAGOYDr1mcvM5lrcgfdWGTQEAAACsvHVPUlTVJbMuJTl948cBAAAAVtW6JUUOFRFPSnLDUY9Xkg8tZCIAAABgJc0rKd6bZGdr7eKjL1TVhQuZCAAAAAZhI8VyzVuc+YJ1rj1748cBAAAAVtWxLM4EAAAA2DBKCgAAAGAI83ZSAAAAwMqyk2K5nKQAAAAAhqCkAAAAAIagpAAAAACGYCcFAAAAzDC1lWKpFl5SfPJzvX5CJzlue5/ka2/qk5skW7ft7Ja94+wHdcve/6ltXXLP2nZCl9wkuX16sFv2A7Yd3y371u2ndcs+87Q+v7kfeKDfobctN3SLzs3vf0u37JPO+/4uuZeelzz66a/tkn3clrUuuUky2XbfbtmZ7u8WPemUe8rajk7JyYE27ZZ9/Dn9vn6c8aB+/907bz+lS+61f3Jxl9xDql/0pN+fz85ZO65bNmykTXu7R6+CAgDurV4FBQDAKDZtSQEAAAB8eVFSAAAAAEOwOBMAAABmsDZzuZykAAAAAIagpAAAAACGoKQAAAAAhmAnBQAAAMxgJ8VyOUkBAAAADEFJAQAAAAxBSQEAAAAMwU4KAAAAmMFOiuVykgIAAAAYgpICAAAAGIKSAgAAABiCnRQAAAAwg50Uy+UkBQAAAPBFquq8qvp4VV1RVS+7m+s7quodh6//VVWddayZSgoAAADgn6iqtSSvS/LtSR6d5FlV9eijnvaCJDe01s5N8tok5x9r7j0uKarqAccaCgAAAAztcUmuaK1d2Vo7kOTtSZ561HOemuTNhz9+d5InVFUdS+i6JUVVnXLUt/sn+euqul9VnbLO63ZX1d6q2nvFB3/7WOYDAAAANtiRf28//G33UU95SJKrjvj+vsOP3e1zWmsHk9yU5P7HMte8xZnXJvnM3QzxkRzaH3L23b2otbYnyZ4kedZvfcSeEQAAABjIkX9vn+HuTkQc/ff7L+U598i82z1emuTjSb6rtfbw1trDk+w7/PHdFhQAAADAl719Sc484vtnJLl61nOqamuSk5Ncfyyh65YUrbV/n+QHkryiqn65qk6Md2ABAACAze6iJI+oqodX1fYkz0xywVHPuSDJcw9//PQkH2ytHVNnMO92j7TW9iV5RlV9Z5I/TnL8sQQCAAAAY2utHayqFyX5wyRrSX69tXZpVf1Mkr2ttQuS/FqS36yqK3LoBMUzjzV3bklxxIC/V1UfSHJOklTV81trbzrWAQAAAGBcx/RmFV/WWmvvS/K+ox57xREf35nkGRuZeY/egrS1dkdr7aOHv/uqjRwEAAAAWG3rnqSoqktmXUpy+saPAwAAAKyqebd7nJ7kSUluOOrxSvKhhUwEAAAArKR5JcV7k+xsrV189IWqunAhEwEAAMAwVncnRQ/rlhSttResc+3ZGz8OAAAAsKru0eJMAAAAgEVRUgAAAABDmLeTAgAAAFaYnRTL5CQFAAAAMAQlBQAAADAEJQUAAAAwBCUFAAAAMASLMwEAAGAWezOXqlprCw34+rPOXWzADNur3yGRW6Z3dcu+vfr1Tuec/Zxu2Qc+844uuSc87pe75CbJ5PMXd8u+5oo3dsu+pU26Zbda65JbHX9fb9myvVv2cTtO6Zbd2rRb9mXv/j+75D7yu3+hS26SHDhwU7fsK970om7Zf/zSC7rkvuaf/UyX3CTZ+g0ndMs++I7f7Zb91Z/7k27Zf77t1C65W9b6ff247rp+f0bq6Su29vsx/4NP/I9N/df4s846u8vfaRft05++csifN7d7AMAgehUUAACjUFIAAAAAQ7CTAgAAAGbyb/vL5EcbAAAAGIKSAgAAABiCkgIAAAAYgp0UAAAAMENlyHfq3LScpAAAAACGoKQAAAAAhqCkAAAAAIZgJwUAAADMUnZSLJOTFAAAAMAQlBQAAADAEJQUAAAAwBCUFAAAAMAQLM4EAACAGSoWZy6TkxQAAADAEJQUAAAAwBCUFAAAAMAQ1i0pquq8Iz4+uap+raouqarfqqrT13nd7qraW1V7r73l5o2cFwAAAJZoyyb9NqZ5k/3CER+/Jslnk3xnkouSvGHWi1pre1pru1pru0498aRjnxIAAADY9O7Ju3vsaq197eGPX1tVz13EQAAAAMBqmldSPKCqfjxJJTmpqqq11g5fG/d8CAAAAPBlZ15J8cYkJx7++M1JTk3y+ap6YJKLFzkYAAAA9FZVvUdYKeuWFK21V814/Jqq+tPFjAQAAACsomO5ZeNuCwwAAACAe2PdkxRVdcmsS0lmvgUpAAAAwD01byfF6UmelOSGox6vJB9ayEQAAAAwivKeEcs0r6R4b5KdrbUvWpJZVRcuZCIAAABgJc1bnPmCda49e+PHAQAAAFaVcysAAADAEJQUAAAAwBDm7aQAAACAlVX+bX+p/GgDAAAAQ1BSAAAAAENQUgAAAABDsJMCAAAAZqiq3iOsFCcpAAAAgCFUa22hAf/yG39gsQEzrP3/7d15uGRnWS/s37N3OoFMZIIwp5kCORoI0HqhIkTCKBHEgUmNA9KCEgKOeOCgOHACisinHqUFAUUBDWgYNIfIpB/I0EQCkTAIdEhDJkIgdBiSdL/fH7var227qhKya73Lrvu+rn117Vq79u9dq/d+d9VT73rW6oE9YpMkX//Gld2yr7jiA92yv+3mR3bLPu/ar3XJ3bDzq11yk+Rmtdote8fqId2yb/XkP++WnS2P6xJ7YPWrJ39u5Wbdso+vXd2yb7bS5/frI7v6vVPzib/9n92yH/ziY7tlf/ptT+qWvWvXdV1yD+uSuqbnm5F3OLDfnm+/2W27Zb/pXld0yT35//1Kl9wk2bDh8G7Zd8213bI/9Y0vd8v+2EXb9uulBne76726vKZdtE/++/mj/H+zkgIAAAAYBT0pAAAAYJqOq1qXkaMNAAAAjIIiBQAAADAKihQAAADAKOhJAQAAAFOUnhSDcrQBAACAUVCkAAAAAEZBkQIAAAAYBUUKAAAAYBQ0zgQAAIApynv7g3K0AQAAgFFQpAAAAABGQZECAAAAGAU9KQAAAGCKKu/tD8nRBgAAAEZBkQIAAAAYBUUKAAAAYBRudE+Kqjq6tXblIgYDAAAAY1K12nsIS2XmSoqqOrOqjpnc3lRVn07yvqq6qKoeOONxm6tqa1Vtvezyj63zkAEAAID90bzTPR7ZWvvC5PbvJHlca+2uSR6S5EXTHtRa29Ja29Ra23Tsre6xTkMFAAAA9mfzihQbqmr3KSE3b619IElaa59IctBCRwYAAAAslXk9Kf4oyd9X1ZlJzqmq30/yhiSnJPnQogcHAAAAPVW53sSQZhYpWmt/UFUfSfLUJMdPvv74JH+X5DcXPzwAAABgWcy9ukdr7Z1J3rn3/VX1k0lesf5DAgAAAJbRTVm38rx1GwUAAACw9GaupKiqD0/blOTY9R8OAAAAsKzmne5xbJKHJblqr/sryXsWMiIAAAAYCY0zhzWvSPHmJIe21v7LlTyq6p0LGREAAACwlOZd3eNJM7Y9cf2HAwAAACwr61YAAACAUZh7CVIAAABYVlWrvYewVKykAAAAAEZBkQIAAAAYBUUKAAAAYBT0pAAAAIApqry3PyRHGwAAABgFRQoAAABgFBZ+usf9r/nkoiP2aTXVJTdJdqZ1y/7r7OyWfc1dntIt+5EXvapL7ju+8vUuuUnytQOP6pbddn6tW/b/ev3Pd8t+9uF375J73QE375KbJCtXvK9b9rV3fVK37J0bjuiSe+3HXtIlN0ke/OJju2X/4zMv65Z9l7f3u6zcnTc+pkvutm2v6ZKbJCv9niLl+o0/2i37sZee0y37ibfc0iX3zqs/1iU3SbZ/44pu2TtP+IVu2Qd9/u+7ZcN60pMCAAAApqjqV9BeRk73AAAAAEZBkQIAAAAYBUUKAAAAYBQUKQAAAIBR0DgTAAAAptA4c1hWUgAAAACjoEgBAAAAjIIiBQAAADAKelIAAADAFCvlvf0hOdoAAADAKChSAAAAAKOgSAEAAACMgp4UAAAAMEXVau8hLBUrKQAAAIBRUKQAAAAARkGRAgAAABgFPSkAAABgCj0phmUlBQAAADAKM4sUVXVeVT2nqu5yY75pVW2uqq1VtfX8L15y00YIAAAALIV5KymOTHJEkndU1fur6plVddt537S1tqW1tqm1tuleR91mXQYKAAAA7N/mFSmuaq39Ymvtjkl+IcndkpxXVe+oqs2LHx4AAACwLG5w48zW2j8n+eeqOj3JQ5I8LsmWRQ0MAAAAetM4c1jzihSf2PuO1trOJOdMPgAAAADWxczTPVprj5+2rap+cv2HAwAAACyrm3IJ0uet2ygAAACApTfzdI+q+vC0TUmOXf/hAAAAwHjUip4UQ5rXk+LYJA9LctVe91eS9yxkRAAAAMBSmlekeHOSQ1trH9p7Q1W9cyEjAgAAAJbSzCJFa+1JM7Y9cf2HAwAAACyreSspAAAAYGmtlJ4UQ7opV/cAAAAAWDeKFAAAAMAoKFIAAAAAo6AnBQAAAExRelIMykoKAAAAYBQUKQAAAIBRUKQAAAAARqFaawsNuNNxxy02YIqe1ZedqY7p/fb8yCNO6Jb9jS99tEvuxns+t0tuklz/tUu7ZX/9M3/eLfuz13+9W/bBnXKvza5OyUk74LBu2bt2XdstO7u+0SX2k698ZpfcJDn+p/64W3bPc30/9abf7Jb9nqf8fpfc37jj/+qSmyS77n/LbtlfeOmvdcu+/Vc/2y37guv6zGeHHbaxS26SXHPN57plH3D91d2yv+XmR3XLfv3Hzuv5Amjh7vftP9blNe2ivff9fzHK/zeNMwEAAGAKjTOH5XQPAAAAYBQUKQAAAIBRUKQAAAAARkFPCgAAAJiiysvmIVlJAQAAAIyCIgUAAAAwCooUAAAAwCg4uQYAAACmWKnV3kNYKlZSAAAAAKOgSAEAAACMgiIFAAAAMAp6UgAAAMAUtaInxZCspAAAAABGQZECAAAAGAVFCgAAAGAUFCkAAACAUdA4EwAAAKao8rJ5SFZSAAAAAKMws0hRVZuq6h1V9eqqukNVnVtVX66qD1TVvWc8bnNVba2qrV/ZsWP9Rw0AAADsd+atpPg/SV6Y5C1J3pPkpa21WyR51mTbPrXWtrTWNrXWNh126KHrNlgAAABg/zXv5JoNrbV/SJKqekFr7awkaa29rap+d+GjAwAAgI6qVnsPYanMW0nx9ap6aFX9cJJWVd+fJFX1wCQ7Fz46AAAAYGnMW0nxlKyd7rErycOSPLWqXpnkc0mevNihAQAAAMtk5kqK1tr5rbWHtdYe0Vr7WGvtjNbaEa21b0ly94HGCAAAACyBm3LB1+clecV6DQQAAADGpuqmvGzmxpp5tKvqw9M2JTl2/YcDAAAALKt5JaFjs9aL4qq97q+sXZIUAAAAYF3MK1K8OcmhrbUP7b2hqt65kBEBAAAAS2lmkaK19qQZ2564/sMBAACA8Vip1d5DWCozr+4BAAAAMBRFCgAAAGAUFCkAAACAUVCkAAAAAEZh3tU9AAAAYGnVipfNQ7KSAgAAABgFRQoAAABgFBa+buXu93jGoiOm2nn9ji65qxuO6JKbJDuv+1K37EO2v6Fb9hfv8H1dcr9895O65CbJFW/86W7Zjz3k1t2yX/fVL3bLPq52dcldqX715E9948vdsn/iFnfplr2zU+4LznhT7nNQ65K9a9d1XXKT5M4bH9Mt+z1P+f1u2d/5J52eI5252ic3yTWf6hado3b0C7/4kI3dsu9Zn++Se+3GJ3TJTZJPn//cbtnPPvJu3bI/urPfPA7rab89uaZXgQIAvlm9ChQAwHRV++3L5lFyugcAAAAwCooUAAAAwCgoUgAAAACj4OQaAAAAmKKqX8PhZWQlBQAAADAKihQAAADAKChSAAAAAKOgJwUAAABMUeVl85CspAAAAABGQZECAAAAGAVFCgAAAGAUFCkAAACAUdABBAAAAKaoFS+bh2QlBQAAADAKihQAAADAKChSAAAAAKPg5BoAAACYosrL5iFZSQEAAACMwkKKFFW1uaq2VtXWi7f/yyIiAAAAgP3MzCJFVR1aVb9RVf9WVV+uqiuq6r1V9ROzHtda29Ja29Ra23SH23/Hug4YAAAA2D/NO7nmL5P8bZKHJXlskkOSvDbJc6rq+Nba/1zw+AAAAKAfPSkGNe90j42ttVe21ra31n4vyaNaa59M8pNJfmDxwwMAAACWxbwixTVVdf8kqarvS/LFJGmt7UpSCx4bAAAAsETmrVt5SpKXVdXxSS5I8lNJUlW3TPJHCx4bAAAAsERmFilaax9O8u37uP+KqvrKwkYFAAAAI1ArelIM6aZcgvR56zYKAAAAYOnNLAlV1YenbUpy7PoPBwAAAFhW89atHJu1y49etdf9leQ9CxkRAAAAsJTmFSnenOTQ1tqH9t5QVe9cyIgAAACApTSvceaTZmx74voPBwAAAMajSuPMId2UxpkAAAAA60aRAgAAABgFRQoAAABgFJxcAwAAANOseNk8JCspAAAAgFFQpAAAAABGQZECAAAAGIWFn1xz2aX/uOgI9rDh6k90yz7hkGO7ZX/08nd3yf3w/W7WJTdJvnqzQ7tlf8df7+iWveG6q7tlX1jVKblfPfnw6pf9V1d/plv2UasHdck995rkgO/50y7Zh517WpfcJNm27TXdsn/j/n2Od5LkzNUusec860tdcpNk1zWf7ZZ9+jlHdMv+4EFHdcu+484vd8k9dturuuQmyc4D+z1HeunVF3fLvr7t6pa936s+8/WyspICAEaiV4ECAODGqKqjqurcqvrk5N8jZ3zt4VX1uar6wxvyvRUpAAAAgBvjWUne1lq7W5K3TT6f5jeTvOuGfmNFCgAAAODGeHSS3ed1vSrJ9+/ri6rqvkmOTfLWG/qNXfAVAAAApqgVL5v34djW2iVJ0lq7pKputfcXVNVKkhcl+bEkp9zQb+xoAwAAwJKpqs1JNu9x15bW2pY9tv9jklvv46HPvoERP5vk71trF9eNaECvSAEAAABLZlKQ2DJj+4Onbauqy6rqNpNVFLdJcvk+vuw7knx3Vf1skkOTHFhVO1prs/pXKFIAAAAAN8obk/x4kjMn/5699xe01n5k9+2q+okkm+YVKBKNMwEAAIAb58wkD6mqTyZ5yOTzVNWmqnrZTfnGVlIAAADANOVl895aa1dmH80wW2tbk/z0Pu5/ZZJX3pDvbSUFAAAAMAqKFAAAAMAoKFIAAAAAo+DkGgAAAJiirXjZPCQrKQAAAIBRUKQAAAAARkGRAgAAABgFJ9cAAADANCurvUewVKykAAAAAEZhZpGiqm5RVWdW1ceq6srJx4WT+44YapAAAADA/m/eSoq/TnJVkpNba0e31o5O8j2T+/5m2oOqanNVba2qrV+48rPrN1oAAABgvzWvJ8XG1toL9ryjtXZpkhdU1U9Ne1BrbUuSLUly73s9st3kUQIAAEAPelIMat5Kiouq6per6tjdd1TVsVX1K0kuXuzQAAAAgGUyr0jxuCRHJ3lXVV1VVV9M8s4kRyV57ILHBgAAACyRmad7tNauqqpXJDk3yXtbazt2b6uqhyc5Z8HjAwAAAJbEvKt7PD3J2UmeluSCqnr0Hpufv8iBAQAAAMtlXuPMJye5b2ttR1VtTHJWVW1srb0kSS16cAAAANBT0zhzUPOKFKu7T/ForW2rqpOzVqg4LooUAAAAwDqa1zjz0qo6afcnk4LFqUmOSXLiIgcGAAAALJd5RYrTkly65x2ttetba6clecDCRgUAAAAsnXlX99g+Y9u71384AAAAMB56Ugxr3koKAAAAgEEoUgAAAACjoEgBAAAAjMK8S5ACAADA8tKTYlBWUgAAAACjoEgBAAAAjIIiBQAAADAKelIAAADAFG3Fe/tDWniRYueu6xYdMTqt7eyWvZrWMbu6Zfey8+ovdsvede313bJXVw/qlr2r4894snxNk1Y6/l73zL627eqT+/Yn5fBfeW2X7PrHLrFJkpWOv9a77n/LbtnXfKpP7q5rPtsnOMnKIYd3yz6w4wLiDRsO65b9tU7PS7+WPvNob1/d1e/52Y7WLxvWk5IQAIxErwIFAMBYKFIAAAAAo6BIAQAAAIyCxpkAAAAwRVtZvr5kPVlJAQAAAIyCIgUAAAAwCooUAAAAwCjoSQEAAABT7Fr13v6QHG0AAABgFBQpAAAAgFFQpAAAAABGQU8KAAAAmKKteG9/SI42AAAAMAqKFAAAAMAoKFIAAAAAo6AnBQAAAEyhJ8WwHG0AAABgFBQpAAAAgFH4posUVfUP6zkQAAAAYLnN7ElRVfeZtinJSTMetznJ5iS53W1PyFFH3f6bHiAAAAD0sktPikHNa5z5gSTvylpRYm9HTHtQa21Lki1Jcs8TH9q+6dEBAAAAS2NekeLCJD/TWvvk3huq6uLFDAkAAABYRvPWrfz6jK85fX2HAgAAACyzmUWK1tpZSaqqTqmqQ/fa/PXFDQsAAABYNvMaZz49yc9l7bSPl1fVGa21syebn5/knAWPDwAAALppqxpnDmleT4onJ7lva21HVW1MclZVbWytvST7bqYJAAAA8E2ZV6RYba3tSJLW2raqOjlrhYrjokgBAAAArKN561YuraqTdn8yKVicmuSYJCcucmAAAADAcpm3kuK0JNfveUdr7fokp1XVSxc2KgAAABiBtuIkgiHNLFK01rbP2Pbu9R8OAAAAsKy0KQUAAABGQZEC5jxNlAAAIABJREFUAAAAGIV5PSkAAABgae1a1ZNiSFZSAAAAAKOgSAEAAACMgiIFAAAAMAp6UgAAAMAUbUVPiiFZSQEAAACMwsJXUtz2aS9YdMQ+HXRg65KbJF/6Ur/az2V/8jPdsl/4okd2y7748od2yf3lF5zeJTdJrtz5jW7Zx+/a2S3704cf3y37tw7Y1SX3a61f9f63r/pkt+y3P/SYbtkH3+WWXXJ/6HVnd8lNkjsceFi37Os3/mi37Cte+mvdso/a8akuuaefc0SX3CQ5sOP7Yy9+3TO6Zb929YRu2Q99zc91yb3PKy/qkpskh3d80/utjzy6W/bPva3f8zNYT1ZSAAAAAKOgSAEAAACMgsaZAAAAMIXGmcOykgIAAAAYBUUKAAAAYBQUKQAAAIBR0JMCAAAApmirvUewXKykAAAAAEZBkQIAAAAYBUUKAAAAYBT0pAAAAIAp2kr1HsJSsZICAAAAGAVFCgAAAGAUFCkAAACAUdCTAgAAAKbx1v6gHG4AAABgFBQpAAAAgFFQpAAAAABGYWaRoqoOr6r/XVV/UVVP3Gvb/1ns0AAAAIBlMm8lxSuSVJLXJ3l8Vb2+qg6abLvftAdV1eaq2lpVWy/+59ev01ABAABgYKv76cdIzStS3KW19qzW2t+11h6V5Lwkb6+qo2c9qLW2pbW2qbW26Q7f/YPrNlgAAABg/zXvEqQHVdVKa21XkrTWfruqtif5pySHLnx0AAAAwNKYt5LiTUketOcdrbVXJfmFJNcualAAAADA8pm5kqK19stVdY+qOiXJ+1prOyb3n1NVTx9khAAAANCLa2IOat7VPU5PcnaS05NcUFWP3mPzby9yYAAAAMBymdeTYnOS+7bWdlTVxiRnVdXG1tpLsnbVDwAAAIB1Ma9IsbrHKR7bqurkrBUqjosiBQAAALCO5p1dc2lVnbT7k0nB4tQkxyQ5cZEDAwAAgO5W9tOPkZo3tNOSXLrnHa2161trpyV5wMJGBQAAACydeVf32D5j27vXfzgAAADAshrxIg8AAABgmcxrnAkAAABLq7y1PyiHGwAAABgFRQoAAABgFBQpAAAAgFFQpAAAAABGQeNMAAAAmKJWWu8hLBUrKQAAAIBRWPhKiv/nnM2LjtinDQf1q3bt+FK/BSpn7PxKt+wXHfzwbtkv/ejTuuQ+ePWILrlJcshht++Wff3Or3bLPvErH+uW/Wcbf7ZLbtv59S65SbLzmi3dsp/wP17WLfv2t9nVJffEy8/okpskb7/ZbbtlP/bSc7plv+/rV3bLvviQjV1yP3jQUV1yk2TDhsO6Zb929YRu2Y/feWG37Cfc/UVdcm+98vguuUmy4+Dbdct+3F1f3C378rf1eZ4C681KCgAAAGAU9KQAAACAKcpb+4NyuAEAAIBRUKQAAAAARkGRAgAAABgFPSkAAABgipXV3iNYLlZSAAAAAKOgSAEAAACMgiIFAAAAMAp6UgAAAMAUK97aH5TDDQAAAIyCIgUAAAAwCooUAAAAwCgoUgAAAACjoHEmAAAATFErrfcQloqVFAAAAMAoKFIAAAAAo6BIAQAAAIzCzJ4UVXXrJL+WZFeS5yY5PckPJrkwyRmttUsWPkIAAADoZMVb+4Oad7hfmeSjSS5O8o4kX0vyyCT/nORPpj2oqjZX1daq2vq6bVes01ABAACA/dm8IsWxrbU/aK2dmeSI1toLWmufba39QZLjpj2otbaltbaptbbpcRtvua4DBgAAAPZP84oUe27/8722ra7zWAAAAIAlNrMnRZKzq+rQ1tqO1tpzdt9ZVXdN8vHFDg0AAAD60pNiWDMPd2vtuUluX1WnVNWhe9z/70letujBAQAAAMtjZpGiqk5PcnbWrupxQVU9eo/Nz1/kwAAAAIDlMu90j81J7tta21FVG5OcVVUbW2svSVKLHhwAAACwPOYVKVZbazuSpLW2rapOzlqh4rgoUgAAALCf05NiWPMO96VVddLuTyYFi1OTHJPkxEUODAAAAFgu84oUpyW5dM87WmvXt9ZOS/KAhY0KAAAAWDozT/dorW2fse3d6z8cAAAAYFk5uwYAAAAYhXmNMwEAAGBpaZw5LIcbAAAAGAVFCgAAAGAUFCkAAACAUdCTAgAAAKbQk2JYDjcAAAAwCooUAAAAwCgs/HSPXzj1pYuO2KeDDuwSmyT54peqW/blf/Lz3bKf+i/P6ZZ96jF/2CX3W6/b3CU3SQ7/ype6ZX/86/2yv3j807plP/Xzr+6Su2Nnv3ryC6+7ulv2X17w092yD/3qUV1yT9lwTJfcJHnTt17cLfuJt9zSLfvzf/sj3bLvWZ/vknvHnV/ukpskX2s7u2U/9DU/1y37CXd/Ubfs19zrM11y79Ral9wkOXjHtm7Zf3PRz3TLfvaq95/ZP+hJAQAAAFOsrvQrui0j5TYAAABgFBQpAAAAgFFQpAAAAABGQU8KAAAAmGLFW/uDcrgBAACAUVCkAAAAAEZBkQIAAAAYBUUKAAAAYBQ0zgQAAIApNM4clsMNAAAAjIIiBQAAADAKihQAAADAKOhJAQAAAFOsemt/UA43AAAAMAqKFAAAAMAoKFIAAAAAo3Cje1JU1a1aa5cvYjAAAAAwJivVewTLZeZKiqo6aq+Po5O8v6qOrKqjZjxuc1VtraqtF73rDes+aAAAAGD/M28lxReSXLTXfbdLcl6SluTO+3pQa21Lki1J8n0vP6/dxDECAAAAS2BeT4pfTvLxJI9qrd2ptXanJNsnt/dZoAAAAAD4ZsxcSdFa+92qem2SF1fVxUl+LWsrKAAAAGC/t+pyE4Oae7hba9tbaz+c5B1Jzk1y8MJHBQAAACyduUWKqrpHVZ2StSLF9yR58OT+hy94bAAAAMASmXd1j6cnOTvJ6UkuSPLQ1toFk83PX/DYAAAAgCUy7+oeT05y39bajqramOSsqtrYWntJEleLBQAAANbNvCLFamttR5K01rZV1clZK1QcF0UKAAAA9nMrGmcOat7hvrSqTtr9yaRgcWqSY5KcuMiBAQAAAMtlXpHitCSX7nlHa+361tppSR6wsFEBAAAAS2fm6R6tte0ztr17/YcDAAAALKt5PSkAAABgaa3qSTEohxsAAAAYBUUKAAAAYBQUKQAAAIBR0JMCAAAAptCTYlgONwAAADAKihQAAADAKFRrbaEBD7jLCYsN4D85sPrVnT573TXdsq/ttN/vechRXXKT5CHvPrhb9jXXfLZb9jEr/c5S+8KunX2Ca7VPbpK067pFH3P0t3XL/sIXP9Qt+5bH3LdL7pVX9tvnO6/2+72+4uA7dsu+3cYndMn9rm2v6pKbJF/Lrm7Zr/7yRd2yb93xb9dlC36uP81n3nJml9wkudujf6Nbdjo+F1+59qpu2R+/aFt1Cx/AT5513n75mvYVP3SfUf6/6UkBACPRq0ABAEynJ8WwHG4AAABgFBQpAAAAgFFQpAAAAABGQZECAAAAGAWNMwEAAGCKFW/tD8rhBgAAAEZBkQIAAAAYBUUKAAAAYBT0pAAAAIApVqv3CJaLlRQAAADAKChSAAAAAKOgSAEAAACMgp4UAAAAMMWqt/YH5XADAAAAo6BIAQAAAIyCIgUAAAAwCnpSAAAAwBR6UgzL4QYAAABGYWaRoqoevsftW1TVy6vqw1X1V1V17IzHba6qrVW19ZKrv7Se4wUAAAD2U/NWUjx/j9svSnJJku9L8oEkL532oNbaltbaptbaptscfsRNHyUAAACw37sxPSk2tdZOmtx+cVX9+CIGBAAAACyneUWKW1XVzyepJIdXVbXW2mSbfhYAAADs1w5Yqd5DWCrzCg1/muSwJIcmeVWSY5Kkqm6d5EOLHRoAAACwTGaupGitPa+q7pHkdkne11rbMbn/0qr6qyEGCAAAAIxHVR2V5HVJNibZluSxrbWr9vF1L0zyyKwtkDg3yRl7nJ2xT/Ou7nF6krOTnJ7kgqp69B6bn7/vRwEAAAD7sWcleVtr7W5J3jb5/D+pqu9M8l1J7pnkW5N8W5IHzvvG83pSbE5y39bajqramOSsqtrYWntJ1vpUAAAAwH5rVTfGfXl0kpMnt1+V5J1JfmWvr2lJbpbkwKzVDzYkuWzeN55XpFjd4xSPbVV1ctYKFcdFkQIAAAD+W6qqzVlbmLDbltbalhv48GNba5ckSWvtkqq61d5f0Fr7l6p6R5JLslY/+MPW2oXzvvG8IsWlVXVSa+1Dk5AdVXVqkj9LcuINHDwAAAAwIpOCxNSiRFX9Y5Jb72PTs2/I96+quyY5IcntJ3edW1UPaK3906zHzStSnJbk+j3vaK1dn+S0qnrpDRkYAAAA8N9La+3B07ZV1WVVdZvJKorbJLl8H1/2mCTv3X12RlX9Q5L7JZlZpJh5dk1rbXtr7dIp294967EAAADw391q7Z8fN9Ebk/z45PaPZ+2CG3v7bJIHVtUBVbUha00z557uoQUIAAAAcGOcmeQhVfXJJA+ZfJ6q2lRVL5t8zVlJPpXkI0nOT3J+a+1N877xvNM9AAAAAP5Da+3KJKfs4/6tSX56cntnkp+5sd/bSgoAAABgFKykAAAAgClWvbU/KIcbAAAAGAVFCgAAAGAUFCkAAACAUVh4T4pL6sBFR+zTrrazS26SrNRqt+xdu67rln1QbvrFdr9ZKwfdskvuw8+9oktuktztoH4/459f2dAt+8rql33AAX3a+Bx00BFdcpPkg799/27Z93rGX3XLTqf57Ior3p+VlT5/NzdsOLxLbpJs/0a/ufT6az7XLfvT5z+3S+7OAw/tktvb4f2epmTHwbfrln3wjm1dcu/26N/okpsknzy7z+9Wkmx85C91yz700Dt1y4b1pHEmAIxErwIFADCdxpnDcrgBAACAUVCkAAAAAEZBkQIAAAAYBT0pAAAAYIrVlY6dd5eQlRQAAADAKChSAAAAAKOgSAEAAACMgp4UAAAAMMWqt/YH5XADAAAAo6BIAQAAAIyCIgUAAAAwCnpSAAAAwBSr1XsEy8VKCgAAAGAUFCkAAACAUVCkAAAAAEZBkQIAAAAYhRvdOLOqjm6tXbmIwQAAAMCYrK7onDmkmSspqurMqjpmcntTVX06yfuq6qKqeuAgIwQAAACWwrzTPR7ZWvvC5PbvJHlca+2uSR6S5EXTHlRVm6tqa1Vt/fLVFl0AAAAA880rUmyoqt2nhNy8tfaBJGmtfSLJQdMe1Frb0lrb1FrbdIvDj16noQIAAAD7s3k9Kf4oyd9X1ZlJzqmq30/yhiSnJPnQogcHAAAAPa263MSgZhYpWmt/UFUfSfLUJMdPvv74JH+X5LcWPzwAAABgWdyQq3tcmmRLkve11nbsvrOqHp7knEUNDAAAAFgu867u8fQkZyc5PckFVfXoPTY/f5EDAwAAAJbLvJUUT05y39bajqramOSsqtrYWntJEheLBQAAYL+2uuKl75DmFSlWd5/i0VrbVlUnZ61QcVwUKQAAAIB1NK9P6aVVddLuTyYFi1OTHJPkxEUODAAAAFgu84oUp2WtceZ/aK1d31o7LckDFjYqAAAAYOnMuwTp9hnb3r3+wwEAAIDxWJ331j7ryuEGAAAARkGRAgAAABgFRQoAAABgFBQpAAAAgFGY2TgTAAAAltlKVe8hLBUrKQAAAIBRUKQAAAAARkGRAgAAABiFhfek+N6XvGLREft00AH9zhu64iutW/b5v/Xr3bLf9gPXdMt+9JUv7JJ79dmP7ZKbJDt2Xtst+8gDDuqWffXKId2y//w2fdr4fK3ff3Xu8YzXdsv++B/9ZLfs7Ly+W/QJz/jrLrl3Tb8ftJ0n/EK37G0Xvqhb9rOPvFuX3JdefXGX3CT56q5+v1tvfeTR3bIfd9cXd8v+m4t+pkvud72l35yy8ZG/1C1721t+p1v2Z37zf3fL3t+temt/UA43AIxErwIFAMBYKFIAAAAAo6BIAQAAAIxCnxOsAQAA4L+B1ZV+/Q6XkZUUAAAAwCgoUgAAAACjoEgBAAAAjIKeFAAAADDFqrf2B+VwAwAAAKOgSAEAAACMgiIFAAAAMAqKFAAAAMAoaJwJAAAAU6yuVO8hLBUrKQAAAIBRUKQAAAAARkGRAgAAABgFPSkAAABgCj0phmUlBQAAADAKM4sUVXVeVT2nqu4y1IAAAACA5TRvJcWRSY5I8o6qen9VPbOqbjvvm1bV5qraWlVbLzjnDesyUAAAAGD/Nq8nxVWttV9M8otV9d1JnpDkvKq6MMlrWmtb9vWgyf1bkuSMt5zX1nPAAAAAMJRVTRIGdYMPd2vtn1trP5vkdklekOQ7FjYqAAAAYOnMW0nxib3vaK3tTHLO5AMAAABgXcxcSdFae3xV3aOqTqmqQ/fcVlUPX+zQAAAAgGUycyVFVZ2e5GlJLkzy8qo6o7V29mTz82M1BQAAAPuxlZXqPYSlMu90j81J7tta21FVG5OcVVUbW2svSeJ/CgAAAFg384oUq621HUnSWttWVSdnrVBxXBQpAAAAgHU07+oel1bVSbs/mRQsTk1yTJITFzkwAAAAYLnMK1KcluTSPe9orV3fWjstyQMWNioAAABg6cw83aO1tn3Gtnev/3AAAABgPFY1zhzUvJUUAAAAAINQpAAAAABGQZECAAAAGIV5lyAFAACApbXqrf1BOdwAAADAKChSAAAAAKOgSAEAAACMgp4UAAAAMMXqSvUewlKp1tpCAx78oF9fbMAUu3Z+vUdskmT1gEO6ZX962+u6Zd/vwJt3y/7w6uFdcjfsuKhLbpLcbGW1W/bXd+3sln1V+v2ReNDBR3fJPXxlQ5fcJHnzN3Z0yz71oEO7Zd9l9WZdct/y1Uu75CbJZ679Srfsg25xQrfsu157Wbfs4zf0+dv1jh2f75KbJF/cdW237BNvflS37I+mz5ySJPdf7fJUPP+045IuuUmy4dA7dct+04n95tI7/a9f7Zadb/nB/fpV/Ju2fbzPL9KCfd/Gu4/y/83pHgAAAMAoKFIAAAAAo6AnBQAAAEyxoifFoKykAAAAAEZBkQIAAAAYBUUKAAAAYBQUKQAAAIBR0DgTAAAAplj11v6gHG4AAABgFBQpAAAAgFFQpAAAAABGQU8KAAAAmGJ1pXoPYalYSQEAAACMgiIFAAAAMAqKFAAAAMAo6EkBAAAAU+hJMSwrKQAAAIBRUKQAAAAARmFmkaKqNlXVO6rq1VV1h6o6t6q+XFUfqKp7DzVIAAAAYAm01qZ+JHl/kkckeUKSi5P80OT+U5L8y4zHbU6ydfKxeVbGvI+b+vj/brmylyt7Gfd5WbOXcZ9lL0+u7OXKXsZ9XtbsZdxn2X2yffjY86Naa1MLGFX1r621e09uf7a1dsd9bVukqtraWtu06Jyx5Mperuxl3OdlzV7GfZbt50z2/pm9jPu8rNnLuM+y+2TDnub1pPh6VT20qn44Sauq70+Sqnpgkp0LHx0AAACwNOZdgvQpSV6YZFeShyV5alW9Msnnkjx5sUMDAAAAlsnMlRSttfOTPCPJ7ybZ3lo7o7V2RGvtW5IcPsQAk2wZKGcsubKXK3sZ93lZs5dxn2UvT67s5cpexn1e1uxl3GfZ0Nm8nhRPT/KzST6W5KQkZ7TWzp5sO6+1dp9BRgkAAADs9+ad7vHkJJtaazuqamOSs6pqY2vtJUlq0YMDAAAAlse8xpmrrbUdSdJa25bk5CSPqKrfy4KLFFX18Kr6eFX9e1U9a5FZe+X+WVVdXlUXDJW5R/YdquodVXVhVf1bVZ0xYPbNqur9VXX+JPt5Q2VP8ler6l+r6s0D526rqo9U1YeqauvA2UdU1VlV9bHJ//l3DJR798n+7v64uqqeMVD2Myc/XxdU1Wuq6mZD5E6yz5jk/tui93df80hVHVVV51bVJyf/Hjlg9g9P9ntXVS2sa/eU7N+Z/Ix/uKr+tqqOGDD7Nye5H6qqt1bVbYfI3WPbL1ZVq6pj1jt3WnZV/XpVfW6P3+/vHSp7cv/pk7/d/1ZVLxwqu6pet8c+b6uqDw2YfVJVvXf335Gq+vaBcu9VVf8y+Rv2pqpayGm4056bLHpOm5G78PlsRvbC57MZ2UPMZzOfhy5yTpux3wud02bt86Lnsxn7vPD5bEb2wuczuEFmXZ80yduTnLTXfQck+fMkOxd1XdQkq0k+leTOSQ5Mcn6S/zHENVmTPCDJfZJcMOS1YCfZt0lyn8ntw5J8YsD9riSHTm5vSPK+JPcbcN9/PslfJXnzwMd8W5Jjhv6/nmS/KslPT24fmOSIDmNYTXJpkuMGyLpdks8kufnk879O8hMD7ee3JrkgycGTOewfk9xtgXn/ZR7JWhPiZ01uPyvJCwbMPiHJ3ZO8M2ur44bc74cmOWBy+wUD7/fhe9x+epI/GSJ3cv8dkvzfJBctao6Zss+/nuQXF/V/PCf7eya/WwdNPr/VUNl7bX9RkucOuN9vTfKIye3vTfLOgXI/kOSBk9s/leQ3F7TP+3xusug5bUbuwuezGdkLn89mZA8xn019HrroOW3Gfi90TpuRu/D5bNbx3uNrFjKfzdjvhc9nPnzckI95KylOy9oLmP/QWru+tXZa1v5gLsq3J/n31tqnW2vXJnltkkcvMO8/tNb+KckXh8jaR/YlrbXzJre/kuTCrL2wGyK7tcmqmawVKTYkmd6wZB1V1e2TPDLJy4bIG4PJO14PSPLyJGmtXdta+1KHoZyS5FOttYsGyjsgyc2r6oCsFQw+P1DuCUne21r7amvt+iTvSvKYRYVNmUcenbXCVCb/fv9Q2a21C1trH19E3g3IfuvkmCfJe5PcfsDsq/f49JAsYE6b8TfjxUl+eRGZNyB74aZkPzXJma21b0y+5vIBs5MkVVVJHpvkNQNmt/z/zcRvkQXMa1Ny757knya3z03yg+udO8me9txkoXPatNwh5rMZ2Qufz2ZkDzGfzXoeutA5rddz4Bm5C5/P5u3zIuezGdkLn8/ghph3dY/trbVLp2x792KGlGTtl+TiPT7fnoFerI9FrfUAuXfWVjQMlbk6WVJ2eZJzW2tDZf9+1v7w7Roob08tyVur6oNVtXnA3DsnuSLJK2rtNJeXVdUhA+bv9vgs6Mn83lprn8valYI+m+SSJF9urb11iOysraJ4QFUdXVUHZ+3dgTsMlL3bsa21S5K1JwdJbjVw/hj8VJJ/GDKwqn67qi5O8iNJnjtQ5qOSfK6tXSGrh6dNloX/2XovwZ/j+CTfXVXvq6p3VdW3DZi923cnuay19skBM5+R5HcmP2e/m+RXB8q9IMmjJrd/OAPMaXs9NxlsTuvxnOgGZC98Pts7e8j5bM/soee0fRzzQea0vXIHnc+m/JwNMp/tld1rPoP/ZN5Kil721e9ikHf1x6CqDk3y+iTP2KtyvlCttZ2ttZOy9s7At1fVty46s6pOTXJ5a+2Di86a4rva2lVqHpHk56pqkSuE9nRA1pbu/nFr7d5JrsnactnBVNWBWXuC+zcD5R2ZtXfe7pTktkkOqaofHSK7tXZh1pbmnpvknKydQnb9zAexrqrq2Vk75n85ZG5r7dmttTtMcp+26LxJEezZGaggsg9/nOQuWbsi1yVZWyo8lAOSHJnkfkl+KclfT94JHNITMlDhdQ9PTfLMyc/ZMzNZITeAn8ra360PZm259rWLDOv13KRX7qzsIeazfWUPNZ/tmZ21/RxsTtvHfg8yp+0jd7D5bMbP+MLns31k95rP4D8Za5Fie/7zOwK3z5IsN6qqDVmbLP6ytfaGHmOYnHbwziQPHyDuu5I8qqq2Ze20ngdV1asHyE2StNY+P/n38iR/m7VTjYawPcn2PVarnJW1osWQHpHkvNbaZQPlPTjJZ1prV7TWrkvyhiTfOVB2Wmsvb63dp7X2gKwtmx7yndYkuayqbpMkk38XshR+jKrqx5OcmuRHWmu9Cs5/lQUth9/LXbJWiDt/Mq/dPsl5VXXrAbLTWrtsUnDeleRPM9yclqzNa2+YnD74/qytjltI09B9mZxG9gNJXjdU5sSPZ20+S9aKvoMc89bax1prD22t3TdrL2Q+taisKc9NFj6n9XxONC17iPnsBuz3wuazfWQPNqfta7+HmNOmHO9B5rMZP2cLn8+mZHeZz2BvYy1SfCDJ3arqTpN3ex+f5I2dx7Rwkwrty5Nc2Fr7vYGzb1mTLtVVdfOsvaD82KJzW2u/2lq7fWttY9b+n9/eWhvk3fWqOqSqDtt9O2sNsQa5qsvkNKqLq+ruk7tOSfLRIbL3MPQ7jp9Ncr+qOnjys35K1s6BHERV3Wry7x2z9od/6Hdb35i1P/6Z/Hv2wPldVNXDk/xKkke11r46cPbd9vj0URlmTvtIa+1WrbWNk3lte9aak+3z1Mn1tvtF48RjMtCcNvF3SR40GcfxWWsI/IUB8x+c5GOtte0DZiZrb6I8cHL7QRmoALrHnLaS5DlJ/mRBOdOemyx0Tuv8nGif2UPMZzOyFz6f7St7qDltxn4vdE6b8XO28Plszs/4QuezGdld5jP4L9oIunfu6yNr54x/ImvvDDx7wNzXZG052XVZm4ifNGD2/bN2WsuHk3xo8vG9A2XfM8m/TrIvyII6o88Zw8kZ8OoeWesLcf7k49+G/Dmb5J+UZOvkmP9dkiMHzD44yZVJbjHwPj8va0+sLkjyF5l0zR4o+5+zVgg6P8kpC876L/NIkqOTvC1rf/DfluSoAbMfM7n9jSSXJfm/A2b/e9Z6DO2e09a9I/2M7NdPftY+nORNWWs+t/DcvbZvy+Ku7rGvff6LJB+Z7PMbk9xmwOwDk7x6cszPS/KgobIn978yyVMWkTlnv++f5IOTueV9Se47UO4ZWXue9IkkZyapBe3zPp+bLHpOm5G78PlsRvbC57MZ2UPMZ3Ofhy5qTpux3wud02bkLnw+m3W8Fz2fzdjvhc9nPnzckI9qbWlaPQAAAAAjNtbTPQAAAIDb6gWbAAAAOklEQVQlo0gBAAAAjIIiBQAAADAKihQAAADAKChSAAAAAKOgSAEAAACMgiIFAAAAMAqKFAAAAMAo/H9IHhsrwalSCAAAAABJRU5ErkJggg==\n" + "image/svg+xml": "\r\n\r\n\r\n \r\n \r\n \r\n \r\n 2021-05-12T09:28:25.208277\r\n image/svg+xml\r\n \r\n \r\n Matplotlib v3.4.1, https://matplotlib.org/\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "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\n" }, "metadata": { "needs_background": "light" @@ -959,9 +980,6 @@ } ], "source": [ - "if max1 < 10:\n", - " max1 = 10\n", - "\n", "idf1 = impute_df(split_df1, max_iter= int(max1), verbose=2)\n", "size = idf1.shape[1]\n", "corr = idf1.corr()\n", @@ -971,7 +989,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -979,47 +997,51 @@ "name": "stdout", "text": [ "[IterativeImputer] Completing matrix with shape (195, 5)\n", - "[IterativeImputer] Ending imputation round 1/10, elapsed time 0.08\n", - "[IterativeImputer] Ending imputation round 2/10, elapsed time 0.10\n", - "[IterativeImputer] Ending imputation round 3/10, elapsed time 0.11\n", - "[IterativeImputer] Ending imputation round 4/10, elapsed time 0.14\n", - "[IterativeImputer] Ending imputation round 5/10, elapsed time 0.15\n", - "[IterativeImputer] Ending imputation round 6/10, elapsed time 0.16\n", - "[IterativeImputer] Ending imputation round 7/10, elapsed time 0.17\n", - "[IterativeImputer] Ending imputation round 8/10, elapsed time 0.18\n", - "[IterativeImputer] Ending imputation round 9/10, elapsed time 0.21\n", - "[IterativeImputer] Ending imputation round 10/10, elapsed time 0.22\n", + "[IterativeImputer] Ending imputation round 1/8, elapsed time 0.01\n", + "[IterativeImputer] Change: 457858.9943114285, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 2/8, elapsed time 0.02\n", + "[IterativeImputer] Change: 123566.60351871609, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 3/8, elapsed time 0.03\n", + "[IterativeImputer] Change: 66082.79555085694, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 4/8, elapsed time 0.05\n", + "[IterativeImputer] Change: 31356.06832177031, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 5/8, elapsed time 0.06\n", + "[IterativeImputer] Change: 13275.540026738847, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 6/8, elapsed time 0.07\n", + "[IterativeImputer] Change: 5607.778352352506, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 7/8, elapsed time 0.08\n", + "[IterativeImputer] Change: 4637.325683098177, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 8/8, elapsed time 0.09\n", + "[IterativeImputer] Change: 4069.896702134858, scaled tolerance: 131.03159 \n", "[IterativeImputer] Completing matrix with shape (195, 5)\n", - "[IterativeImputer] Ending imputation round 1/10, elapsed time 0.00\n", - "[IterativeImputer] Ending imputation round 2/10, elapsed time 0.00\n", - "[IterativeImputer] Ending imputation round 3/10, elapsed time 0.00\n", - "[IterativeImputer] Ending imputation round 4/10, elapsed time 0.00\n", - "[IterativeImputer] Ending imputation round 5/10, elapsed time 0.01\n", - "[IterativeImputer] Ending imputation round 6/10, elapsed time 0.01\n", - "[IterativeImputer] Ending imputation round 7/10, elapsed time 0.01\n", - "[IterativeImputer] Ending imputation round 8/10, elapsed time 0.02\n", - "[IterativeImputer] Ending imputation round 9/10, elapsed time 0.02\n", - "[IterativeImputer] Ending imputation round 10/10, elapsed time 0.02\n", - "/opt/anaconda3/lib/python3.7/site-packages/sklearn/impute/_iterative.py:603: ConvergenceWarning: [IterativeImputer] Early stopping criterion not reached.\n", - " \" reached.\", ConvergenceWarning)\n" + "[IterativeImputer] Ending imputation round 1/8, elapsed time 0.00\n", + "[IterativeImputer] Ending imputation round 2/8, elapsed time 0.00\n", + "[IterativeImputer] Ending imputation round 3/8, elapsed time 0.00\n", + "[IterativeImputer] Ending imputation round 4/8, elapsed time 0.01\n", + "[IterativeImputer] Ending imputation round 5/8, elapsed time 0.01\n", + "[IterativeImputer] Ending imputation round 6/8, elapsed time 0.01\n", + "[IterativeImputer] Ending imputation round 7/8, elapsed time 0.01\n", + "[IterativeImputer] Ending imputation round 8/8, elapsed time 0.01\n", + "C:\\Users\\joach\\.conda\\envs\\wsenv\\lib\\site-packages\\sklearn\\impute\\_iterative.py:685: ConvergenceWarning: [IterativeImputer] Early stopping criterion not reached.\n", + " warnings.warn(\"[IterativeImputer] Early stopping criterion not\"\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ - "" + "" ] }, "metadata": {}, - "execution_count": 13 + "execution_count": 18 }, { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "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\n" + "image/svg+xml": "\r\n\r\n\r\n \r\n \r\n \r\n \r\n 2021-05-12T09:28:25.919090\r\n image/svg+xml\r\n \r\n \r\n Matplotlib v3.4.1, https://matplotlib.org/\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "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\n" }, "metadata": { "needs_background": "light" @@ -1027,9 +1049,6 @@ } ], "source": [ - "if max2 < 10:\n", - " max2 = 10\n", - "\n", "idf2 = impute_df(split_df2, max_iter= int(max2), verbose=2)\n", "size = idf2.shape[1]\n", "corr = idf2.corr()\n", @@ -1039,7 +1058,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -1047,35 +1066,55 @@ "name": "stdout", "text": [ "[IterativeImputer] Completing matrix with shape (195, 11)\n", - "[IterativeImputer] Ending imputation round 1/20, elapsed time 0.09\n", - "[IterativeImputer] Ending imputation round 2/20, elapsed time 0.18\n", - "[IterativeImputer] Ending imputation round 3/20, elapsed time 0.20\n", - "[IterativeImputer] Ending imputation round 4/20, elapsed time 0.22\n", - "[IterativeImputer] Ending imputation round 5/20, elapsed time 0.24\n", - "[IterativeImputer] Ending imputation round 6/20, elapsed time 0.26\n", - "[IterativeImputer] Ending imputation round 7/20, elapsed time 0.29\n", - "[IterativeImputer] Ending imputation round 8/20, elapsed time 0.37\n", - "[IterativeImputer] Ending imputation round 9/20, elapsed time 0.39\n", - "[IterativeImputer] Ending imputation round 10/20, elapsed time 0.41\n", - "[IterativeImputer] Ending imputation round 11/20, elapsed time 0.43\n", - "[IterativeImputer] Ending imputation round 12/20, elapsed time 0.45\n", - "[IterativeImputer] Ending imputation round 13/20, elapsed time 0.47\n", - "[IterativeImputer] Ending imputation round 14/20, elapsed time 0.49\n", - "[IterativeImputer] Ending imputation round 15/20, elapsed time 0.54\n", - "[IterativeImputer] Ending imputation round 16/20, elapsed time 0.59\n", - "[IterativeImputer] Ending imputation round 17/20, elapsed time 0.62\n", - "[IterativeImputer] Ending imputation round 18/20, elapsed time 0.64\n", - "[IterativeImputer] Ending imputation round 19/20, elapsed time 0.66\n", - "[IterativeImputer] Ending imputation round 20/20, elapsed time 0.68\n", + "[IterativeImputer] Ending imputation round 1/20, elapsed time 0.02\n", + "[IterativeImputer] Change: 1.3057475071151101, scaled tolerance: 0.001036 \n", + "[IterativeImputer] Ending imputation round 2/20, elapsed time 0.04\n", + "[IterativeImputer] Change: 0.2431361335536576, scaled tolerance: 0.001036 \n", + "[IterativeImputer] Ending imputation round 3/20, elapsed time 0.06\n", + "[IterativeImputer] Change: 0.050910966788451084, scaled tolerance: 0.001036 \n", + "[IterativeImputer] Ending imputation round 4/20, elapsed time 0.08\n", + "[IterativeImputer] Change: 0.024727577272021295, scaled tolerance: 0.001036 \n", + "[IterativeImputer] Ending imputation round 5/20, elapsed time 0.10\n", + "[IterativeImputer] Change: 0.01669938231479373, scaled tolerance: 0.001036 \n", + "[IterativeImputer] Ending imputation round 6/20, elapsed time 0.12\n", + "[IterativeImputer] Change: 0.014436526598200827, scaled tolerance: 0.001036 \n", + "[IterativeImputer] Ending imputation round 7/20, elapsed time 0.14\n", + "[IterativeImputer] Change: 0.013328878116682485, scaled tolerance: 0.001036 \n", + "[IterativeImputer] Ending imputation round 8/20, elapsed time 0.16\n", + "[IterativeImputer] Change: 0.012628774076243077, scaled tolerance: 0.001036 \n", + "[IterativeImputer] Ending imputation round 9/20, elapsed time 0.17\n", + "[IterativeImputer] Change: 0.012053990511959045, scaled tolerance: 0.001036 \n", + "[IterativeImputer] Ending imputation round 10/20, elapsed time 0.19\n", + "[IterativeImputer] Change: 0.011528761105839724, scaled tolerance: 0.001036 \n", + "[IterativeImputer] Ending imputation round 11/20, elapsed time 0.21\n", + "[IterativeImputer] Change: 0.011028826842162887, scaled tolerance: 0.001036 \n", + "[IterativeImputer] Ending imputation round 12/20, elapsed time 0.23\n", + "[IterativeImputer] Change: 0.010551696384536902, scaled tolerance: 0.001036 \n", + "[IterativeImputer] Ending imputation round 13/20, elapsed time 0.25\n", + "[IterativeImputer] Change: 0.010132923628465185, scaled tolerance: 0.001036 \n", + "[IterativeImputer] Ending imputation round 14/20, elapsed time 0.26\n", + "[IterativeImputer] Change: 0.009943115736268826, scaled tolerance: 0.001036 \n", + "[IterativeImputer] Ending imputation round 15/20, elapsed time 0.28\n", + "[IterativeImputer] Change: 0.009758788813657215, scaled tolerance: 0.001036 \n", + "[IterativeImputer] Ending imputation round 16/20, elapsed time 0.30\n", + "[IterativeImputer] Change: 0.00957549042259187, scaled tolerance: 0.001036 \n", + "[IterativeImputer] Ending imputation round 17/20, elapsed time 0.31\n", + "[IterativeImputer] Change: 0.009397405580395923, scaled tolerance: 0.001036 \n", + "[IterativeImputer] Ending imputation round 18/20, elapsed time 0.34\n", + "[IterativeImputer] Change: 0.009222955401797739, scaled tolerance: 0.001036 \n", + "[IterativeImputer] Ending imputation round 19/20, elapsed time 0.36\n", + "[IterativeImputer] Change: 0.009052194265333768, scaled tolerance: 0.001036 \n", + "[IterativeImputer] Ending imputation round 20/20, elapsed time 0.38\n", + "[IterativeImputer] Change: 0.008884981830621363, scaled tolerance: 0.001036 \n", "[IterativeImputer] Completing matrix with shape (195, 11)\n", "[IterativeImputer] Ending imputation round 1/20, elapsed time 0.00\n", - "[IterativeImputer] Ending imputation round 2/20, elapsed time 0.01\n", - "[IterativeImputer] Ending imputation round 3/20, elapsed time 0.01\n", - "[IterativeImputer] Ending imputation round 4/20, elapsed time 0.01\n", + "[IterativeImputer] Ending imputation round 2/20, elapsed time 0.00\n", + "[IterativeImputer] Ending imputation round 3/20, elapsed time 0.00\n", + "[IterativeImputer] Ending imputation round 4/20, elapsed time 0.00\n", "[IterativeImputer] Ending imputation round 5/20, elapsed time 0.01\n", "[IterativeImputer] Ending imputation round 6/20, elapsed time 0.01\n", "[IterativeImputer] Ending imputation round 7/20, elapsed time 0.01\n", - "[IterativeImputer] Ending imputation round 8/20, elapsed time 0.02\n", + "[IterativeImputer] Ending imputation round 8/20, elapsed time 0.01\n", "[IterativeImputer] Ending imputation round 9/20, elapsed time 0.02\n", "[IterativeImputer] Ending imputation round 10/20, elapsed time 0.02\n", "[IterativeImputer] Ending imputation round 11/20, elapsed time 0.02\n", @@ -1085,29 +1124,29 @@ "[IterativeImputer] Ending imputation round 15/20, elapsed time 0.03\n", "[IterativeImputer] Ending imputation round 16/20, elapsed time 0.03\n", "[IterativeImputer] Ending imputation round 17/20, elapsed time 0.03\n", - "[IterativeImputer] Ending imputation round 18/20, elapsed time 0.03\n", + "[IterativeImputer] Ending imputation round 18/20, elapsed time 0.04\n", "[IterativeImputer] Ending imputation round 19/20, elapsed time 0.04\n", "[IterativeImputer] Ending imputation round 20/20, elapsed time 0.04\n", - "/opt/anaconda3/lib/python3.7/site-packages/sklearn/impute/_iterative.py:603: ConvergenceWarning: [IterativeImputer] Early stopping criterion not reached.\n", - " \" reached.\", ConvergenceWarning)\n" + "C:\\Users\\joach\\.conda\\envs\\wsenv\\lib\\site-packages\\sklearn\\impute\\_iterative.py:685: ConvergenceWarning: [IterativeImputer] Early stopping criterion not reached.\n", + " warnings.warn(\"[IterativeImputer] Early stopping criterion not\"\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ - "" + "" ] }, "metadata": {}, - "execution_count": 14 + "execution_count": 19 }, { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "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\n" + "image/svg+xml": "\r\n\r\n\r\n \r\n \r\n \r\n \r\n 2021-05-12T09:28:26.720961\r\n image/svg+xml\r\n \r\n \r\n Matplotlib v3.4.1, https://matplotlib.org/\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "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\n" }, "metadata": { "needs_background": "light" @@ -1115,9 +1154,6 @@ } ], "source": [ - "if max3 < 10:\n", - " max3 = 10\n", - "\n", "idf3 = impute_df(split_df3, max_iter= int(max3), verbose=2)\n", "size = idf3.shape[1]\n", "corr = idf3.corr()\n", @@ -1127,7 +1163,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -1135,16 +1171,26 @@ "name": "stdout", "text": [ "[IterativeImputer] Completing matrix with shape (195, 9)\n", - "[IterativeImputer] Ending imputation round 1/10, elapsed time 0.06\n", - "[IterativeImputer] Ending imputation round 2/10, elapsed time 0.08\n", - "[IterativeImputer] Ending imputation round 3/10, elapsed time 0.09\n", - "[IterativeImputer] Ending imputation round 4/10, elapsed time 0.11\n", - "[IterativeImputer] Ending imputation round 5/10, elapsed time 0.12\n", - "[IterativeImputer] Ending imputation round 6/10, elapsed time 0.13\n", - "[IterativeImputer] Ending imputation round 7/10, elapsed time 0.14\n", - "[IterativeImputer] Ending imputation round 8/10, elapsed time 0.15\n", - "[IterativeImputer] Ending imputation round 9/10, elapsed time 0.16\n", - "[IterativeImputer] Ending imputation round 10/10, elapsed time 0.18\n", + "[IterativeImputer] Ending imputation round 1/10, elapsed time 0.02\n", + "[IterativeImputer] Change: 24.70630011052294, scaled tolerance: 0.087747 \n", + "[IterativeImputer] Ending imputation round 2/10, elapsed time 0.04\n", + "[IterativeImputer] Change: 3.081030825722686, scaled tolerance: 0.087747 \n", + "[IterativeImputer] Ending imputation round 3/10, elapsed time 0.05\n", + "[IterativeImputer] Change: 1.7974084139622217, scaled tolerance: 0.087747 \n", + "[IterativeImputer] Ending imputation round 4/10, elapsed time 0.07\n", + "[IterativeImputer] Change: 1.2013063098503434, scaled tolerance: 0.087747 \n", + "[IterativeImputer] Ending imputation round 5/10, elapsed time 0.08\n", + "[IterativeImputer] Change: 0.8709381898134296, scaled tolerance: 0.087747 \n", + "[IterativeImputer] Ending imputation round 6/10, elapsed time 0.09\n", + "[IterativeImputer] Change: 0.6848017337664789, scaled tolerance: 0.087747 \n", + "[IterativeImputer] Ending imputation round 7/10, elapsed time 0.10\n", + "[IterativeImputer] Change: 0.5789561706855952, scaled tolerance: 0.087747 \n", + "[IterativeImputer] Ending imputation round 8/10, elapsed time 0.11\n", + "[IterativeImputer] Change: 0.5398675991534301, scaled tolerance: 0.087747 \n", + "[IterativeImputer] Ending imputation round 9/10, elapsed time 0.12\n", + "[IterativeImputer] Change: 0.5228675076225393, scaled tolerance: 0.087747 \n", + "[IterativeImputer] Ending imputation round 10/10, elapsed time 0.13\n", + "[IterativeImputer] Change: 0.5054232450128762, scaled tolerance: 0.087747 \n", "[IterativeImputer] Completing matrix with shape (195, 9)\n", "[IterativeImputer] Ending imputation round 1/10, elapsed time 0.00\n", "[IterativeImputer] Ending imputation round 2/10, elapsed time 0.00\n", @@ -1156,26 +1202,26 @@ "[IterativeImputer] Ending imputation round 8/10, elapsed time 0.01\n", "[IterativeImputer] Ending imputation round 9/10, elapsed time 0.01\n", "[IterativeImputer] Ending imputation round 10/10, elapsed time 0.01\n", - "/opt/anaconda3/lib/python3.7/site-packages/sklearn/impute/_iterative.py:603: ConvergenceWarning: [IterativeImputer] Early stopping criterion not reached.\n", - " \" reached.\", ConvergenceWarning)\n" + "C:\\Users\\joach\\.conda\\envs\\wsenv\\lib\\site-packages\\sklearn\\impute\\_iterative.py:685: ConvergenceWarning: [IterativeImputer] Early stopping criterion not reached.\n", + " warnings.warn(\"[IterativeImputer] Early stopping criterion not\"\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ - "" + "" ] }, "metadata": {}, - "execution_count": 15 + "execution_count": 20 }, { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "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\n" + "image/svg+xml": "\r\n\r\n\r\n \r\n \r\n \r\n \r\n 2021-05-12T09:28:27.310512\r\n image/svg+xml\r\n \r\n \r\n Matplotlib v3.4.1, https://matplotlib.org/\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "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\n" }, "metadata": { "needs_background": "light" @@ -1183,9 +1229,6 @@ } ], "source": [ - "if max4 < 10:\n", - " max4 = 10\n", - "\n", "idf4 = impute_df(split_df4, max_iter= int(max4), verbose=2)\n", "size = idf4.shape[1]\n", "corr = idf4.corr()\n", @@ -1195,32 +1238,101 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 21, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "[IterativeImputer] Completing matrix with shape (195, 4)\n[IterativeImputer] Ending imputation round 1/10, elapsed time 0.03\n[IterativeImputer] Ending imputation round 2/10, elapsed time 0.04\n[IterativeImputer] Ending imputation round 3/10, elapsed time 0.04\n[IterativeImputer] Ending imputation round 4/10, elapsed time 0.04\n[IterativeImputer] Ending imputation round 5/10, elapsed time 0.05\n[IterativeImputer] Ending imputation round 6/10, elapsed time 0.05\n[IterativeImputer] Ending imputation round 7/10, elapsed time 0.06\n[IterativeImputer] Ending imputation round 8/10, elapsed time 0.08\n[IterativeImputer] Early stopping criterion reached.\n[IterativeImputer] Completing matrix with shape (195, 4)\n[IterativeImputer] Ending imputation round 1/8, elapsed time 0.00\n[IterativeImputer] Ending imputation round 2/8, elapsed time 0.00\n[IterativeImputer] Ending imputation round 3/8, elapsed time 0.00\n[IterativeImputer] Ending imputation round 4/8, elapsed time 0.00\n[IterativeImputer] Ending imputation round 5/8, elapsed time 0.00\n[IterativeImputer] Ending imputation round 6/8, elapsed time 0.00\n[IterativeImputer] Ending imputation round 7/8, elapsed time 0.00\n[IterativeImputer] Ending imputation round 8/8, elapsed time 0.00\n" + "[IterativeImputer] Completing matrix with shape (195, 13)\n", + "[IterativeImputer] Ending imputation round 1/22, elapsed time 0.03\n", + "[IterativeImputer] Change: 87.8605447830152, scaled tolerance: 1.4337840000000002 \n", + "[IterativeImputer] Ending imputation round 2/22, elapsed time 0.05\n", + "[IterativeImputer] Change: 28.586268171421256, scaled tolerance: 1.4337840000000002 \n", + "[IterativeImputer] Ending imputation round 3/22, elapsed time 0.07\n", + "[IterativeImputer] Change: 11.593324359484521, scaled tolerance: 1.4337840000000002 \n", + "[IterativeImputer] Ending imputation round 4/22, elapsed time 0.10\n", + "[IterativeImputer] Change: 5.237507958945714, scaled tolerance: 1.4337840000000002 \n", + "[IterativeImputer] Ending imputation round 5/22, elapsed time 0.12\n", + "[IterativeImputer] Change: 3.9889516059898855, scaled tolerance: 1.4337840000000002 \n", + "[IterativeImputer] Ending imputation round 6/22, elapsed time 0.13\n", + "[IterativeImputer] Change: 4.3327704567826295, scaled tolerance: 1.4337840000000002 \n", + "[IterativeImputer] Ending imputation round 7/22, elapsed time 0.15\n", + "[IterativeImputer] Change: 4.743884302961482, scaled tolerance: 1.4337840000000002 \n", + "[IterativeImputer] Ending imputation round 8/22, elapsed time 0.16\n", + "[IterativeImputer] Change: 4.9041296773902205, scaled tolerance: 1.4337840000000002 \n", + "[IterativeImputer] Ending imputation round 9/22, elapsed time 0.18\n", + "[IterativeImputer] Change: 4.8867183949047215, scaled tolerance: 1.4337840000000002 \n", + "[IterativeImputer] Ending imputation round 10/22, elapsed time 0.20\n", + "[IterativeImputer] Change: 4.74618090912474, scaled tolerance: 1.4337840000000002 \n", + "[IterativeImputer] Ending imputation round 11/22, elapsed time 0.22\n", + "[IterativeImputer] Change: 4.597447396969357, scaled tolerance: 1.4337840000000002 \n", + "[IterativeImputer] Ending imputation round 12/22, elapsed time 0.24\n", + "[IterativeImputer] Change: 4.383379000147137, scaled tolerance: 1.4337840000000002 \n", + "[IterativeImputer] Ending imputation round 13/22, elapsed time 0.25\n", + "[IterativeImputer] Change: 4.120519036033551, scaled tolerance: 1.4337840000000002 \n", + "[IterativeImputer] Ending imputation round 14/22, elapsed time 0.27\n", + "[IterativeImputer] Change: 3.829399094168947, scaled tolerance: 1.4337840000000002 \n", + "[IterativeImputer] Ending imputation round 15/22, elapsed time 0.28\n", + "[IterativeImputer] Change: 3.5249997877409696, scaled tolerance: 1.4337840000000002 \n", + "[IterativeImputer] Ending imputation round 16/22, elapsed time 0.30\n", + "[IterativeImputer] Change: 3.218127903389302, scaled tolerance: 1.4337840000000002 \n", + "[IterativeImputer] Ending imputation round 17/22, elapsed time 0.32\n", + "[IterativeImputer] Change: 2.9164496052546856, scaled tolerance: 1.4337840000000002 \n", + "[IterativeImputer] Ending imputation round 18/22, elapsed time 0.34\n", + "[IterativeImputer] Change: 2.625268955987952, scaled tolerance: 1.4337840000000002 \n", + "[IterativeImputer] Ending imputation round 19/22, elapsed time 0.36\n", + "[IterativeImputer] Change: 2.3497527779462066, scaled tolerance: 1.4337840000000002 \n", + "[IterativeImputer] Ending imputation round 20/22, elapsed time 0.38\n", + "[IterativeImputer] Change: 2.0912457219816023, scaled tolerance: 1.4337840000000002 \n", + "[IterativeImputer] Ending imputation round 21/22, elapsed time 0.39\n", + "[IterativeImputer] Change: 1.8498070813863305, scaled tolerance: 1.4337840000000002 \n", + "[IterativeImputer] Ending imputation round 22/22, elapsed time 0.41\n", + "[IterativeImputer] Change: 1.6257610843838977, scaled tolerance: 1.4337840000000002 \n", + "[IterativeImputer] Completing matrix with shape (195, 13)\n", + "[IterativeImputer] Ending imputation round 1/22, elapsed time 0.00\n", + "[IterativeImputer] Ending imputation round 2/22, elapsed time 0.00\n", + "[IterativeImputer] Ending imputation round 3/22, elapsed time 0.00\n", + "[IterativeImputer] Ending imputation round 4/22, elapsed time 0.01\n", + "[IterativeImputer] Ending imputation round 5/22, elapsed time 0.01\n", + "[IterativeImputer] Ending imputation round 6/22, elapsed time 0.01\n", + "[IterativeImputer] Ending imputation round 7/22, elapsed time 0.01\n", + "[IterativeImputer] Ending imputation round 8/22, elapsed time 0.02\n", + "[IterativeImputer] Ending imputation round 9/22, elapsed time 0.02\n", + "[IterativeImputer] Ending imputation round 10/22, elapsed time 0.02\n", + "[IterativeImputer] Ending imputation round 11/22, elapsed time 0.02\n", + "[IterativeImputer] Ending imputation round 12/22, elapsed time 0.02\n", + "[IterativeImputer] Ending imputation round 13/22, elapsed time 0.02\n", + "[IterativeImputer] Ending imputation round 14/22, elapsed time 0.03\n", + "[IterativeImputer] Ending imputation round 15/22, elapsed time 0.03\n", + "[IterativeImputer] Ending imputation round 16/22, elapsed time 0.03\n", + "[IterativeImputer] Ending imputation round 17/22, elapsed time 0.04\n", + "[IterativeImputer] Ending imputation round 18/22, elapsed time 0.04\n", + "[IterativeImputer] Ending imputation round 19/22, elapsed time 0.04\n", + "[IterativeImputer] Ending imputation round 20/22, elapsed time 0.04\n", + "[IterativeImputer] Ending imputation round 21/22, elapsed time 0.04\n", + "[IterativeImputer] Ending imputation round 22/22, elapsed time 0.05\n", + "C:\\Users\\joach\\.conda\\envs\\wsenv\\lib\\site-packages\\sklearn\\impute\\_iterative.py:685: ConvergenceWarning: [IterativeImputer] Early stopping criterion not reached.\n", + " warnings.warn(\"[IterativeImputer] Early stopping criterion not\"\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ - "" + "" ] }, "metadata": {}, - "execution_count": 16 + "execution_count": 21 }, { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "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\n" + "image/svg+xml": "\r\n\r\n\r\n \r\n \r\n \r\n \r\n 2021-05-12T09:28:28.158122\r\n image/svg+xml\r\n \r\n \r\n Matplotlib v3.4.1, https://matplotlib.org/\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "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\n" }, "metadata": { "needs_background": "light" @@ -1228,9 +1340,6 @@ } ], "source": [ - "if max5 < 10:\n", - " max5 = 10\n", - "\n", "idf5 = impute_df(split_df5, max_iter= int(max5), verbose=2)\n", "size = idf5.shape[1]\n", "corr = idf5.corr()\n", @@ -1238,132 +1347,171 @@ "sns.heatmap(corr, vmin=-1, vmax=1, center=0, xticklabels=range(size), yticklabels=range(size))" ] }, + { + "source": [ + "# Imputation of the whole dataset " + ], + "cell_type": "markdown", + "metadata": {} + }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 22, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "[IterativeImputer] Completing matrix with shape (195, 9)\n", - "[IterativeImputer] Ending imputation round 1/22, elapsed time 0.12\n", - "[IterativeImputer] Ending imputation round 2/22, elapsed time 0.14\n", - "[IterativeImputer] Ending imputation round 3/22, elapsed time 0.15\n", - "[IterativeImputer] Ending imputation round 4/22, elapsed time 0.16\n", - "[IterativeImputer] Ending imputation round 5/22, elapsed time 0.17\n", - "[IterativeImputer] Ending imputation round 6/22, elapsed time 0.18\n", - "[IterativeImputer] Ending imputation round 7/22, elapsed time 0.20\n", - "[IterativeImputer] Early stopping criterion reached.\n", - "[IterativeImputer] Completing matrix with shape (195, 9)\n", - "[IterativeImputer] Ending imputation round 1/7, elapsed time 0.00\n", - "[IterativeImputer] Ending imputation round 2/7, elapsed time 0.01\n", - "[IterativeImputer] Ending imputation round 3/7, elapsed time 0.01\n", - "[IterativeImputer] Ending imputation round 4/7, elapsed time 0.01\n", - "[IterativeImputer] Ending imputation round 5/7, elapsed time 0.01\n", - "[IterativeImputer] Ending imputation round 6/7, elapsed time 0.01\n", - "[IterativeImputer] Ending imputation round 7/7, elapsed time 0.02\n" + "24.0\n" ] - }, - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "" - ] - }, - "metadata": {}, - "execution_count": 17 - }, - { - "output_type": "display_data", - "data": { - "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - } } ], "source": [ - "if max6 < 10:\n", - " max6 = 10\n", - "\n", - "idf6 = impute_df(split_df6, max_iter= int(max6), verbose=2)\n", - "size = idf6.shape[1]\n", - "corr = idf6.corr()\n", - "plt.subplots(figsize=(20,20))\n", - "sns.heatmap(corr, vmin=-1, vmax=1, center=0, xticklabels=range(size), yticklabels=range(size))" + "iter_number = (max_missing + min_missing) // 2\n", + "print(iter_number)" ] }, - { - "source": [ - "## Dataframe is merged and displayed below" - ], - "cell_type": "markdown", - "metadata": {} - }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 23, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "(195, 34)\n(195, 45)\n(195, 54)\n(195, 58)\n(195, 67)\n" + "[IterativeImputer] Completing matrix with shape (195, 67)\n", + "[IterativeImputer] Ending imputation round 1/24, elapsed time 0.62\n", + "[IterativeImputer] Change: 373997.8709645349, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 2/24, elapsed time 1.24\n", + "[IterativeImputer] Change: 29511.1061871246, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 3/24, elapsed time 1.85\n", + "[IterativeImputer] Change: 17873.188347295738, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 4/24, elapsed time 2.47\n", + "[IterativeImputer] Change: 11459.888077535514, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 5/24, elapsed time 3.09\n", + "[IterativeImputer] Change: 5390.9739547168065, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 6/24, elapsed time 3.71\n", + "[IterativeImputer] Change: 3757.0867210105503, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 7/24, elapsed time 4.34\n", + "[IterativeImputer] Change: 3514.840674151647, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 8/24, elapsed time 4.96\n", + "[IterativeImputer] Change: 3272.008783191113, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 9/24, elapsed time 5.59\n", + "[IterativeImputer] Change: 3038.1248408404294, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 10/24, elapsed time 6.21\n", + "[IterativeImputer] Change: 2816.9578324964855, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 11/24, elapsed time 6.86\n", + "[IterativeImputer] Change: 2609.6887758823086, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 12/24, elapsed time 7.53\n", + "[IterativeImputer] Change: 2416.3188696420248, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 13/24, elapsed time 8.14\n", + "[IterativeImputer] Change: 2236.3250712345057, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 14/24, elapsed time 8.77\n", + "[IterativeImputer] Change: 2069.007986775061, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 15/24, elapsed time 9.40\n", + "[IterativeImputer] Change: 2002.417721664179, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 16/24, elapsed time 10.03\n", + "[IterativeImputer] Change: 1982.0451872189394, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 17/24, elapsed time 10.66\n", + "[IterativeImputer] Change: 1961.971235914504, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 18/24, elapsed time 11.30\n", + "[IterativeImputer] Change: 1942.2299581335687, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 19/24, elapsed time 11.93\n", + "[IterativeImputer] Change: 1922.8595087315427, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 20/24, elapsed time 12.56\n", + "[IterativeImputer] Change: 1903.8819537004383, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 21/24, elapsed time 13.19\n", + "[IterativeImputer] Change: 1885.3076371898812, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 22/24, elapsed time 13.83\n", + "[IterativeImputer] Change: 1867.1381917331032, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 23/24, elapsed time 14.46\n", + "[IterativeImputer] Change: 1849.3691382747977, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 24/24, elapsed time 15.09\n", + "[IterativeImputer] Change: 1831.9916662386954, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Completing matrix with shape (195, 67)\n", + "[IterativeImputer] Ending imputation round 1/24, elapsed time 0.01\n", + "[IterativeImputer] Ending imputation round 2/24, elapsed time 0.02\n", + "[IterativeImputer] Ending imputation round 3/24, elapsed time 0.03\n", + "[IterativeImputer] Ending imputation round 4/24, elapsed time 0.05\n", + "[IterativeImputer] Ending imputation round 5/24, elapsed time 0.06\n", + "[IterativeImputer] Ending imputation round 6/24, elapsed time 0.07\n", + "[IterativeImputer] Ending imputation round 7/24, elapsed time 0.08\n", + "[IterativeImputer] Ending imputation round 8/24, elapsed time 0.09\n", + "[IterativeImputer] Ending imputation round 9/24, elapsed time 0.10\n", + "[IterativeImputer] Ending imputation round 10/24, elapsed time 0.11\n", + "[IterativeImputer] Ending imputation round 11/24, elapsed time 0.12\n", + "[IterativeImputer] Ending imputation round 12/24, elapsed time 0.13\n", + "[IterativeImputer] Ending imputation round 13/24, elapsed time 0.14\n", + "[IterativeImputer] Ending imputation round 14/24, elapsed time 0.16\n", + "[IterativeImputer] Ending imputation round 15/24, elapsed time 0.17\n", + "[IterativeImputer] Ending imputation round 16/24, elapsed time 0.18\n", + "C:\\Users\\joach\\.conda\\envs\\wsenv\\lib\\site-packages\\sklearn\\impute\\_iterative.py:685: ConvergenceWarning: [IterativeImputer] Early stopping criterion not reached.\n", + " warnings.warn(\"[IterativeImputer] Early stopping criterion not\"\n", + "[IterativeImputer] Ending imputation round 17/24, elapsed time 0.19\n", + "[IterativeImputer] Ending imputation round 18/24, elapsed time 0.21\n", + "[IterativeImputer] Ending imputation round 19/24, elapsed time 0.22\n", + "[IterativeImputer] Ending imputation round 20/24, elapsed time 0.23\n", + "[IterativeImputer] Ending imputation round 21/24, elapsed time 0.24\n", + "[IterativeImputer] Ending imputation round 22/24, elapsed time 0.25\n", + "[IterativeImputer] Ending imputation round 23/24, elapsed time 0.26\n", + "[IterativeImputer] Ending imputation round 24/24, elapsed time 0.27\n" ] - }, + } + ], + "source": [ + "imputed_df = impute_df(df_inicator_values, max_iter=int(iter_number), verbose=2)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ { "output_type": "display_data", "data": { - "text/plain": " Population with at least some secondary education (% ages 25 and older) \\\nAFG 26.080 \nAGO 30.232 \nALB 93.174 \nAND 72.327 \nARG 57.158 \n.. ... \nWSM 74.942 \nYEM 28.020 \nZAF 75.478 \nZMB 44.440 \nZWE 64.935 \n\n Population with at least some secondary education, female (% ages 25 and older) \\\nAFG 13.220 \nAGO 23.133 \nALB 93.700 \nAND 71.484 \nARG 59.161 \n.. ... \nWSM 79.127 \nYEM 19.920 \nZAF 74.977 \nZMB 38.488 \nZWE 59.792 \n\n Population with at least some secondary education, male (% ages 25 and older) \\\nAFG 36.920 \nAGO 38.056 \nALB 92.497 \nAND 73.327 \nARG 54.828 \n.. ... \nWSM 71.583 \nYEM 36.918 \nZAF 78.207 \nZMB 54.068 \nZWE 70.783 \n\n Share of seats in parliament (% held by women) \\\nAFG 27.244 \nAGO 30.000 \nALB 29.508 \nAND 46.429 \nARG 39.877 \n.. ... \nWSM 10.000 \nYEM 0.971 \nZAF 45.333 \nZMB 17.964 \nZWE 34.571 \n\n Vulnerable employment (% of total employment) Urban population (%) \\\nAFG 79.72600 25.8 \nAGO 65.99500 66.2 \nALB 52.85200 61.2 \nAND 15.42884 88.0 \nARG 21.80500 92.0 \n.. ... ... \nWSM 29.98300 18.1 \nYEM 45.62700 37.3 \nZAF 10.29800 66.9 \nZMB 78.13400 44.1 \nZWE 64.73900 32.2 \n\n Labour force participation rate (% ages 15 and older), female \\\nAFG 21.595000 \nAGO 76.136000 \nALB 46.712000 \nAND 54.351364 \nARG 50.721000 \n.. ... \nWSM 31.104000 \nYEM 5.834000 \nZAF 49.610000 \nZMB 70.370000 \nZWE 78.106000 \n\n Labour force participation rate (% ages 15 and older), male \\\nAFG 74.658000 \nAGO 78.913000 \nALB 64.568000 \nAND 72.232983 \nARG 72.730000 \n.. ... \nWSM 55.456000 \nYEM 70.183000 \nZAF 62.749000 \nZMB 79.076000 \nZWE 88.993000 \n\n Remittances, inflows (% of GDP) \\\nAFG 4.542000 \nAGO 0.002000 \nALB 9.640000 \nAND 1.703573 \nARG 0.119000 \n.. ... \nWSM 17.254000 \nYEM 7.999177 \nZAF 0.253000 \nZMB 0.551000 \nZWE 8.068000 \n\n Foreign direct investment, net inflows (% of GDP) ... \\\nAFG 0.123000 ... \nAGO -4.331000 ... \nALB 7.912000 ... \nAND 3.286625 ... \nARG 1.389000 ... \n.. ... ... \nWSM 3.114609 ... \nYEM -4.382862 ... \nZAF 1.316000 ... \nZMB 2.087000 ... \nZWE 4.005312 ... \n\n Population under age 5 (millions) \\\nAFG 5.639000 \nAGO 5.670000 \nALB 0.169000 \nAND -7.122259 \nARG 3.742000 \n.. ... \nWSM 0.027000 \nYEM 4.099000 \nZAF 5.786000 \nZMB 2.902000 \nZWE 2.138000 \n\n Adolescent birth rate (births per 1,000 women ages 15-19) \\\nAFG 68.957000 \nAGO 150.526000 \nALB 19.642000 \nAND 14.976928 \nARG 62.782000 \n.. ... \nWSM 23.886000 \nYEM 60.352000 \nZAF 67.908000 \nZMB 120.112000 \nZWE 86.135000 \n\n Sex ratio at birth (male to female births) \\\nAFG 1.060000 \nAGO 1.030000 \nALB 1.090000 \nAND 1.058547 \nARG 1.040000 \n.. ... \nWSM 1.080000 \nYEM 1.050000 \nZAF 1.030000 \nZMB 1.030000 \nZWE 1.020000 \n\n Young age (0-14) dependency ratio (per 100 people ages 15-64) \\\nAFG 77.346000 \nAGO 91.097000 \nALB 25.439000 \nAND 25.017928 \nARG 38.334000 \n.. ... \nWSM 66.194000 \nYEM 67.773000 \nZAF 44.148000 \nZMB 83.229000 \nZWE 76.845000 \n\n Old-age (65 and older) dependency ratio (per 100 people ages 15-64) \\\nAFG 4.764000 \nAGO 4.297000 \nALB 20.764000 \nAND 21.992987 \nARG 17.523000 \n.. ... \nWSM 8.623000 \nYEM 5.015000 \nZAF 8.253000 \nZMB 3.960000 \nZWE 5.433000 \n\n HDI rank Total unemployment rate (female to male ratio) \\\nAFG 169.0 1.356000 \nAGO 148.0 1.016000 \nALB 69.0 0.903000 \nAND 36.0 1.788414 \nARG 46.0 1.222000 \n.. ... ... \nWSM 111.0 1.297000 \nYEM 179.0 2.088000 \nZAF 114.0 1.149000 \nZMB 146.0 1.147000 \nZWE 150.0 1.231000 \n\n Youth unemployment rate (female to male ratio) \\\nAFG 1.308000 \nAGO 0.906000 \nALB 0.799000 \nAND 1.412073 \nARG 1.291000 \n.. ... \nWSM 1.492000 \nYEM 1.467000 \nZAF 1.161000 \nZMB 1.079000 \nZWE 1.269000 \n\n Coefficient of human inequality Inequality-adjusted HDI (IHDI) \nAFG 29.772732 0.360280 \nAGO 31.733000 0.397000 \nALB 10.893000 0.708000 \nAND 10.066536 0.786988 \nARG 13.238000 0.729000 \n.. ... ... \nWSM 21.104700 0.551524 \nYEM 30.867000 0.321000 \nZAF 31.163000 0.468000 \nZMB 30.592000 0.401000 \nZWE 22.525000 0.441000 \n\n[195 rows x 67 columns]", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Population with at least some secondary education (% ages 25 and older)Population with at least some secondary education, female (% ages 25 and older)Population with at least some secondary education, male (% ages 25 and older)Share of seats in parliament (% held by women)Vulnerable employment (% of total employment)Urban population (%)Labour force participation rate (% ages 15 and older), femaleLabour force participation rate (% ages 15 and older), maleRemittances, inflows (% of GDP)Foreign direct investment, net inflows (% of GDP)...Population under age 5 (millions)Adolescent birth rate (births per 1,000 women ages 15-19)Sex ratio at birth (male to female births)Young age (0-14) dependency ratio (per 100 people ages 15-64)Old-age (65 and older) dependency ratio (per 100 people ages 15-64)HDI rankTotal unemployment rate (female to male ratio)Youth unemployment rate (female to male ratio)Coefficient of human inequalityInequality-adjusted HDI (IHDI)
AFG26.08013.22036.92027.24479.7260025.821.59500074.6580004.5420000.123000...5.63900068.9570001.06000077.3460004.764000169.01.3560001.30800029.7727320.360280
AGO30.23223.13338.05630.00065.9950066.276.13600078.9130000.002000-4.331000...5.670000150.5260001.03000091.0970004.297000148.01.0160000.90600031.7330000.397000
ALB93.17493.70092.49729.50852.8520061.246.71200064.5680009.6400007.912000...0.16900019.6420001.09000025.43900020.76400069.00.9030000.79900010.8930000.708000
AND72.32771.48473.32746.42915.4288488.054.35136472.2329831.7035733.286625...-7.12225914.9769281.05854725.01792821.99298736.01.7884141.41207310.0665360.786988
ARG57.15859.16154.82839.87721.8050092.050.72100072.7300000.1190001.389000...3.74200062.7820001.04000038.33400017.52300046.01.2220001.29100013.2380000.729000
..................................................................
WSM74.94279.12771.58310.00029.9830018.131.10400055.45600017.2540003.114609...0.02700023.8860001.08000066.1940008.623000111.01.2970001.49200021.1047000.551524
YEM28.02019.92036.9180.97145.6270037.35.83400070.1830007.999177-4.382862...4.09900060.3520001.05000067.7730005.015000179.02.0880001.46700030.8670000.321000
ZAF75.47874.97778.20745.33310.2980066.949.61000062.7490000.2530001.316000...5.78600067.9080001.03000044.1480008.253000114.01.1490001.16100031.1630000.468000
ZMB44.44038.48854.06817.96478.1340044.170.37000079.0760000.5510002.087000...2.902000120.1120001.03000083.2290003.960000146.01.1470001.07900030.5920000.401000
ZWE64.93559.79270.78334.57164.7390032.278.10600088.9930008.0680004.005312...2.13800086.1350001.02000076.8450005.433000150.01.2310001.26900022.5250000.441000
\n

195 rows × 67 columns

\n
" + "text/plain": " Population with at least some secondary education (% ages 25 and older) \\\nAFG 26.080 \nAGO 30.232 \nALB 93.174 \nAND 72.327 \nARG 57.158 \n.. ... \nWSM 74.942 \nYEM 28.020 \nZAF 75.478 \nZMB 44.440 \nZWE 64.935 \n\n Population with at least some secondary education, female (% ages 25 and older) \\\nAFG 13.220 \nAGO 23.133 \nALB 93.700 \nAND 71.484 \nARG 59.161 \n.. ... \nWSM 79.127 \nYEM 19.920 \nZAF 74.977 \nZMB 38.488 \nZWE 59.792 \n\n Population with at least some secondary education, male (% ages 25 and older) \\\nAFG 36.920 \nAGO 38.056 \nALB 92.497 \nAND 73.327 \nARG 54.828 \n.. ... \nWSM 71.583 \nYEM 36.918 \nZAF 78.207 \nZMB 54.068 \nZWE 70.783 \n\n Mean years of schooling, female (years) \\\nAFG 1.94800 \nAGO 4.02300 \nALB 9.70200 \nAND 10.43900 \nARG 11.12300 \n.. ... \nWSM 11.16287 \nYEM 2.88000 \nZAF 10.03100 \nZMB 6.28300 \nZWE 8.06600 \n\n Mean years of schooling, male (years) \\\nAFG 6.006000 \nAGO 6.359000 \nALB 10.614000 \nAND 10.564000 \nARG 10.729000 \n.. ... \nWSM 10.415249 \nYEM 5.146000 \nZAF 10.291000 \nZMB 8.176000 \nZWE 8.923000 \n\n Share of seats in parliament (% held by women) \\\nAFG 27.244 \nAGO 30.000 \nALB 29.508 \nAND 46.429 \nARG 39.877 \n.. ... \nWSM 10.000 \nYEM 0.971 \nZAF 45.333 \nZMB 17.964 \nZWE 34.571 \n\n Adolescent birth rate (births per 1,000 women ages 15-19) \\\nAFG 68.957000 \nAGO 150.526000 \nALB 19.642000 \nAND 18.266334 \nARG 62.782000 \n.. ... \nWSM 23.886000 \nYEM 60.352000 \nZAF 67.908000 \nZMB 120.112000 \nZWE 86.135000 \n\n Vulnerable employment (% of total employment) \\\nAFG 79.726000 \nAGO 65.995000 \nALB 52.852000 \nAND 4.461035 \nARG 21.805000 \n.. ... \nWSM 29.983000 \nYEM 45.627000 \nZAF 10.298000 \nZMB 78.134000 \nZWE 64.739000 \n\n Total population (millions) Urban population (%) ... \\\nAFG 38.042 25.8 ... \nAGO 31.825 66.2 ... \nALB 2.881 61.2 ... \nAND 0.077 88.0 ... \nARG 44.781 92.0 ... \n.. ... ... ... \nWSM 0.197 18.1 ... \nYEM 29.162 37.3 ... \nZAF 58.558 66.9 ... \nZMB 17.861 44.1 ... \nZWE 14.645 32.2 ... \n\n Gender Development Index (GDI) \\\nAFG 0.659000 \nAGO 0.903000 \nALB 0.967000 \nAND 1.058332 \nARG 0.993000 \n.. ... \nWSM 0.949613 \nYEM 0.488000 \nZAF 0.986000 \nZMB 0.958000 \nZWE 0.931000 \n\n Estimated gross national income per capita, female (2017 PPP $) \\\nAFG 819.385000 \nAGO 5205.049000 \nALB 11004.455000 \nAND 43647.171247 \nARG 14872.167000 \n.. ... \nWSM 4054.375000 \nYEM 186.041000 \nZAF 9247.751000 \nZMB 3379.549000 \nZWE 2374.612000 \n\n Estimated gross national income per capita, male (2017 PPP $) \\\nAFG 3565.86500 \nAGO 7022.23100 \nALB 16884.66700 \nAND 66636.70046 \nARG 27825.75700 \n.. ... \nWSM 8410.10900 \nYEM 2980.03500 \nZAF 15094.54600 \nZMB 3270.42200 \nZWE 2984.89600 \n\n Human Development Index (HDI), female \\\nAFG 0.391000 \nAGO 0.552000 \nALB 0.780000 \nAND 0.888833 \nARG 0.835000 \n.. ... \nWSM 0.689133 \nYEM 0.270000 \nZAF 0.702000 \nZMB 0.569000 \nZWE 0.550000 \n\n Human Development Index (HDI), male Inequality-adjusted income index \\\nAFG 0.593000 0.590646 \nAGO 0.611000 0.442000 \nALB 0.807000 0.648000 \nAND 0.848604 0.657202 \nARG 0.840000 0.606000 \n.. ... ... \nWSM 0.723468 0.388513 \nYEM 0.553000 0.327000 \nZAF 0.712000 0.312000 \nZMB 0.593000 0.292000 \nZWE 0.590000 0.353000 \n\n Overall loss in HDI due to inequality (%) Inequality in income (%) \\\nAFG 19.599171 -14.312061 \nAGO 31.670000 28.900000 \nALB 10.943000 13.179000 \nAND 17.410515 36.120212 \nARG 13.728000 25.159000 \n.. ... ... \nWSM 18.988401 40.384439 \nYEM 31.702000 21.800000 \nZAF 33.992000 56.996000 \nZMB 31.336000 44.840000 \nZWE 22.767000 28.769000 \n\n Coefficient of human inequality Inequality-adjusted HDI (IHDI) \nAFG 19.795336 0.423465 \nAGO 31.733000 0.397000 \nALB 10.893000 0.708000 \nAND 16.938070 0.735618 \nARG 13.238000 0.729000 \n.. ... ... \nWSM 18.427962 0.575112 \nYEM 30.867000 0.321000 \nZAF 31.163000 0.468000 \nZMB 30.592000 0.401000 \nZWE 22.525000 0.441000 \n\n[195 rows x 67 columns]", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Population with at least some secondary education (% ages 25 and older)Population with at least some secondary education, female (% ages 25 and older)Population with at least some secondary education, male (% ages 25 and older)Mean years of schooling, female (years)Mean years of schooling, male (years)Share of seats in parliament (% held by women)Adolescent birth rate (births per 1,000 women ages 15-19)Vulnerable employment (% of total employment)Total population (millions)Urban population (%)...Gender Development Index (GDI)Estimated gross national income per capita, female (2017 PPP $)Estimated gross national income per capita, male (2017 PPP $)Human Development Index (HDI), femaleHuman Development Index (HDI), maleInequality-adjusted income indexOverall loss in HDI due to inequality (%)Inequality in income (%)Coefficient of human inequalityInequality-adjusted HDI (IHDI)
AFG26.08013.22036.9201.948006.00600027.24468.95700079.72600038.04225.8...0.659000819.3850003565.865000.3910000.5930000.59064619.599171-14.31206119.7953360.423465
AGO30.23223.13338.0564.023006.35900030.000150.52600065.99500031.82566.2...0.9030005205.0490007022.231000.5520000.6110000.44200031.67000028.90000031.7330000.397000
ALB93.17493.70092.4979.7020010.61400029.50819.64200052.8520002.88161.2...0.96700011004.45500016884.667000.7800000.8070000.64800010.94300013.17900010.8930000.708000
AND72.32771.48473.32710.4390010.56400046.42918.2663344.4610350.07788.0...1.05833243647.17124766636.700460.8888330.8486040.65720217.41051536.12021216.9380700.735618
ARG57.15859.16154.82811.1230010.72900039.87762.78200021.80500044.78192.0...0.99300014872.16700027825.757000.8350000.8400000.60600013.72800025.15900013.2380000.729000
..................................................................
WSM74.94279.12771.58311.1628710.41524910.00023.88600029.9830000.19718.1...0.9496134054.3750008410.109000.6891330.7234680.38851318.98840140.38443918.4279620.575112
YEM28.02019.92036.9182.880005.1460000.97160.35200045.62700029.16237.3...0.488000186.0410002980.035000.2700000.5530000.32700031.70200021.80000030.8670000.321000
ZAF75.47874.97778.20710.0310010.29100045.33367.90800010.29800058.55866.9...0.9860009247.75100015094.546000.7020000.7120000.31200033.99200056.99600031.1630000.468000
ZMB44.44038.48854.0686.283008.17600017.964120.11200078.13400017.86144.1...0.9580003379.5490003270.422000.5690000.5930000.29200031.33600044.84000030.5920000.401000
ZWE64.93559.79270.7838.066008.92300034.57186.13500064.73900014.64532.2...0.9310002374.6120002984.896000.5500000.5900000.35300022.76700028.76900022.5250000.441000
\n

195 rows × 67 columns

\n
" }, "metadata": {} } ], "source": [ - "# 29 - 5 - 11 - 9 - 4 - 9\n", - "final_df = idf1.merge(idf2, left_index=True, right_index=True)\n", - "print(final_df.shape)\n", - "final_df = final_df.merge(idf3, left_index=True, right_index=True)\n", - "print(final_df.shape)\n", - "final_df = final_df.merge(idf4, left_index=True, right_index=True)\n", - "print(final_df.shape)\n", - "final_df = final_df.merge(idf5, left_index=True, right_index=True)\n", - "print(final_df.shape)\n", - "final_df = final_df.merge(idf6, left_index=True, right_index=True)\n", - "print(final_df.shape)\n", - "\n", - "display(final_df)" + "display(imputed_df)" ] }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "#scatter_matrix(imputed_df, figsize=(size, size)) Takes a lot of time to work, visualization is not that great. But it can stay, just in case" + ] + }, + { + "cell_type": "code", + "execution_count": 26, "metadata": {}, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ - "" + "" ] }, "metadata": {}, - "execution_count": 19 + "execution_count": 26 }, { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "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\n" + "image/svg+xml": "\r\n\r\n\r\n \r\n \r\n \r\n \r\n 2021-05-12T09:28:44.813663\r\n image/svg+xml\r\n \r\n \r\n Matplotlib v3.4.1, https://matplotlib.org/\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAABC8AAARiCAYAAACEd92PAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Z1A+gAAAACXBIWXMAAAsTAAALEwEAmpwYAADX+ElEQVR4nOzdeZhcZZn+8fup6uo9OyTshFUEcQJEwJ8OiyiLG46DguiACsQNcNRRcXBEUBhxVGQcXOKIjBuCDCIioqjEjSGkxYCAguwJkJA96fRaVc/vj67MdJp0nTxvujrV3d/PdfVF55y+eZ86e799znvM3QUAAAAAAFCvctu7AAAAAAAAgGrovAAAAAAAAHWNzgsAAAAAAFDX6LwAAAAAAAB1jc4LAAAAAABQ1+i8AAAAAAAAdY3OCwAAAAAAsBkzu9rMnjOz+4eZb2b272b2iJndZ2aHDpp3ppn9tfJ15kjUQ+cFAAAAAAAY6hpJJ1aZf5Kk/Spf8yR9RZLMbLqkiyQdIelwSReZ2bRtLYbOCwAAAAAAsBl3/42k1VV+5GRJ3/IBd0maamY7SzpB0u3uvtrd10i6XdU7QbYKnRcAAAAAACBqV0lLBv17aWXacNO3ScO2/g+yPN71jNe6jU3KXg5nlm5cntRWc74xnDn3uw+GM/mvXBfOdHctC2ckqelt7wlnZp7YFs6suHZ9OCNJzUs7w5ny2buEM/0/TauvtFMhnLH++O7RtuCBcGYgOD0c2fiiWeFM57VXhDOS9LpffCKcaTQLZ46etnM4I0l/WB8/Vlx91D+HM81Nk8MZSfpyx5fDmZtXPB7OzG5uCmckaa+WqeHMv3z7yXDGlveHM5J0wtnx5b6yP37OuevkK8MZSTrmlveHM1Py8b9PdJbin0mSfn1LbziTW9YXz7y0PZyRpA+9NH78++zXng5n1v3nZ8IZSdrlkHeGM30z4tus5+PHzN7fXRvOSNKRN703nPnta/4tnGl657nhjCQpviiktvg+lXs6vp1LUnmf5nDmxS+PX9bnE86jkvT4ynhm/5nxTMJhVpJ07LQp4UzB4uv34e4N4YwkffcVl4Qzk056Xziz/tYvhTOS9K93fzGcOXnXo9I2pjFiNH+nHU17t+36Lg087rHJfHefv73qyVLzzgsAAAAAAFBfKh0V29JZ8bSk3Qf9e7fKtKclHTNk+oJtaEcSj40AAAAAAIC4myWdUXnryJGS1rn7s5J+Jul4M5tWGajz+Mq0bcKdFwAAAAAAYDNmdq0G7qDYwcyWauANIgVJcvevSrpV0qslPSKpS9I7KvNWm9mnJC2q/K8ucfdqA39uFTovAAAAAAAYRsrYiuOBu78lY75L2uKALO5+taSrR7IeHhsBAAAAAAB1LfPOCzM7QAPvb930apOnJd3s7n+uZWEAAAAAAABSxp0XZvZRSd/XwAul7q58maRrzeyC2pcHAAAAAAAmuqw7L86SdJC79w+eaGZfkPSApC2+0NzM5qnyvthLv3S53vLOt41AqQAAAAAAjK6JOuZFvcnqvChL2kXSk0Om71yZt0WD3xf7eNczvi0FAgAAAACAiS2r8+IfJf3SzP4qaUll2h6S9pV0bg3rAgAAAAAAkJTReeHut5nZ/pIO1+YDdi5y91KtiwMAAAAAAMh824i7lyXdNQq1AAAAAABQV8rOSAj1oOrbRgAAAAAAALY3Oi8AAAAAAEBdo/MCAAAAAADUtcwxL8aSYjk+hmhjrpDU1ug99xR/p3Cx1JfUUlMxnjFLyKQuuly8sYRNQp7wmZKVEhZG4vq1UsLCyMcjnrDNSlJjwsaUT1hXhVzaYa8xF+/rTdkXS+WEHVFSQy6+slKWeaOl9XnnUvrKG1IOMPGIJLXk4/UVSvFtvZxyUFLaoSJlmy0lfCZJUjmhwLRNPUkhYf9I2WTLiWOZe8K6Gi2p47M3JnykYqk3nGlKWLWSkq4pUnhqO3X+eH1T4+i0k3Kel6TmxHN9VOrm5ynngoRzYur+m0s9mQI1Nq46LwAAAAAAGEllT+zcx4iq365+AAAAAAAA0XkBAAAAAADqHJ0XAAAAAACgrjHmBQAAAAAAwygnDkiPkcWdFwAAAAAAoK4ld16Y2TtGshAAAAAAAIAt2ZY7Ly4eboaZzTOzDjPruPbq72xDEwAAAAAAYKKrOuaFmd033CxJs4bLuft8SfMl6fGuZzy5OgAAAAAAtqOy8yttPcgasHOWpBMkrRky3STdWZOKAAAAAAAABsnqvLhFUru7Lx46w8wW1KIgAAAAAACAwap2Xrj7WVXmnT7y5QAAAAAAAGwu684LAAAAAAAmrLKXt3cJ0La9bQQAAAAAAKDm6LwAAAAAAAB1reaPjaTeYlMsl8KZxnwhnFnTtyGckaQphbZ4KOENO5aLf6amxinxhiSp0cKRYnw1yRO7zKwU35ZyCVu4pb4JKeVzFeLL3BonJTQkeaEx3lZ/fGHkErZZSVpdjK/floRlvr6/Kx6StK5YDGdamqeGM4WGlnBGkrqKPeFMyjKfUuwPZyRpeqk3HupJOH8k7r+r++Prd0PC/lEotIYzqVI+Uyn1+JePH8u8KZ5RQkSS1vXH9w8VE9ZvvjnejiQrxddVCk9Yfg2F9qS21vbFl19zU/z6JeU8NRCMRzzlnJ24U3nCPlVOaiqtvvXrEupLuDztS/tQWt3fHc40J1w09iW+PrOhIX6ssN74ObEh8ZjUWepLygG1xp0XAAAAAACgrjFgJwAAAAAAw2DAzvrAnRcAAAAAAKCu0XkBAAAAAADqGp0XAAAAAACgrmWOeWFmB0jaVdJCd+8cNP1Ed7+tlsUBAAAAALA9lRPfLIORVfXOCzM7X9KPJJ0n6X4zO3nQ7MtqWRgAAAAAAICU/djIOZIOc/c3SDpG0r+Y2fsr84Z9wbOZzTOzDjPr+P7V3x2RQgEAAAAAwMSU9dhIbtOjIu7+hJkdI+kGM9tTVTov3H2+pPmS9OjGpdxjAwAAAAAAkmV1Xiw3sznuvliS3L3TzF4r6WpJB9e6OAAAAAAAtqeyytu7BCj7sZEzJC0bPMHdi+5+hqSjalYVAAAAAABARdU7L9x9aZV5vx/5cgAAAAAAADaXdecFAAAAAADAdpU15gUAAAAAABNW2Rnzoh5w5wUAAAAAAKhrNb/zYunG5Um5xlwhnFnTtyGceeHUvcIZSeoqdsdDrfG+ot7u1eHMug1LwhlJ2mFjKZxpa4m3s7ow7Ft2q+qfEm/Me+Nv6rXu+HIYCDbGMwnLvNj5bLwdSfmEbdYbdwxnunrWhDOSNHdSWzjTlnCc2H/yHuGMJBUTety/suaxcKatZWo4I0l7tO8czsxNOL5MLyTs9JL2nbRrPNSSsK03px1fDps0JZxZ0dcTzvzPxmXZP7QFOzXGT9cHtU0NZ57p7QxnJOl/uuPHl9z6+PEv9Q9fL5gU3z/U8Fw4sjZ1/fbGl1+pdUa8oYTdo7Pz6XhI0kHt8XPi7xKW39R82j6f9Oe7lnjIE6951B+/fpmU0FZjYnkv3TseTFlVJU8r8MVTdg9n+kr94cz6Ul84I0kbuuLHl5aE7S+lHUnat32npBxQa9x5AQAAAAAA6hqdFwAAAAAAoK4xYCcAAAAAAMMoe/xRLow87rwAAAAAAAB1jc4LAAAAAABQ1zIfGzGzwyW5uy8yswMlnSjpL+5+a82rAwAAAAAAE17Vzgszu0jSSZIazOx2SUdIukPSBWZ2iLtfOgo1AgAAAACwXZRT39WNEZX12Mgpkl4m6ShJ75P0Bnf/lKQTJJ06XMjM5plZh5l1/PhbN45YsQAAAAAAYOLJemyk6O4lSV1m9qi7r5ckd+82s2G7n9x9vqT5kvTr5/7A0KwAAAAAACBZ1p0XfWbWWvn+sE0TzWyKJO6dAQAAAAAANZd158VR7t4rSe6bPehTkHRmzaoCAAAAAKAOMOZFfajaebGp42IL01dKWlmTigAAAAAAAAbJemwEAAAAAABgu6LzAgAAAAAA1LWsMS8AAAAAAJiwyuIFmvWAOy8AAAAAAEBdq/mdF835xqRc2eO9W1MKbeFMV7E7nJGk1oaWcMYSuopyuXw409TYHm9IkjeNUl9WMa3nsmFjX7ypvIUzVhrFntWmeH0NbTumtZWwzaocXxZm8c8kSRuKxXCmuTF+CCt6vB1J2lDc4vjFVTU1tmb/0NBMwnEsVcoyn5QvJbWVckxXb0ImcTDwtQnrt7scXxaFlP1QUmPCftVV6g9n2nKJlwWFeH3eGj/n5BJPU8WEdaWEc4Ep7fincnxd5XriG7snrKfGQto1xbpiwv6Rbw5nrD/xnJ1wfvO2hLZSLynil39qycXXb8JlkiTpT6viH+zwHeMfqi9hPUlSV7EnnGmweH3NCdfpkpRLaCvfGd+nUn6PkBKPmcAo4M4LAAAAAABQ1+i8AAAAAAAAdY0BOwEAAAAAGEbZE59LxYjizgsAAAAAAFDXwp0XZvatWhQCAAAAAACwJVUfGzGzm4dOknSsmU2VJHd/fY3qAgAAAAAAkJQ95sVukh6U9J8aeNmTSZor6fM1rgsAAAAAgO2uxJgXdSHrsZG5kv4g6UJJ69x9gaRud/+1u/96uJCZzTOzDjPruOm/bhi5agEAAAAAwIRT9c4Ldy9LusLMflD57/KsTCU3X9J8SVq46k8+EoUCAAAAAICJaateleruSyW9ycxeI2l9bUsCAAAAAAD4P1vVebGJu/9E0k9qVAsAAAAAAHWl7DxMUA/Cr0oFAAAAAAAYTXReAAAAAACAukbnBQAAAAAAqGuhMS8AAAAAAJhIyipv7xIgybzGg4+85N+vG73RTVJaak27+cQSYte95WXhzGn/9PNwpmF9MZyRpP5dGsMZ37s53pDFI5Jkj/TEQwnbRH5lfzwkqTw53hfoLfENyTaUwhlJSfdZNayLb0tNS56ONySp850HhTMNrfGNqdSddkjyhHNW4RdrwxkrptXX98qp8VAhYWdMPHdbQle5/7ErnpmUjzckKbdPU7ytUdomJMlPnpaUiyonHl7Kf+qOh7rjC9Anj+L6vS++/bU8vCGckaRcX18403nczvGGEq758n9NOPdKKh3cGs4U7u4MZ8rNiddxffHtr3jEpHAm91DCviHJpyRcU+wav45LvSbLNceDKb9yeMJxQpLyCccKTzj/euIxs/Fna8KZ/h3i67ewojeckaT+10wPZxb+wymJW9PYcNuzd47LETtP3Pn/jan1xmMjAAAAAACgrtF5AQAAAAAA6hqdFwAAAAAAoK4xYCcAAAAAAMMo13icSGwd7rwAAAAAAAB1LXTnhZm9XNLhku539/hrMAAAAAAAAIKq3nlhZncP+v4cSf8haZKki8zsghrXBgAAAAAAkHnnRWHQ9/MkvcrdV5jZ5yTdJekzWwqZ2bzKz2vPU8/Wjv/vlSNRKwAAAAAAo6rk5e1dApQ95kXOzKaZ2QxJ5u4rJMndN0oqDhdy9/nuPtfd59JxAQAAAAAAtkXWnRdTJP1BkklyM9vZ3Z81s/bKNAAAAAAAgJqq2nnh7rOHmVWW9HcjXg0AAAAAAMAQobeNbOLuXZIeH+FaAAAAAACoK2X59i4Byh7zAgAAAAAAYLui8wIAAAAAANQ1Oi8AAAAAAEBdM/faPr9z5AvfmNhA/F26liuEM73dq8MZScrl8uFM/vjTw5nvf+74cOamZ+4JZyTp+1etCmfa/vRsONP5D/uGM5LkvfFNqf2bd4UznW89PJyRpNxjPfFQwiujd/z7SfGQpL7+eGbdTRvCmQ/90+7xhiRddOQHwplJk/YIZ0rF7nBGkjZsfCacmfuTT4czb5o1I5yRpE8ddUk4092zMpzJ55vCGUkqNLSEM83HnRnOlKYnDeWkzu9cEQ9Z/KVbl9z1+Xg7kq549fxwpq93bTjTUGgPZyTJ/9+rw5nyrPg5u+0Pz4UzkrT83m+HM+1v/2A4c/bZO4QzkvSfv9sYDyWcP7wvfh59xcvT9qnfnfqDcObvbnxLOHPDZ+PHMUnyQnz/Le/bHM7knuoNZyQpv7oYzpQX/SSeKSdcHEhqm3lwONO98i/hTLmUtvy6ulcktBVfFg0N8W1Ckk77xcfCmR8uiC+LU45JO2dfc8y/hDN/fubecf0myh8u/fW4HPTi73Y7ekytN+68AAAAAAAAdY3OCwAAAAAAUNfovAAAAAAAAHWNzgsAAAAAAFDX0kZhAgAAAABgAih5wijJGHFV77wwsyPMbHLl+xYzu9jMfmxml5vZlNEpEQAAAAAATGRZj41cLamr8v2VkqZIurwy7Zs1rAsAAAAAAEBS9mMjOXff9KLpue5+aOX735nZ4uFCZjZP0jxJ2munOZo5da9tLhQAAAAAAExMWXde3G9m76h8f6+ZzZUkM9tfUv9wIXef7+5z3X0uHRcAAAAAgLGq7D4uv8aarM6LsyUdbWaPSjpQ0v+Y2WOSvl6ZBwAAAAAAUFNVHxtx93WS3l4ZtHOvys8vdfflo1EcAAAAAADAVr0q1d3XS7q3xrUAAAAAAAA8z1Z1XgAAAAAAMBGVNPbGhxiPssa8AAAAAAAA2K7ovAAAAAAAAHWt5o+NdHctS8oVS33hTFPjlHBm3YYl4cxAW+3hzLT1xXDmpmfuCWfesMuh4YwkfW/Wr8OZrtvuDmdyzfuFM5JULsdv1yruGm/L2tL69LzB4plp8V0wYTEkK+8Yry9n8eUgSZ7wuqae7pXhTG/fhnBGkkql+P576ORCONOUSzssd3Y9G87kLN7Wus54O5LUVGgNZ6Ys3xjOdM2YGs5IUn+pJ5xpLLQltZWiVOwNZzZujI+t3dpSCmckKbdDfFvyneL7h/XHrw0kaX3Xc+HMlGXDvhF+WLNbpoUzkuS9neFMPuVc1RQ/Pr9x1r7xdiRd/+zCcOZF7eeGMzd1pl1nppyz+7rL4Ux5atox3Xrj58S+3jXhTKkU384lqXHDM+FMX++6cKZY7ApnJGn9xrTtIqq9eUZSrjHlWmlFfF215OLnXknq7l2flANqjTEvAAAAAAAYRjnhj2wYeTw2AgAAAAAA6hqdFwAAAAAAoK7ReQEAAAAAAOoanRcAAAAAAKCuVR2w08zOl/RDd097JQcAAAAAAGNYyeNvG8LIy7rz4lOSFprZb83svWa242gUBQAAAAAAsElW58VjknbTQCfGYZIeNLPbzOxMM5s0XMjM5plZh5l1rOqMv2ceAAAAAABgk6zOC3f3srv/3N3PkrSLpC9LOlEDHRvDhea7+1x3nzujfdYIlgsAAAAAACaaqmNeSLLB/3D3fkk3S7rZzFprVhUAAAAAAHWgJN/eJUDZd16cOtwMd+8a4VoAAAAAAACep2rnhbs/PFqFAAAAAAAAbEnWnRcAAAAAAADbVdaYFwAAAAAATFhlZ8yLesCdFwAAAAAAoK6Z17gX6fALv53WQDEh02jZPzOEbSwlNCR5U0K/Tym+KKw/ninPagxnJOn6848OZ0696BfhjPWkbRLlmfEbhRpf1BLOFH+9IZyRlNQV+P1PvyqcOfWT8WUuSWpMKDDl+JCL74cDbaVkEkK9ice8pvjn8rZ8OGPd5XBGkpSSax6lbUJKO6anlJfymSRZX8LyS9nWuxLXb8sorqsEX//wEeFMY64Qzpx17q/CGUkq7hY/L6bsiz457YZWT1i9tiHh+iWfcBxrT9uncsv7421NT1h+G9P2KSsn7B8J12Q+KX4ekKRz3zUrnPmP/1gWbyjxlG0J51JPuE5PrS/p+FxIyKRsR5I84Zos5TyV0o6Udvy7+/J/SF1bY8I3Hr9tXN56cdZeJ46p9cadFwAAAAAAoK4x5gUAAAAAAMMoMeZFXeDOCwAAAAAA8DxmdqKZPWRmj5jZBVuYf4WZLa58PWxmawfNKw2ad/O21sKdFwAAAAAAYDNmlpd0laRXSVoqaZGZ3ezuD276GXf/wKCfP0/SIYP+F93uPmek6uHOCwAAAAAAMNThkh5x98fcvU/S9yWdXOXn3yLp2loVU7XzwswazewMM3tl5d+nm9l/mNn7zCw+TDgAAAAAABgLdpW0ZNC/l1amPY+Z7SlpL0mDXw3WbGYdZnaXmb1hW4vJemzkm5WfaTWzMyW1S7pR0nEa6IU5c1sLAAAAAACgXpU0PgfsNLN5kuYNmjTf3ecn/u9Ok3SDuw9+l/ee7v60me0t6Vdm9id3fzS13qzOi4Pd/cVm1iDpaUm7uHvJzL4j6d7URgEAAAAAwPZT6aio1lnxtKTdB/17t8q0LTlN0vuG/P+frvz3MTNboIHxMJI7L7LGvMiZWaOkSZJaJU2pTG+SNOxjI2Y2r3J7SMdzf7wjtTYAAAAAALB9LJK0n5ntVekXOE3S894aYmYHSJom6X8GTZtmZk2V73eQ9DJJDw7NRmTdefENSX+RlJd0oaQfmNljko7UwGAdWzS4B+fwC789Pu+xAQAAAABgnHL3opmdK+lnGugTuNrdHzCzSyR1uPumjozTJH3f3Qf/7v9CSV8zs7IGbpr4zOC3lKSo2nnh7leY2XWV758xs29JeqWkr7v73dvSMAAAAAAA9a48gf8c7+63Srp1yLRPDPn3J7eQu1PSwSNZS9adF3L3ZwZ9v1bSDSNZAAAAAAAAQDVZY14AAAAAAABsV3ReAAAAAACAupb52AgAAAAAABNVySfwoBd1hDsvAAAAAABAXav5nRczT2xLypnFM8VSPNPWEs+kevKeYjjTfsNj4UzXbWkvgjl1VX84c93Frwxn3vL+n4UzkmRr4yu477G+cKZ5aXc4I0m9B00KZ0795C/CmeZHN4YzklRuTNjdy+VwxB6+K96OpL2/8bpwpn8UO8FzCcekJe+Kr18vJxzIJM38ygnhTFvCJrFHS1qf91Pd8W3pwd/E919bFT/OStIL/z5+rkpZU0+e9eOElFT4THz/2H3HeDud8UUuSTr7ykXhTG5F/Jzjr5wSzkjSUYfFt9tf/6gn3tA1345nJDXPeUM407djU7yhhGNm8QfXxEOSTv3ZP4YzP3jd18OZ8rtPD2ckyRN2YFsd32YLT/XGG5L0pf9eHc7s+sb2cCaf+GfMZ5fGN6Yddo6fSBsL4YgkaZfWeKYl4US/pDvtQuSZ9/4mnOk66tBwpu2X8WOzJL3w60cl5YBa484LAAAAAABQ1xjzAgAAAACAYZRSbl3DiOPOCwAAAAAAUNfovAAAAAAAAHWNzgsAAAAAAFDXMse8MLO9Jb1R0u4aGFz9YUnfc/f1Na4NAAAAAIDtquSMeVEPqt55YWbnS/qqpGZJL5HUpIFOjLvM7JhaFwcAAAAAAJD12Mg5kk5y909LeqWkg9z9QkknSrpiuJCZzTOzDjPreOrmn49ctQAAAAAAYMLZmjEvNj1a0iSpXZLc/SlJheEC7j7f3ee6+9w9Xn/8tlcJAAAAAAAmrKwxL/5T0iIzWyjpbyVdLklmtqOk1TWuDQAAAAAAoHrnhbtfaWa/kPRCSZ93979Upq+QdNQo1AcAAAAAwHbDgJ31IfNtI+7+gKQHRqEWAAAAAACA59maMS8AAAAAAAC2GzovAAAAAABAXct8bAQAAAAAgImqtL0LgCTJvMaDjxzx3muSGrCElKfcR1KwhJCkYrzA8sGt4Yw1xz9UrjntM/nvOsMZ6ymHM9deeUI4I0lv+9ld8dCN8ZfiFCen9emVd24MZ3LP9cfbmZ5Wn5USdqqE7Tz1fq78sviyKM1IWBaJh7z8mmI4U0rYJnzmsG+hrir3cE880xU/FXs+8fjSFt8wWhf9JZzZeMxB4Ywk5Z/tS8pFFV/clpSzlfH9Q73x43OyhP3KNsbrKyfuH/nl8eXX+vAz4cyGV+0VzkhS8/W/CGcu+em7w5nuUnw7v2TBsnBGknK3rQ1niq+cEs4Ufh5vJ9UrLtwhnLnt+o1JbVlXwv7bmHhNmyD3opZwpvR4fPuz1QnHvkT5VfHzvOfSlnnpBc3xUMohPfGcnXssfk2x8Kq3j94GuB1c9vDN43LEzn/e//Vjar3x2AgAAAAAAKhrdF4AAAAAAIC6xpgXAAAAAAAMo1TjoRawdbjzAgAAAAAA1DU6LwAAAAAAQF2j8wIAAAAAANQ1xrwAAAAAAGAYjHlRH6reeWFmU8zsM2b2FzNbbWarzOzPlWlTq+TmmVmHmXU89+CCka4ZAAAAAABMIFmPjVwvaY2kY9x9urvPkHRsZdr1w4Xcfb67z3X3uTMPPGbEigUAAAAAABNPVufFbHe/3N2XbZrg7svc/XJJe9a2NAAAAAAAgOzOiyfN7CNmNmvTBDObZWYflbSktqUBAAAAAABkD9h5qqQLJP3azGZWpi2XdLOkN9WyMAAAAAAAtrcS43XWhaqdF+6+RtJHK1+bMbN3SPpmjeoCAAAAAACQlP3YSDUXj1gVAAAAAAAAw6h654WZ3TfcLEmzhpkHAAAAAAAwYrLGvJgl6QQNvBp1MJN059Y00Ly0M6EsSTkLR6xUDmf6p7SEM5LUsLEvnOluid/o4vvF6yuX0x7K8plZm8Pz2dpSOPO2n90VzkjSd044Mpx5y09/Fs745Hw4I0m2Ib4syjvGl3luVTGckTSw1wZ5Y8LNWfs0xzOSyuvj+2/jkt6EhuLtSFJxamM44zsW4g0lPlTZuLwnnOmbFV9XDWv7wxlJyq2NHzM1eWb2zwzhbWk3FJYTjs9qSNipEu93bP/NI+FM7+67hTNWTNs/+vZJOFcl7FP5pxL2eUn5DfHjpjclXB9Mjx/TJanvyL8NZ/6ycUU4059wfVDuStsmCl3xY0UpYf/oP35qPCQpV4jvv7d/Yejl8FbYsymekSSPrytbHb8OSbk2kKTyoo3hTMPK+DZRbk+7JmtYF9/nrZhw/k1YT5JUamuLh/oS2mpKW8ENa9LO9eNZSQx6UQ+yzrK3SGp398VDZ5jZgloUBAAAAAAAMFjWgJ1nVZl3+siXAwAAAAAAsLltGbATAAAAAACg5tIezgQAAAAAYAJIHJIMI4w7LwAAAAAAQF2j8wIAAAAAANQ1Oi8AAAAAAEBdq8mYF2Y2T9I8Sdrvxadp5z1fVotmAAAAAACoqZIz6EU9SL7zwsx+Otw8d5/v7nPdfS4dFwAAAAAAYFtUvfPCzA4dbpakOSNeDQAAAAAAwBBZj40skvRrDXRWDDV1xKsBAAAAAAAYIqvz4s+S3uXufx06w8yW1KYkAAAAAACA/5PVefFJDT8uxnkjWwoAAAAAAPWltL0LgKSMzgt3v6HK7GkjXAsAAAAAAMDzJL9tRNLFI1YFAAAAAADAMLLeNnLfcLMkzdqaBspn7xKtaSCXcG9OLushmC3w3rR39hbzWxrDNMPvO8OR9m/eFc4Ud90vnJGk8ltnhjN9j/XFG7pxdTwj6S0//Vk4c+0XTwhn3vyFBeGMpKSuwKYDm8MZ/++05VduihdYmhXPtH/v4XBGkvTRF4Yjnc+Ww5l8W8K+K6llUjzn/xEfGii3fkU4I0k97z8knGlrj3+m7vVpx8xyQqz3T93xUOJ9nW2vmxzOlOObn+zSRfGQpO7z54Yzpe6Ehd6ftn6bZubjTSXUV5ocb0eSGnYvhDMbf9sUzrTf+GQ4I0ldB+wYznzn40+HM+WW+PJr7OwPZySp55j4DbqTrn4onNn4N7uFM5JUziWcCxK2P+tJOFBIsr9pDWfK61MOSvGIJKkr3lZxv/g1j9IOSfId4+sqV0g4z6etXk36wj3hTN8ue4QzhaefCGckqfTR+DkHGA1Zv+7PknSCpDVDppukO2tSEQAAAAAAdaKU2JGGkZXVeXGLpHZ3Xzx0hpktqEVBAAAAAAAAg2UN2HlWlXmnj3w5AAAAAAAAm9uWATsBAAAAAABqLmGISwAAAAAAJgbGvKgP3HkBAAAAAADqGp0XAAAAAACgrtWk88LM5plZh5l1LPvZz2vRBAAAAAAAmCCqdl6Y2WQz+1cz+7aZnT5k3peHy7n7fHef6+5zdzrh+JGqFQAAAACAUVX28fk11mTdefFNSSbpvyWdZmb/bWZNlXlH1rQyAAAAAAAAZXde7OPuF7j7Te7+ekn3SPqVmc0YhdoAAAAAAAAyX5XaZGY5dy9LkrtfamZPS/qNpPaaVwcAAAAAACa8rDsvfizpFYMnuPs1kj4kqa9GNQEAAAAAAPyvqndeuPtHhpl+m5ldVpuSAAAAAACoD6UxOLjleLQtr0q9eMSqAAAAAAAAGEbVOy/M7L7hZkmaNfLlAAAAAAAAbM7ch78HxsyWSzpB0pqhsyTd6e67ZDVw5HuuSbrJxi2esYSWrLsUD0nKJdw7VM7HP1RxbnxcVGtLu6HG7u0KZxqXdoczfbOawxlJ8sn5eKYtnrn+g8eEM5J06qW/DGdsYzmcKe/UGM4MNJaQKcRD+Z0KCQ1JhRtXhDMNXfHtr39K2ljDud7+cKb7ZdPDGZse32YlqWHB+nAmvzH+mQornglnJKl/x8zTxfP0vGRKOJNbljYcU+GZnnhb/fHzR/erdghnJKnp12vDmYaNveGM9cczktS1d8Lnao4fX6w77b7dlidWhzOdr941nGneM+34Vy7GP1fxFxvCGeuPt1N6Sdoxs+mX8WXee8y0cCZ3f/zaRZK8JeFaKeGawqclHtPvi3+u5oceijfk8esQSer+m4PCmZb7/hxvKLE+nxbff61UjGd6NoYzkrTh9AMTQgm/s0xK2/7abo6f6xfc8v6UK80xY969N47LB0fm/80bx9R6y3rbyC2S2t198dAZZragFgUBAAAAAFAvSlX+4I/RkzVg51lV5p0+8uUAAAAAAABsblsG7AQAAAAAAKg5Oi8AAAAAAEBdyxrzAgAAAACACavMkBd1gTsvAAAAAABAXaPzAgAAAAAA1LWqnRdmtpOZfcXMrjKzGWb2STP7k5ldb2Y7V8nNM7MOM+t47sEFI140AAAAAACYOLLuvLhG0oOSlki6Q1K3pFdL+q2krw4Xcvf57j7X3efOPPCYkakUAAAAAIBRVnYbl19jTVbnxSx3/5K7f0bSVHe/3N2XuPuXJO05CvUBAAAAAIAJLqvzYvD8bw2Zlx/hWgAAAAAAAJ4nq/PiR2bWLknu/vFNE81sX0kP1bIwAAAAAAAASWqoNtPdPzHM9EfM7Ce1KQkAAAAAAOD/VO28yHCxpG+OVCEAAAAAANSb0vYuAJIyOi/M7L7hZkmaNfLlAAAAAAAAbM7cffiZZsslnSBpzdBZku50912yGnjJxd8dvoGRljWCx5bY6L0iJvdcfzyUcG+MN6R9JivGV5VPihfohcT6NsT7PH1KfFxZ25jWt3rdhceFM6d9/PZwxptTNnRJvfH1a1WOD8MqxyOSVN6hEM5Yd8I2UUhcfgnbra0rxttJ7Nr3adtyI11AafQO6dYT35iaHu1KaqvnxZOSclG5lQnnAUnlqfH1m3JMVzlt/aasqxTlF7amBZf1hSPWnfCZ+hKXX8Jy9/ZRGje9K23d+o4Jx/S1CcfM/sRjUkLMZyTsh6sSPpMSt4nJCddkqZfBKddyCZ/J0hZf2rVmyvkt8ZLC1iac7BPassRzdjnhmmLRv7x17L13M+Bt99w4ehdAo+g7h75xTK23rC3zFknt7r546AwzW1CLggAAAAAAAAbLGrDzrCrzTh/5cgAAAAAAqB+JNyZihCXe7AQAAAAAADA66LwAAAAAAAB1jc4LAAAAAABQ10ZpeHoAAAAAAMYexryoD+E7L8xsZi0KAQAAAAAA2JKqnRdmNn3I1wxJd5vZNDObXiU3z8w6zKxjRcevRrxoAAAAAAAwcWQ9NrJS0pNDpu0q6R5JLmnvLYXcfb6k+ZL0kou/y002AAAAAAAgWVbnxYclvUrSh939T5JkZo+7+141rwwAAAAAgO2MMS/qQ9XHRtz985LOlvQJM/uCmU3SwB0XAAAAAAAAoyJzwE53X+rub5K0QNLtklprXRQAAAAAAMAmW/22EXe/WdKxkl4pSWb2jloVBQAAAAAAsEnoVanu3u3u91f+eXEN6gEAAAAAANhM1QE7zey+4WZJmjXy5QAAAAAAUD8YsLM+ZL1tZJakEyStGTLdJN25NQ1Yf+KaLiXkChbPbCzFM5LUFG/LW0I3ukiSrLccb2da1mrdsuvef0w4c+onfxHO5NakbRPlHeOfq+nA5nCmf8GGcEaSTvv47eHM9z/9qnDm1E/El7kkqTlhm1XCPpUoZVuXxeuz5H0+vv/65Pg2a91p9dm6YjzUHP9MyUM2pxzTEza/noPa4yFJ1pOw/eUTCkzcpaw4SldNubQC53/ipeFMQy4fzpxz3oJwRpKKuzWGMynbhLfHP5MklRO2JduQcKxIuE7ySWmfKbe0L97WlIS2+tL2DUv4TcSeSfhMbWnL733v2Smc+Y+rloUzqWf5lOt7T7lOTz1m9iUEGxIyqb/Rphwr+hOOSa1p2591JZwTgVGQdWV9i6R2d188dIaZLahFQQAAAAAAAINV7bxw97OqzDt95MsBAAAAAADYXNrzBQAAAAAATADOkzR1IeGBZwAAAAAAgNFD5wUAAAAAAKhrdF4AAAAAAIC6xpgXAAAAAAAMI/WtuBhZVe+8MLMTB30/xcy+YWb3mdn3zGxWldw8M+sws47n7vnVSNYLAAAAAAAmmKzHRi4b9P3nJT0r6XWSFkn62nAhd5/v7nPdfe7MQ1+x7VUCAAAAAIAJK/LYyFx3n1P5/gozO7MG9QAAAAAAAGwmq/Nippl9UJJJmmxm5u6bnvhhsE8AAAAAwLjmjHlRF7I6IL4uaZKkdkn/JWkHSTKznSQtrmllAAAAAAAAyrjzwt0vHmb6MjO7ozYlAQAAAAAA/J9tefRjix0bAAAAAAAAI6nqnRdmdt9wsyQN+6pUAAAAAACAkWJeZfQRM1su6QRJa4bOknSnu++S1cCxL/9Y2vAmpb5wxBonhTPFzmfDGUlqaNsxnNn4on3DmR3fMjmcKScOKLPyls5wpvnRjeFM98HxzyRJubXFcKZhVX8403dQWzgjSbY+Xp/64ivrukteGW9H0hMbng5nPvq5P4czu76xPZyRpOXnXBfONLbF+1C9nLCeJPV3rwpnJv/HqeHMrlPTduBH3/XbcKZvY/z4l7LMJckTjundr3pZvKFS2vLL/+TH8UxDSzgz62tvCGckafXFT4QzxWV/CmcKk/cMZyRp44v3CmfKO0ReeDag4fGecEaSGu79XTjT8+ZXhTM7H9UczkjSs/fHj0v2WG+8oYQLhGmvTjum918c3/7aPn1wOPPc99aHM5JkCceK8oz4NmvrSuGMJCnhUNb28LKEdsrxjKTimsfDmYYZ8etgldLO2X0r49cvuUL8+i/fMj2ckaS2f31JOLP8N/Hj305Hpx2T1p7/k3Dmt/d8w5IaGyNe//sbx+WQnTe/7I1jar1lHYVvkdTu7ouHzjCzBbUoCAAAAAAAYLCsATvPqjLv9JEvBwAAAAAAYHPbMmAnAAAAAABAzcUf3gMAAAAAYIKoMkwkRhF3XgAAAAAAgLpG5wUAAAAAAKhrdF4AAAAAAIC6Fu68MLMZW/Ez88ysw8w6nlm2OKkwAAAAAAC2N/fx+TXWVO28MLPPmNkOle/nmtljkhaa2ZNmdvRwOXef7+5z3X3uLjvNGdmKAQAAAABAzZnZiWb2kJk9YmYXbGH+281shZktrnydPWjemWb218rXmdtaS9bbRl7j7psK/DdJp7r7IjPbX9L3JM3d1gIAAAAAAEB9MbO8pKskvUrSUkmLzOxmd39wyI9e5+7nDslOl3SRBvoMXNIfKtk1qfVkPTbSYGabOjha3H2RJLn7w5KaUhsFAAAAAAB17XBJj7j7Y+7eJ+n7kk7eyuwJkm5399WVDovbJZ24LcVk3XnxZUm3mtlnJN1mZldKulHSKyQt3paGAQAAAACod+UxOD7E1jCzeZLmDZo0393nD/r3rpKWDPr3UklHbOF/9fdmdpSkhyV9wN2XDJPddVvqrdp54e5fMrM/SXqPpP0rP7+fpJskfWpbGgYAAAAAANtHpaNifuYPVvdjSde6e6+ZvUvSf2ngZocRl3Xnhdx9gaQFQ6eb2TskfXPkSwIAAAAAANvZ05J2H/Tv3SrT/pe7rxr0z/+U9NlB2WOGZBdsSzHhV6UOcvG2NAwAAAAAAOrWIkn7mdleZtYo6TRJNw/+ATPbedA/Xy/pz5XvfybpeDObZmbTJB1fmZas6p0XZnbfcLMkzdqqFtqmB0uqNFAqhTNeaAxn8sXucEaS1NASzyR0FfX1xzPJGuMFlhszb955HislPjRm8Ui5KWGhJ7QjSepN+FzN8cae2PB09g9twexJ8UfMrH/oQMLZivFdV5KUL7SGM5awH6au3lx/VzjTk3B46Z6UVmGuqT2cyfclLPNCWzgjSZZPGOO5P2Gfakpbfg2N8eUnix9fNvbEmxloK/65cinnqUJzPCPJGxOWe0oml7h/pGy3ffHtb1TP2SkPYCdESsV4RpKUL4Qj/SltJR7UvSEhWIwvwFxPOd6OpHJrPpzxxoTjrKddk+WbJsebSrhOVz6+HCQpn3BMT7qmaEg7ZiZt6/n4NpvUjhLPHxiX3L1oZudqoNMhL+lqd3/AzC6R1OHuN0s638xeL6koabWkt1eyq83sUxroAJGkS9x99bbUk/Wb5ywNjBI69HUmJunObWkYAAAAAIB6l9jPNy64+62Sbh0y7RODvv+YpI8Nk71a0tUjVUtW58UtktrdffHQGWa2YKSKAAAAAAAAGE7W20bOqjLv9JEvBwAAAAAAYHPbMmAnAAAAAABAzcVHWwQAAAAAYIKYyGNe1BPuvAAAAAAAAHWNzgsAAAAAAFDX6LwAAAAAAAB1rWrnhZndY2YfN7N9Iv9TM5tnZh1m1vHM0ru2rUIAAAAAALYT9/H5NdZk3XkxTdJUSXeY2d1m9gEz2yXrf+ru8919rrvP3WW3I0eiTgAAAAAAMEFldV6scfd/cvc9JH1I0n6S7jGzO8xsXu3LAwAAAAAAE91Wj3nh7r919/dK2lXS5ZJeWrOqAAAAAAAAKhoy5j88dIK7lyTdVvkCAAAAAGDcGovjQ4xHVe+8cPfThptnZu8Y+XIAAAAAAAA2ty2vSr14xKoAAAAAAAAYRtXHRszsvuFmSZo18uUAAAAAAABszrzKAzxmtlzSCZLWDJ0l6U53z3xt6uEf+lbaE0L5eMT64015Y+LNJ+V4W4VlfeFMcVohnCnvmDWUyZZZTzmcaXykK5zp27s1nJEkxcvLHtVlC3xGfJlLUm5pb7ytloTtry9tl0rZP75/2avCmTd//o5wRpJyq4vhjOcs3lBCRJKsFF9+5SkJG2BqfV3xHcT64hkvJBaYstkmNOWTEk4eknKr4ttfyr2L5R3Sji+ND8aPtf07N4YzKdu5JLklrKy2+AJM2uclWWcpIRSP+NS0868S9itbm7LNxtvxhPUkSQ2P9IQzxT2a4g01J17HNSUs8+f6w5krPnBwOCNJH/i34f5+WEVL/Pjno3hOTDq/pRxbJKkrYZ9POfw1ptWX8vuHFRN+z2kYvWPm3Z87I3FljQ3H/+rGcTnqxc9f8cYxtd6yzrK3SGp398VDZ5jZgloUBAAAAABAvWDAzvpQtfPC3c+qMu/0kS8HAAAAAABgc9syYCcAAAAAAEDN0XkBAAAAAADqWuLIUgAAAAAAjH+e8uIAjDjuvAAAAAAAAHWNzgsAAAAAAFDXqnZemNlcM7vDzL5jZrub2e1mts7MFpnZIVVy88ysw8w6nrvvjpGvGgAAAAAATBhZd158WdJnJf1E0p2SvubuUyRdUJm3Re4+393nuvvcmS8+dsSKBQAAAABgNLmPz6+xJqvzouDuP3X3ayW5u9+ggW9+Kam55tUBAAAAAIAJL6vzosfMjjezN0lyM3uDJJnZ0ZJKtS4OAAAAAAAg61Wp79bAYyNlSSdIeo+ZXSPpaUnn1LY0AAAAAACAjM4Ld79XA50Wm7y/8iUze4cGxsEAAAAAAGBcGovjQ4xH2/Kq1ItHrAoAAAAAAIBhVL3zwszuG26WpFkjXw4AAAAAAMDmzKvcA2NmyzXw2MiaobMk3enuu2Q1cOAuhyTdZOMqhzO5XCGc6eoZ+tG2jpmFM7MP+odw5t3f+ttwJpdQmyR9dv7T4UzTLb8MZ3pf/YpwRpK0V/wFN+3fezic6Tr7gHBGkvzuznimLX7z066vbQtnJKmYMMTusju6w5nrP5T2euSjdzsynGlsaAln+orxzyRJ/cXecObixdeEMy9sT+sXPuPAN4UzpXJ/OFMup43VbBbf1nc++9J4Qw1px79lX7swnMknnHOuuu9b4YwkfeDQd4UzxVJfONNYiO9TkjT5DR8IZ8qzm8KZSbc8EM5I0gP3fDWc2ePCfw9n5r/70HBGki5/9MFw5tGf98Qb6o9fkp16+uR4O5KuPfHKcOaf7vhYOPPFK5aGM5LkjfFjUn5V/JhZmhU/TkhSw5L4/rvmF/FtNvWYPn16/Fpp5ar4/ptyvS1J6zqfS2grvk00FtJevvjV+68NZz55+7PhzCXHZ/6qtkX/sM9rwpkVXWvSVtYY8Yqf3TguHxz51QlvHFPrLWvAzlsktbv74qEzzGxBLQoCAAAAAAAYLGvAzrOqzDt95MsBAAAAAKB+MGBnfdiWATsBAAAAAABqjs4LAAAAAABQ1+i8AAAAAAAAdS1rwE4AAAAAACYsxryoD9x5AQAAAAAA6lrVzgszazezS8zsATNbZ2YrzOwuM3t7Rm6emXWYWcearpUjWjAAAAAAAJhYsu68+K6kxySdIOliSf8u6R8kHWtmlw0Xcvf57j7X3edOa91hxIoFAAAAAAATT1bnxWx3v8bdl7r7FyS93t3/Kukdkt5Y+/IAAAAAANiOfJx+jTFZnRcbzezlkmRmr5e0WpLcvSzJalwbAAAAAABA5ttG3i3pP81sP0kPSHqnJJnZjpKuqnFtAAAAAAAA1Tsv3P0+SYdvYfoKM9tQs6oAAAAAAAAqsu68qOZiSd8cqUIAAAAAAKg3PgbHhxiPqnZemNl9w82SNGvkywEAAAAAANhc1p0XszTwmtQ1Q6abpDu3poHX/eITCWVJjRYfD3R1sRzOzJ3UFs5I0oZiMZz5zp3d4cxFR34gnPHErsHJZ30knNn7G68LZx6+am04I0nl9fH1q4++MBwpfP25eDuSeuZMDmesN/6Zlp9zXTgjSflCaziTO+aYcObo3Y4MZyTp10vvCmd++9z94Uwhlw9nJOnwGS8IZ0550VvDmSXL7w1nJOnyB74fzrxi1ovDmT+vfTyckaSuUl84c/m3nw1nrDft+HfHkq06pW2zV+z+8qTce+/693Bmn5ZJ4cyS3o3hjCR976b4k6S5J+PbRPe5h4QzknTzcXeEM+d/6p5w5jWzjw1nJOmAQ94dzuT33yOc8cb4tdXVx1wUzkjS+37z6XDm44e9J5yZ/uGLwxlJSaPslxKWn/rSjkn9R8b331M+Fl8Wjbm08ffvWV0KZ149PX7+zSf8PiBJfzt1t3CmMV8IZx7bmHbN+P5Dzg5nZh7/oXDm3A9fGM5I0s1P/TopB9RaVufFLZLa3X3x0BlmtqAWBQEAAAAAAAyWNWDnWVXmnT7y5QAAAAAAAGxuWwbsBAAAAABgXGPAzvqQ294FAAAAAAAAVEPnBQAAAAAAqGt0XgAAAAAAgLpWdcwLM5si6WOS3iBppgZeLPWcpB9J+oy7r61xfQAAAAAAbDeMeVEfsu68uF7SGknHuPt0d58h6djKtOuHC5nZPDPrMLOOxdf/fOSqBQAAAAAAE05W58Vsd7/c3ZdtmuDuy9z9ckl7Dhdy9/nuPtfd58558/EjVSsAAAAAAJiAsjovnjSzj5jZrE0TzGyWmX1U0pLalgYAAAAAAJDdeXGqpBmSfm1ma8xstaQFkqZLenONawMAAAAAYPvycfo1xlQdsNPd15jZNyXdLukud+/cNM/MTpR0W43rAwAAAAAAE1zVOy/M7HwNvFnkXEn3m9nJg2ZfVsvCAAAAAAAApIw7LySdI+kwd+80s9mSbjCz2e5+pSSreXUAAAAAAGDCy+q8yG16VMTdnzCzYzTQgbGn6LwAAAAAAIxzXt7eFUDK7rxYbmZz3H2xJFXuwHitpKslHbw1DTRaWh9HPiHWkjX86Ba05QrxkKTmxqxF93wNrT3hzKRJe4QzPd0rwxlJksdHbelPGOilNCO+7CSpcUlvONP5bPxI09bVHc5IknW3JYTiG3pj26zsH9pSUw0t4UxvLqG+hHYk6bfP3R/O/O3MF4UzT2x4OpyRpD+u/mtSLmqHKfF9XpKmNDSFMynLvDWfdszcp33neKh5eTjilnZ18ZsVD4Qz5YRj5qS2meGMJDXm4ie4Q6bvF878TeLV2feKv4+HEs7zxXVp9aWsK29LuKhIVO5eFc54w7BvrB9RjYX2pNy6UjGcaWpMaKs3bZuwznjOd2+Mt7OkL5xJtboY/0wp186S1BJfFOorx/fD7nIp3pCknMU/WDGhrf7E+hoLCdeMCdfcSe1I6iv3J+WAWsvas8+QtGzwBHcvuvsZko6qWVUAAAAAAAAVWW8bWVplXsKfWQAAAAAAAGJG755IAAAAAACABGmDDwAAAAAAMAEkDJ2EGuDOCwAAAAAAUNfovAAAAAAAAHWNzgsAAAAAAFDXkjsvzOynVebNM7MOM+u45/qfpzYBAAAAAMD25T4+v8aYqgN2mtmhw82SNGe4nLvPlzRfkv7lzzeNvaUCAAAAAADqRtbbRhZJ+rUGOiuGmjri1QAAAAAAAAyR1XnxZ0nvcve/Dp1hZktqUxIAAAAAAMD/yeq8+KSGHxfjvJEtBQAAAACA+jIGh4cYl6oO2OnuN0gyMzvOzNqHzO6pXVkAAAAAAAADqnZemNn5kn6kgbss7jezkwfNvqyWhQEAAAAAAEjZj42cI+kwd+80s9mSbjCz2e5+pbY8iCcAAAAAAMCIyuq8yLl7pyS5+xNmdowGOjD2FJ0XAAAAAIDxjjEv6kJW58VyM5vj7oslqXIHxmslXS3p4K1p4OhpOycVVshllfZ86/u7wpn9J+8RzkhS0YvhTKn7j/FMsTuc6e3bEM5IUnPvKO2Vqc2Uy+FIvi3ex9Y/ZejwLlvHC1Wfwtoi21iKt1OOb3tSYm9jQqgvYZuVpEIuH848seHpcGb2pF3DGUnqXPNoOLN0+X3hzOS2HcMZSTp46t7hzD1rHglnmhKOzZLU2tASDxXjBwvrjh8nJKktVwhn1hZ7w5liMW24qKkN8fqWblwezqzt3xjOSJJKCeuqJ+GY3h4/zkpSY8L6TVEs9iXlLKE+S1jmnnBQL5bSttlGSzj/Jpw/Uvf5pNH3mhLO8/1p9XnC+m1M2z2STGuMZxpz8W2iz9P+Vtqcbwpnyko4JlnaQl+74ZlwZkrC8lvb+Ww4I0nTm6Yk5YBay9rjzpC0bPAEdy+6+xmSjqpZVQAAAAAAABVV/4Tm7kurzPv9yJcDAAAAAACwuVG8wQwAAAAAACAu7eFlAAAAAAAmgJRhcjDyuPMCAAAAAADUNTovAAAAAABAXavaeWFmk83sX83s22Z2+pB5X65taQAAAAAAANl3XnxTkkn6b0mnmdl/m9mmFycfOVzIzOaZWYeZdfzk2zeNTKUAAAAAAIw2H6dfY0zWgJ37uPvfV76/ycwulPQrM3t9tZC7z5c0X5J+sWzhGFwsAAAAAACgXmR1XjSZWc7dy5Lk7pea2dOSfiOpvebVAQAAAACACS/rsZEfS3rF4Anufo2kD0nqq1FNAAAAAAAA/6vqnRfu/hEzO8DMjpO00N07K9NvM7PzR6VCAAAAAAC2E2cghLqQ9baR8yT9SNJ5ku43s5MHzb60loUBAAAAAABI2WNezJN0mLt3mtlsSTeY2Wx3v1IDbyEBAAAAAACoqazOi9ygR0WeMLNjNNCBsafovAAAAAAAAKMgq/NiuZnNcffFklS5A+O1kq6WdPDWNPCH9cuTCmvMZY0l+nzrisVwpjjwIpWwDcXecCalqQ0bnwlnSqX4cpAkNcX7o3IJXVj5NWn1Fac2hjMtk+IFlnr7wxlJUiFhYTTFt/P+7lXxdiTl+rvCGSsdGM70J+wbknT4jBeEM39c/ddwpnPNo+GMJL1o2j7hzE4z9g9nnlp+XzgjSfcmfK6UZf5U57PhjCQ93vl0PDSKz5ceMn3fcKac8ADsJYn774aE89v6hH1+ee/GcEZS0vHPG+OZhqZwRJKUs3hb1p12fZDCGtvioZTysq76tqBY7EloSGrL58OZ/oS2fEYhnBkIxvdfWxofq94L8fO8JCkf32Z3KsRXcMr1tiT9z5r4sti3Jb5NTG9IW7/lhB2kweL1tTfEr00lqbHQEs5Ywjbb2NAczkhSsZz4u8R4NnqnBFSRdcQ6Q9KywRPcvejuZ0g6qmZVAQAAAAAAVGS9bWRplXm/H/lyAAAAAAAANpd4LxsAAAAAAMDooPMCAAAAAADUtYShmwAAAAAAmCBGcRBxDI87LwAAAAAAQF2r2nlhZjuZ2VfM7Cozm2FmnzSzP5nZ9Wa282gVCQAAAAAAJq6sOy+ukfSgpCWS7pDULenVkn4r6avDhcxsnpl1mFnHwut+NkKlAgAAAACAiShrzItZ7v4lSTKz97r75ZXpXzKzs4YLuft8SfMl6fKHb+YJIQAAAADAmOTOr7T1IOvOi8HzvzVkXn6EawEAAAAAAHierM6LH5lZuyS5+8c3TTSzfSU9VMvCAAAAAAAApIzOC3f/hKTdzOy4TZ0YlemPSPrPWhcHAAAAAACQ9baR8yT9SNJ5ku43s5MHzb6sloUBAAAAALDd+Tj9GmOyBuycJ+kwd+80s9mSbjCz2e5+pSSreXUAAAAAAGDCy+q8yLl7pyS5+xNmdowGOjD2FJ0XAAAAAABgFFi1176Y2a8kfdDdFw+a1iDpaklvdffMN468YKcXJd2QUiz1hTMtzVPDmRVrHgtnJKmpsTWc2f01nwhn9vzH6eHMoZML4YwkXfeDDeFM6w9/F850n/j/whlJ8h3jn6vt58vCmY3HzgpnJMmWx7dZn5zVf/h8M17eHM5IUk93PLNxYTx0zhnxbVaSvnLcZ5JyUUuX35eU22nG/uHMzQ/9MJy5bdnicEaSLpnzjnBmpxkHhDOprwpbs/6pcGbnN10UzpRnph3/ev7rqnCmKeGcc8ot7wlnJOmG134lnOnrXRfONDXPCGckSa97UzjiezaFM62/WhXOSNIzd34pnJl2xsfCmQ+ct2s4I0n/8Yf4uur7S0+8IYv/3ekVr0875/zmlO+GM2+++e3hzPe+G192kmSl+LGs8a/xc2LvwW3hjCTlliZcB//hnnDGy8VwRpK61z0ZzjS37xLOWD7tmL70iV+EM4WG+LY+efKe4YwkfXrBheHMhd97Ipz517fuFc5I0tkHnRbOPLHq8XH9h+0jvnPDGHzIItvCt50yptZb1m9OZ0ja7Kjm7kVJZ5jZ12pWFQAAAAAA9WBcdl2MPVU7L9x9aZV5vx/5cgAAAAAAADZX9W0jAAAAAAAA2xudFwAAAAAAoK7ReQEAAAAAAOpa+FUHZjbT3Z+rRTEAAAAAANSTxJetYYRV7bwws6HvPDRJd5vZIRp4zerqmlUGAAAAAACg7DsvVkoa+iLnXSXdo4EXxuy9pZCZzZM0T5JmTtpZU1uH9oEAAAAAAABsnawxLz4s6SFJr3f3vdx9L0lLK99vseNCktx9vrvPdfe5dFwAAAAAAIBtUfXOC3f/vJldJ+kKM1si6SIN3HEBAAAAAMD4x2/AdSHzbSPuvtTd3yRpgaTbJbXWuigAAAAAAIBNMjsvzOwAMztO0q8kHSvplZXpJ9a4NgAAAAAAgOqdF2Z2vqQfSTpP0v2Sjnf3+yuzL6txbQAAAAAAAJlvGzlH0mHu3mlmsyXdYGaz3f1KDbw2FQAAAACA8YsxL+pC1mMjOXfvlCR3f0LSMZJOMrMviM4LAAAAAADGLTM70cweMrNHzOyCLcz/oJk9aGb3mdkvzWzPQfNKZra48nXzttaSdefFcjOb4+6LJalyB8ZrJV0t6eCtaaC5aXJSYaVyMZwpNLSEM20tU8MZSWoqtIUzVox32b1p1oxwpimXtVq3zLrXhTNeLsUzMwvhjCSpFF9+ufUrwhmbvks4I0l6Jh6x7vjy23VqWtdv96R4f+NfE7ooX9g+Kx6StGT5veHMDlP2CGcmt+0YzkjSU8vvC2duW7Y4nDlxpznhjCR9vnlqOJOyzNsS2pEks1Hq7044zkrS0yseCGca8o3hzJFTPx3OSNJ1xb5wZmP3qqS2UjT3xpe795bDmVx3VzgjSes3xs8FU9vy4czs1rTji1n8/KuE+lL2j4Na49c7knTbxvhJ8QWt08KZ/NL4upWU9Ce4vr2a481sjJ/nJSnXE98/Nqx8MJxxT6uvuXVmOLNx3ePhTLncH85IUldvwj6VkCl7/PcVSSorvn7VkjlU4fPb8cRrxt4NSTmMP2aWl3SVpFdJWippkZnd7O6DDzh/lDTX3bvM7D2SPivp1Mq8bnefM1L1ZO0FZ0haNniCuxfd/QxJR41UEQAAAAAAoK4cLukRd3/M3fskfV/SyYN/wN3vcPdNf124S9JutSqm6p/o3X1plXm/H/lyAAAAAACoI4l3sdQ7M5snad6gSfPdff6gf+8qacmgfy+VdESV/+VZkn466N/NZtYhqSjpM+5+07bUm/Z8AQAAAAAAGLMqHRXzM39wK5jZ2yTNlXT0oMl7uvvTZra3pF+Z2Z/c/dHUNuIPTwEAAAAAgPHuaUm7D/r3bpVpmzGzV0q6UNLr3b1303R3f7ry38ckLZB0yLYUQ+cFAAAAAAAYapGk/cxsLzNrlHSapM3eGmJmh0j6mgY6Lp4bNH2amTVVvt9B0sskxUcWHoTHRgAAAAAAwGbcvWhm50r6maS8pKvd/QEzu0RSh7vfLOnfJLVL+kHl7XJPufvrJb1Q0tfMrKyBmyY+M+QtJWF0XgAAAAAAMJyEt9uOF+5+q6Rbh0z7xKDvXzlM7k5JB49kLVUfGzGzEwd9P8XMvmFm95nZ98xsVpXcPDPrMLOOVZ3LR7JeAAAAAAAwwWSNeXHZoO8/L+lZSa/TwLMvXxsu5O7z3X2uu8+d0T5sHwcAAAAAAECmyGMjc919TuX7K8zszBrUAwAAAAAAsJmszouZZvZBSSZpspmZu3tlHm8qAQAAAACMb579I6i9rA6Ir0uapIHRQ/9L0g6SZGY7SVpc08oAAAAAAACUceeFu19sZgdI2lXSQnfvrExfZmbfG40CAQAAAADAxJb1tpHzJP1I0nmS7jezkwfNvmzLKQAAAAAAgJGTNebFPEmHuXunmc2WdIOZzXb3KzUwDgYAAAAAAOOWM+ZFXTCvsibM7AF3P2jQv9sl3SDpQUmvGPT2kWH9fsXipFXdkMuHM13FnnBmj/adw5lUb/n+/4QzxUu/Gs50dj0bzkjS1LddEM7s8eb2cGbJtzeEM5LUuDy+fkun7hBv6Oa18Yyk/v1awhlbVwxnWn9zTzgjSbmm+LrqfOkLwpkV3/hkOCNJH190VTgzpaEpnDl46t7hjCTdu+bRcOb9L3pLONPWPDWckaTbn7gjnPnV8vvCmR0aW8MZSdp/0u7hzBlfXxjO2Kr+cEaSzp0Xf633qmJfODP/qAvDGUk669efDmf2aZkczqxNOI9K0pe/syqcyT8dX3527KRwRpL+/ZUHhDPvu+KP4cySKz8UzkjSCw95TzjTvc8e8YYShlrv/NnX4iFJb/llfFv/5t9+NJyZ9q60fSpl8D3fsRDO2JLeeEOSfPf4+e3o4+L15S3tb5Er+8rhzC5N8Wv7UuIoiSfP3DecKSf8dvqXzrRr7kvmvjecmfV3Hw9nlt14STgjST/46y3hzEumHzSu/7D9kq//YFx2Xyw6501jar1lncaWm9mcTf+ojHnxWg0M3HlwDesCAAAAAACQlN15cYakZYMnuHvR3c+QdFTNqgIAAAAAAKjIetvI0irzfj/y5QAAAAAAUEfG5UMjY0/C048AAAAAAACjh84LAAAAAABQ1+i8AAAAAAAAdS3ceWFmM2pRCAAAAAAAwJZU7bwws8+Y2Q6V7+ea2WOSFprZk2Z29KhUCAAAAADA9uI+Pr/GmKw7L17j7isr3/+bpFPdfV9Jr5L0+eFCZjbPzDrMrONH3/rvESoVAAAAAABMRFVflSqpwcwa3L0oqcXdF0mSuz9sZk3Dhdx9vqT5kvT7FYvHXpcOAAAAAACoG1l3XnxZ0q1m9gpJt5nZlWZ2tJldLGlxzasDAAAAAAATXtU7L9z9S2b2J0nvkbR/5ef3k3STpE/XvDoAAAAAALYnniWoC1mPjUjSMg08ArLQ3Ts3TTSzEyXdVqvCAAAAAAAApOy3jZwv6UeSzpN0v5mdPGj2ZbUsDAAAAAAAQMq+8+IcSYe5e6eZzZZ0g5nNdvcrJVnNqwMAAAAAABNeVudFbtOjIu7+hJkdo4EOjD1F5wUAAAAAYLxjzIu6kNV5sdzM5rj7Ykmq3IHxWklXSzp4axq4ecXjSYU1WrxvZHWxHM7M7V4dzkjShmIxHirEP1N3z8pwJmdbM5TJFjRnvXzm+doSmsp1leIhSX2zmsOZtvb4Mu/f2B/OSFK/WuKhhGXet/HZeDuS8n2t4Yz17RfOlMppy+8Vs14czvz2ufvDmXvWPBLOSNLhM14Qzuw044BwZsnye8MZSfrV8vvCmZRl/ue1acf0B9Y9EQ/1xo/pKsT3KUl62Y4HJuWivtizLilX8vhVU8njy29tMW3/VXP8WOsJ58TUv5qUE5aFbYifq8zStj8lXPN4Q0KmMZ5JPaZPyccvEMrl+DL39nw4MxCMR2xFwrLIJW61Ceu3JRff/hoT63u4O74AZ7fE28on7lN9pfi6aswXwpnmXNo1d0O+MZzJ98T3j5R2JKmYsC8CoyHriHCGBgbs/F/uXnT3MyQdVbOqAAAAAAAAKrJelbq0yrzfj3w5AAAAAAAAm0t8vgAAAAAAgAmAMS/qQuLDmQAAAAAAAKODzgsAAAAAAFDX6LwAAAAAAAB1rWrnhZndY2YfN7N9RqsgAAAAAACAwbLuvJgmaaqkO8zsbjP7gJntkvU/NbN5ZtZhZh2Lr//5SNQJAAAAAMDoK/v4/Bpjsjov1rj7P7n7HpI+JGk/SfeY2R1mNm+4kLvPd/e57j53zpuPH8l6AQAAAADABLPVY164+2/d/b2SdpV0uaSX1qwqAAAAAACAioaM+Q8PneDuJUm3Vb4AAAAAAABqquqdF+5+mpkdYGbHmVn74HlmdmJtSwMAAAAAYDvzcfo1xmS9beQ8ST+SdJ6k+83s5EGzL6tlYQAAAAAAAFL2YyPzJB3m7p1mNlvSDWY2292vlGQ1rw4AAAAAAEx4WZ0XOXfvlCR3f8LMjtFAB8aeovMCAAAAAACMgqzOi+VmNsfdF0tS5Q6M10q6WtLBW9PA7OampMIabatfhPK/phT7w5nphZZwRpIm5UvxULk7HMnn48tvXeez4YwkTfb4g097tMTX00P5tH6vhrXx9du9Pv6ZWlY8E85IUk9pUjyU8KxZY9useEiSFdrCmd5CfF2Vywn7hqQ/r308nGnNF8KZplzWYW/LnkrYrzxhn2prnhrOSNIOja3hTMoyf+HUvcIZSXp0/ZJ4qDl+fFF3MZ6R9NC6J8OZfo9v665yOCNJ3eV4rpDLhzOT82n7h9J2+7BCa9r5o70Q3z+8Kb799fR2hjOSpITjkpUTTiDx06h6+tbHQ5KmF+LXL919G+INtSYcJySpP778vDG+/SWtJ0lqiLc1d/L0cKZg8eOEJP25c3k48+L2aeFM6jl7atPkcCZn8WW+d9vMcEaSCg3x3z/KjfFtvbEhfuyTpMZc/Ppq3BuD40OMR1l7wRmSlg2e4O5Fdz9D0lE1qwoAAAAAAKCianemuy+tMu/3I18OAAAAAADA5hLvtQMAAAAAABgdiQ+3AgAAAAAwATDmRV3gzgsAAAAAAFDX6LwAAAAAAAB1rWrnhZnNNbM7zOw7Zra7md1uZuvMbJGZHTJaRQIAAAAAgIkr686LL0v6rKSfSLpT0tfcfYqkCyrztsjM5plZh5l1/O7an45YsQAAAAAAYOLJ6rwouPtP3f1aSe7uN2jgm19Kah4u5O7z3X2uu899+VtOGsFyAQAAAAAYRe7j82uMyeq86DGz483sTZLczN4gSWZ2tKRSrYsDAAAAAADIelXquzXw2EhZ0gmS3mNm10h6WtI5tS0NAAAAAAAg484Ld79X0j9K+pykpe7+fnef6u4HSZo8CvUBAAAAAIAJLuttI+dL+qGk8yTdb2YnD5p9WS0LAwAAAABgu/Nx+jXGZD02co6kue7eaWazJd1gZrPd/UpJVvPqAAAAAADAhJfVeZFz905JcvcnzOwYDXRg7Ck6LwAAAAAAwCjI6rxYbmZz3H2xJFXuwHitpKslHbw1DezVMjWpsFzmi1Ceb3qpN5zZd9Ku4YwklRNeLWMNq8KZQkNLONNUaA1nJEnFeOSp7nI4423xdStJubV94Uw54Xao/h13iYdSleIFeim+HCTJ8k3xUMLyM0tbv10Jn2uf9p3DmdaEfUqSHu98OpxZs/6pcMYsrV94/0m7hzMPrHsinHl0/ZJwRpL2mRyvT/Z4PJNLW3695fgBcEMxfs5pKrSFM5K0S2N8/92jdWY4s0NjTzgjSSqtTsjEDzB960fxHtfG+LaUuv96d8LyU/z4l3JMby5Miockre6P7x/NjQn7x6qEixdJ1pdw/bJzY7yhJ+PLQZJUjK+shevj15mNidvstIRF8ZeNa8OZvsRXOe6acPxLubZf0rUynJGk7t514cyUhGNmV+/acEaSGvOFpBxQa1mdF2doyK+07l6UdIaZfa1mVQEAAAAAUA/G4PgQ41HVzgt3X1pl3u9HvhwAAAAAAIDNpd3fDQAAAAAAMErovAAAAAAAAHUta8wLAAAAAAAmLsa8qAvceQEAAAAAAOoanRcAAAAAAKCuVe28MLN2M7vEzB4ws3VmtsLM7jKzt2fk5plZh5l13PqdH41owQAAAAAAYGLJGvPiu5J+KOkESW+W1Cbp+5I+bmb7u/s/bynk7vMlzZek2569kyeEAAAAAABjk/MrbT3Iemxktrtf4+5L3f0Lkl7v7n+V9A5Jb6x9eQAAAAAAYKLL6rzYaGYvlyQze72k1ZLk7mVJVuPaAAAAAAAAMh8beY+kr5vZfpIekHSWJJnZjpKuqnFtAAAAAAAA1Tsv3P1eMztT0q6S7nL3zsr0FWb28GgUCAAAAAAAJrast42cr4EBO8+VdL+ZnTxo9mW1LAwAAAAAgO2uPE6/xpisx0bOkTTX3TvNbLakG8xstrtfKca8AAAAAAAAo8C8ymtfzOwBdz9o0L/bJd0g6UFJr3D3OVkNvOSz16a9V6YhoW+kJ6H7qCVrzNJh9MY/lq3oD2fy64rhTNPyjeGMJHW9aGo447MK4Uz7DfeGM5KkyTPDkY2H7RjOeHs+nJEkWxtfV0ldgKlvaupPCKbsHon1+bSsvtQtaE4osJhaYDySf6wnra0Epf1b4qHehGNmyjKXkrb16991VDhz6qW/jDckySclbH+l+EbR8GjaNlHcsykemprwmVLOo5JsVfz8JkvYKMpp+6/v3BjOzH/HnHDm3RcvDGckace/nxTOdP7Tb+KZVQ+GM+0HvCackaSe03cLZxp+tDKc6dsz4diXqLC0N5zp37M5rbG+hOvMlPN8ovLO8eu/3LMJx4m0SzKVd43v88rFj0m2rhRvR5I64znfJf6ZcgnbrCSVZ8bX76KPnT6u/7Cd/DttnVv0kbeMqfWWdRW63MzmbPpHZcyL10raQdLBNawLAAAAAABAUvZjI2dI2uzPye5elHSGmX2tZlUBAAAAAFAPxuV9F2NP1ttGllaZ9/uRLwcAAAAAAGBziQ8vAwAAAAAAjA46LwAAAAAAQF1LGIocAAAAAIAJgjEv6gJ3XgAAAAAAgLpW9c4LM2uQdJakv5O0S2Xy05J+JOkb7p7wwmYAAAAAAICtl3XnxbclzZH0SUmvrnxdLOlvJH1nuJCZzTOzDjPrWLHwlyNTKQAAAAAAmJCyxrw4zN33HzJtqaS7zOzh4ULuPl/SfEl6yWev5QkhAAAAAMDY5PxKWw+y7rxYbWZvMrP//Tkzy5nZqZLW1LY0AAAAAACA7M6L0ySdImmZmT1cudtimaQ3VuYBAAAAAADUVNXHRtz9CTP7gqTPS3pU0gGSXirpQXd/fBTqAwAAAAAAE1zW20YuknRS5edul3S4pAWSLjCzQ9z90ppXCAAAAAAAJrSsATtP0cDbRpo08LjIbu6+3sw+J2mhJDovAAAAAADjF+N11oWsMS+K7l5y9y5Jj7r7ekly925J5ZpXBwAAAAAAJjzzKq99MbOFko519y4zy7l7uTJ9iqQ73P3QrAYO/9C30vqpLCGT0lJzSkNK6rrxpqy+ouezrlK8IUv7TN6aUF8xYaEn9lx6W7w+JSy+3Kr+eEhS49M94UzPQe3hjG1M+FCSVIhvF96css0m9ms2xtvyhP3Xukex3zVlW0/Zp6S0Y2YhYZ8qJ9aXSyiwGF9X1114XLwdSadefkdSLqw/cftLWFcp+0eylMNSwrY+6bdPJjQkdb58z3goYftTMR6RJCUcaz1h902RfEzPxyPeHg9ZT1p9nnDOsfXxFextCQtCSjpn55b2hTM+Pesm7BGUcv7IJx7HUmIp18+p58QUKefRUazv7k+9bRRPOqPvJZd9b1zee7Hon08fU+st64h1lLv3StKmjouKgqQza1YVAAAAAABARdbbRnqHmb5S0sqaVAQAAAAAQL0Yl/ddjD2jdNMhAAAAAABAGjovAAAAAABAXaPzAgAAAAAA1LVRHGIYAAAAAIAxhjEv6kLynRdmNn8kCwEAAAAAANiSqp0XZjZ9mK8Zkl5dJTfPzDrMrOO5++4Y8aIBAAAAAMDEkfXYyApJT0qyQdO88u+Zw4Xcfb6k+ZJ0+Ie+xU02AAAAAAAgWVbnxWOSjnP3p4bOMLMltSkJAAAAAIA64fw9vh5kjXnxRUnThpn32ZEtBQAAAAAA4Pmqdl64+1WSmszsJZJkZgea2QfN7NXu/qVRqRAAAAAAAExoVR8bMbOLJJ0kqcHMbpd0hKQ7JF1gZoe4+6WjUCMAAAAAAJjAssa8OEXSHElNkpZJ2s3d15vZ5yQtlETnBQAAAAAAqKmszouiu5ckdZnZo+6+XpLcvdvMyrUvDwAAAACA7YjffOtCVudFn5m1unuXpMM2TTSzKdrKVXjC2ZOTCmvJZ40l+nyr+4vhzGGTpoQzkrS22BvOXPP7rnBmw0fjN7f0l3rCGUmadvY/hzMv/Pu2cObhq9aGM5JUbolvE22vi29/fVdvCGckqefFk8IZ64kfCfM/+XE4I0kNje3hTN/Rx4Qzz37rX8IZSbpjyZ3hzG9WPBDOtOUK4YwkHTJ933Dm7w88NZx5OuEzSdIVf74hnHnZjgeGMw+tezKckaTecvz4fNl3nglnTr38jnBGkq776LHhTFexO5w5aXa8HUk6f+FV4cweTfHj81O9G8MZSbruh53hTG5ZXzjT/e4XhDOS9KVX7B/OnH/pPeHMkm9cEM5I0gGHvjec6dp3t3DGGy2cWf/DK8IZSTr/d/8azvzbEeeHMzM+eEk4I0nKxZeFt+bDGesshTOS5Hs2hTPHnBu/pm20+HKQpMe749cveyVcx+XTytMJO+ydFgx6bONzSbmLXvK+cGbmSR8JZ5bdGt8PJem7f74xKQfUWlbnxVHu3itJ7j74KFWQdGbNqgIAAAAAAKio2nmxqeNiC9NXSlpZk4oAAAAAAAAGybrzAgAAAACAicu3dwGQpPjDZwAAAAAAAKOIzgsAAAAAAFDX6LwAAAAAAAB1reqYF2aWl3S2pN0k3ebuvx807+Pu/uka1wcAAAAAwHZjjHlRF7LuvPiapKMlrZL072b2hUHz3jhcyMzmmVmHmXXcc/3PR6BMAAAAAAAwUWV1Xhzu7qe7+xclHSGp3cxuNLMmSTZcyN3nu/tcd5976JuPH8FyAQAAAADARJPVedG46Rt3L7r7PEn3SvqVpPZaFgYAAAAAACBljHkhqcPMTnT32zZNcPeLzexpSV+pbWkAAAAAAGxnzqAX9aDqnRfu/jZJq83sJZJkZgea2QclPePuhdEoEAAAAAAATGxZbxu5SNJJkhrM7HYNjHtxh6QLzOwQd790FGoEAAAAAAATWNZjI6dImiOpSdIySbu5+3oz+5ykhZLovAAAAAAAADWVNWBn0d1L7t4l6VF3Xy9J7t4tqVzz6gAAAAAAwISXdedFn5m1VjovDts00cymaCs7L1b2p/VxFErx3Ib++EAqK/p6whlJ6i6XwhlPWRQ27Btph9VYaEtoSFIu3lZ8KWyDhnh95YRlnusfxU+Vj3+mfENLWluW1Ve5BQmRfG70hsMpJwyetLbYO2ptNTVPDWca8o3ZP7QFq4p9Sbmofk/bPzakLPfS6A2O1VXsDmdaE/bFQr45nJGkdcX4ci81jeLgYgnHChXixz8vJrQjqa/UHw8lRHIpx9lUKU0lnHMaErfZjaX4Npt0/mhOXOYJxxfrTrioSNjOJSVdkzWmXDMmtCNJz62NZ/ZtjWdacmnrd2PCMb0l35TUVopCQ3y/soRttrEhYaFL6isnHADHO8brrAtZnRdHuXuvJLlv9qt3QdKZNasKAAAAAACgomrnxaaOiy1MXylpZU0qAgAAAAAAGGQU728EAAAAAACIy3psBAAAAACAiYsxL+oCd14AAAAAAIDnMbMTzewhM3vEzC7YwvwmM7uuMn+hmc0eNO9jlekPmdkJ21oLnRcAAAAAAGAzZpaXdJWkkyQdKOktZnbgkB87S9Iad99X0hWSLq9kD5R0mqSDJJ0o6cuV/1+yqp0XZtZqZh8xsw+bWbOZvd3Mbjazz5pZ+7Y0DAAAAAAA6tbhkh5x98fcvU/S9yWdPORnTpb0X5Xvb5B0nJlZZfr33b3X3R+X9Ejl/5cs686LayTNkrSXpJ9Imivp3ySZpK8MFzKzeWbWYWYdD97w822pDwAAAACA7cd9XH4N/r298jVvyCffVdKSQf9eWpm2xZ9x96KkdZJmbGU2JGvAzv3d/c2VnpNnJb3S3d3Mfifp3uFC7j5f0nxJes99NzK8CQAAAAAAdWTw7+1jwVaNeeHuLunWyn83/ZtOCQAAAAAAxqenJe0+6N+7VaZt8WfMrEHSFEmrtjIbktV50bFpbAt3f+emiWa2j6QN29IwAAAAAACoW4sk7Wdme5lZowYG4Lx5yM/cLOnMyvenSPpV5WaHmyWdVnkbyV6S9pN097YUU/WxEXc/28wONzN390WVEUNPlPSQpL/dloYBAAAAAKh7E/SZA3cvmtm5kn4mKS/pand/wMwukdTh7jdL+oakb5vZI5JWa6CDQ5Wfu17Sg5KKkt7n7qVtqadq54WZXaSB16I0mNntko6QdIekj0qaI+nSbWkcAAAAAADUJ3e/VdKtQ6Z9YtD3PZLeNEz2Uo1gn0HWgJ2naKCToknSMkm7uft6M/ucpIUjWQgAAAAAAMCWZI15UXT3krt3SXrU3ddLkrt3SyrXvDoAAAAAADDhWeUFIlueabZQ0rHu3mVmOXcvV6ZPkXSHux+a1cAhex2d9IRQuRx/HKZQaA1nOjcuC2ckqdDQEs5MPuaccOYDl+0TzqT67BeXZP/QEE2/uiOc6Xn7ieGMpK18N87m2q9bHM50vvWQeEOScg91x0MWj+x26qR4SNLGnnhm1Z3x0MVv3zPekKT3vOit4cyktpnhTLGYsCAkdXavCmfOu/sr4cyRU9Nef/3uOe/M/qEhunrWhTOe2G/dVGgLZ3Z4zYfDmdJOhXBGkpZ99cJwppBvDmd+8eSCcEaS3njQW8KZnt614UxL8w7hjCQ1Hve2cKa0W2M4M+m38fOUJD206N/DmV3P+2w4c/l5LwhnJOmff/NUOFN8thhvqBy/JDvvDdPj7Ui64tj4zbmX33l5OPMvn/pLOCNJaoifgL2QkJmUD2ckqfBY/FxVXHhTOOOesB1JyuebwpmUa3sv94czkvTMc/eFM7lcfF21NU8LZyTpw3fGjy9fvWltOPPev0ur7xOHnB3OLFmzJOGqduw4/J+/PS5Hvbj7sn8YU+st67GRo9y9V5I2dVxUFPR/I4oCAAAAADA+jcuui7En620jvcNMXylpZU0qAgAAAAAAGCThRnwAAAAAAIDRQ+cFAAAAAACoa1ljXgAAAAAAMHHxns26wJ0XAAAAAACgrtF5AQAAAAAA6lq488LMHt6Kn5lnZh1m1rFyw7NplQEAAAAAAChjzAsz26D/e6utVf7bumm6u0/eUs7d50uaL0mH7HU0b8UFAAAAAIxNzq+09SDrzotvSrpJ0n7uPsndJ0l6qvL9FjsuAAAAAAAARlLVzgt3P1/SlZKuNbPzzSyn/7sTAwAAAAAAoOYyx7xw9z9IemXln7+W1FzTigAAAAAAAAapOuaFJJnZ4RoY3+LfzeyPko41s1e7+621Lw8AAAAAgO2IZw/qQtaAnRdJOklSg5ndLulwSQskXWBmh7j7pbUvEQAAAAAATGRZd16cImmOpCZJyyTt5u7rzexzkhZKovMCAAAAAADUVNaYF0V3L7l7l6RH3X29JLl7t6RyzasDAAAAAAATnnmVd9aa2UJJx7p7l5nl3L1cmT5F0h3ufmhWAx944MakJ4RKo/Rc0U6NmcN+bFGjWThz47194YxdfEM4Uyr2hjOSVP77N4Yz7X/bGs50/q4rnJGk9t88Es50v+/gcCZ/46pwRpJ6D2gLZ6wY39Db/vBcODPQWHyb7Zs+KZxZ+YsvhjOS9M7fXBbONOYyxxx+nqkNhXBGkjYUi+HMt1/9H+FMqRg/TkjS6T/7x3hbCe8s7y6n9Vvv0tgUznz926vDGUvsVn/z2+Jv/15XLIUzt7z6inBGkm584Npw5qZn7glnUtfvD38SP67nnoyfq/zQ+HFWks5+eTz3n19ZEc6s+/ZnwxlJ2mn3o8KZ4gGZl2DPUy7Ej5m5RbeHM5K013+9KZx5+LRvhDOFuW8IZyQp39MfzhTfOiucsf+OH8ckqe9vp4QzexwSv6bN58MRSdK6znjmwJnxzJKN8YwknbRj/Po05Zy4sRw/D0jS1cd+KpzZ4UWnhjMr7v9+OCNJF/7+X8OZt+xxXPxCcww5/MPfGpejXtz9b2eMqfWWdZQ7yt17JWlTx0VFQdKZNasKAAAAAIB6MC67Lsaeqp0XmzoutjB9paSVNakIAAAAAABgkPj9gwAAAAAAAKOIzgsAAAAAAFDX0karBAAAAABgImDMi7rAnRcAAAAAAKCuVe28MLMXD/q+YGYfN7ObzewyM4u/gwgAAAAAACAo686LawZ9/xlJ+0r6vKQWSV8dLmRm88ysw8w6/vSDn29zkQAAAAAAYOLKGvPCBn1/nKSXuHu/mf1G0r3Dhdx9vqT5kvSBB27kCSEAAAAAwJhkzq+09SCr82KKmb1RA50YTe7eL0nu7mbGGgQAAAAAADWX1Xnxa0mvq3x/l5nNcvflZraTpJW1LQ0AAAAAACCj88Ld32FmR0gqu/siMzvQzN4q6S/uftzolAgAAAAAACayqp0XZnaRpJMkNZjZ7ZIOl7RA0gVmdoi7X1r7EgEAAAAA2E4YMKEuZD02coqkOZKaJC2TtJu7rzezz0laKInOCwAAAAAAUFNZr0otunvJ3bskPeru6yXJ3bsllWteHQAAAAAAmPCy7rzoM7PWSufFYZsmmtkUbWXnxZR8Vv/IljXm4rnV/cVw5qC2qeGMJHWV+hNSffFE79pwZuPG5eGMJLUnvAJo9x3j7fy5N63fq3f33cKZUnf8MzVt7A1nJKmv2JqUiyou+1NSLtfQEs70H3RkOFMsxbdzSdqnZVI4c8j0/cKZpYn7x/r+rnCmr3ddOLOxe1U4I0n7tEwOZ0oe3xcLuXw4I0l7tM4MZ74+dX04412lcEaS9mhqC2dKTfHjyw0Jx3RJuumZe8KZN+xyaDizvq8znJGkH/b+IR5KOBV4b9p9u38zJX7+UFN8X1zftSLejqRdEo7PxSlZl3BbYBaObFj7aLwdSYdNbgxnFq1/MpyZ/KL4vitJ1hPfAH15/PhiezWHM5KkYnxbn5lwGdKcdkjXrgltteTi29/ubWn7/Iun7B7OFMvx9fuXzmfDGUkqleO/R/TMmhLOlO9N+X1F2q15WlIOqLWsM99R7t4rSe6bXeUWJJ1Zs6oAAAAAAAAqst42ssU/Qbv7SvGqVAAAAADAeMeAnXUh7ZkOAAAAAACAUULnBQAAAAAAqGt0XgAAAAAAgLqWMFQ1AAAAAAATRNrLEjHCqt55YWbnmtkOle/3NbPfmNlaM1toZgePTokAAAAAAGAiy3ps5D2VN4tI0pWSrnD3qZI+Kumrw4XMbJ6ZdZhZxx+u//nIVAoAAAAAACakrM6LwY+VzHT3H0qSuy+QNGm4kLvPd/e57j73sDcfv+1VAgAAAACACSur8+IGM7vGzPaW9EMz+0cz29PM3iHpqVGoDwAAAACA7cfH6dcYU3XATne/0MzeLulaSftIapI0T9JNkt5a6+IAAAAAAAC25m0jD0o6190XmdlBkk6U9Gd3X1fb0gAAAAAAADI6L8zsIkknSWows9slHS5pgaQLzOwQd7+09iUCAAAAAICJLOvOi1MkzdHA4yLLJO3m7uvN7HOSFkqi8wIAAAAAMH75GBwgYhzKGrCz6O4ld++S9Ki7r5ckd++WVK55dQAAAAAAYMLLuvOiz8xaK50Xh22aaGZTtJWdF52ltD6OUkKulNAh9kxvZzwkqS23NcOFbK5cirfTUGgPZ1pbEhpK1Nk3ak3JignbUn98o7D+3ng7klRO2ABzFo4UJu8Zb0eSCs3hiCXsVI2FlnBGkpb0bgxn/sbj28Ta/ng7krQ8ob6m5hlJbaVYW+xJyPSHM5Pz8WOfJO3QGK9PPaPXR/5UwvpN0dK8Q1KuuxxfFuv74ue3yY3xc06yrD+fbEniH77W9SWs35TjX0Pa8a9c7E4IJTSUi3+m1pYdExqSnuqNXyC0tiQcMxPO85KkrtG5plBfYn0NCdcHCftUPh6RJN23PJ45Yuf4Z8on7vTLuleHMy35xnCmnPjX+EJDazjT0FWMt5N4TbYh5ZgEjIKsq9Cj3L1Xktw3+y2hIOnMmlUFAAAAAABQkfWq1C3+CdrdV0paWZOKAAAAAAAABkm7/xcAAAAAgImA8TrrQsoTpwAAAAAAAKOGzgsAAAAAAFDX6LwAAAAAAAB1rWrnhZndaGZvM7NRfHcaAAAAAAB1wsfp1xiTdefFEZLeIOkpM7vezP7OzDJfgmxm88ysw8w67vvBz0eiTgAAAAAAMEFldV485+6nSJot6ceSzpH0tJl908yOHy7k7vPdfa67z33xm4b9MQAAAAAAgExZnRcuSe6+3t2/7e6vlnSApIWSLqh1cQAAAAAAAA0Z8zuHTnD3VZK+WvkCAAAAAGDcsjE4PsR4VLXzwt2PMrPDB771RWZ2oKQTJf3F3W8dlQoBAAAAAMCEVrXzwswuknSSpAYzu10DA3jeIekCMzvE3S8dhRoBAAAAAMAElvXYyCmS5khqkrRM0m7uvt7MPqeBcS/ovAAAAAAAADWV1XlRdPeSpC4ze9Td10uSu3ebWbn25QEAAAAAsB2VGfSiHpj78CvCzBZKOtbdu8ws5+7lyvQpku5w90OzGnjJ5demremUDSRv8Ux3Yh9MId6WdcXbyi3vD2fKO2T1SW3Z1z96RDhz9pWLwhnrLIUzkqTG+DJvOqItnOm7bX04I0lqjtc3/xMvDWfm/cv/hDOS5AnLL4Ul7lPlvZvioWJCQ6XEk0/KPv9cfP+13sRD5qxCPJSwzSpx901Z7rY2voJ9ctrxL+X4kvm+ri3IP9QTD0kqHdgSDyVuSymuP//ocOb+NY+GM5d94q/hjCQV948vv9yzffGGEi8pvClh+0s5pDckhPoTt6OEfcrWJyzAhEOfpKTzh7fFd/rUc+IXP35IOHP+VX+KN5Ry7SzJeuOfy5sSDpqpUrb1lNNH4v6RS7g+8MaE7a8v8ZpsVmM4s+iCt4zOheZ2cuS7vjkuey/u+to7xtR6y9pNj3L3Xkna1HFRUZB0Zs2qAgAAAAAAqMh620jvMNNXSlpZk4oAAAAAAAAGGcX7twAAAAAAAOISHw4GAAAAAGACGJcjXow93HkBAAAAAADqGp0XAAAAAACgrlXtvDCzvc3sajP7tJm1m9nXzex+M/uBmc0epRoBAAAAAMAElnXnxTWSFknqlHSXpL9IOknSbZKuHi5kZvPMrMPMOlYs/OUIlQoAAAAAwCjzcfo1xmR1Xkxy96+4+2ckTXb3z7v7Enf/hqRpw4Xcfb67z3X3uTsecdyIFgwAAAAAACaWrM6Lspntb2aHS2o1s7mSZGb7SsrXvDoAAAAAADDhZb0q9SOSfiypLOkNkj5mZi+WNEXSObUtDQAAAAAAIKPzwt1/aWZnSCq7+yIzW6OBMS8edPdbR6VCAAAAAAC2E/MxOEDEOFS188LMLtJAZ0WDmd0u6XBJCyRdYGaHuPultS8RAAAAAABMZFmPjZwiaY6kJknLJO3m7uvN7HOSFkqi8wIAAAAAANRU1oCdRXcvuXuXpEfdfb0kuXu3BsbBAAAAAAAAqKmsOy/6zKy10nlx2KaJZjZFW9l5kVvWl1ZZMR7xJgtncutL8YYkeWtWv88WMvl4feVZhXg7O8UzktSYi+dyK/rjDSV2e5WnNoYz/d0Jz6c1x9dTqoZc/KU95R2ydtthNMY/l3XHV1bKNitJuScTjhUJq8p60jZAT1h+5Re0xNvpTasv/2hvvK3C6G3rKsX3RW9PeKlVMe2Z1KRzVcLyK+0WP45JUu7J+PpNOtbGT22SpPvXPBrOvGjaPuFMrvsv4Ywk5ZYkLL+E9VveI239plzzWMr5Vwn74c5pn6nhvo3hTPFFreGMLUtZDpI1xJdFbmV8RaWeE3+8Ir5PJV2TJcp1xq+fy20Jx/TE05QlXN6n/B6RqrxHUzhjK+Prt7x7vB1Jyj3Sk5Qb1xjyoi5k/RZ0lLv3SpK7D74MKkg6s2ZVAQAAAAAAVGS9bWSLf6pw95WSVtakIgAAAAAAgEESbxAFAAAAAAAYHXReAAAAAACAupY48h8AAAAAABMAA3bWBe68AAAAAAAAdY3OCwAAAAAAUNeqPjZiZjlJb5f095J2k1SS9LCkr7r7gloXBwAAAAAAkDXmxTckPSnpXyWdImm9pN9K+riZHezuX9pSyMzmSZonSbOPe7tmHnzMiBUMAAAAAMCoKTPoRT3IemzkMHf/pLv/zt3/UdLx7n67pNdIeu9wIXef7+5z3X0uHRcAAAAAAGBbZHVe9JvZPpJkZodK6pMkd+8VY64CAAAAAIBRkPXYyIcl3WFmvZWfPU2SzGxHSbfUuDYAAAAAAIDqnRfu/iszO1VS0d0XmdmBZvZBSX9x94+MTokAAAAAAGwfxjMHdSHrbSMXSTpJUoOZ3S7pcEkLJF1gZoe4+6W1LxEAAAAAAExkWY+NnCJpjqQmScsk7ebu683sc5IWSqLzAgAAAAAA1FTWgJ1Fdy+5e5ekR919vSS5e7ekcs2rAwAAAAAAE17WnRd9ZtZa6bw4bNNEM5uirey8yL20fRvKC7J4xBO7YHJZ3T5bUHywJ5xpv2t5OGP9feGMJJ11d2c446+cEs881hvOSFL+qXiuNDkfb6c77aG20qFt4cw55y0IZxoStnNJUi4eLO7RFM5MuuWBcEaSus89JJwprovvwPn2hJ1XUkN8Uajh2/H9N9fdFW9IUs879wpnUjalQmvaBti3Pr5f+R83hjOTfvtkOCNJ3e9+QTjjxXg7k77x13hIUucZ+4Yz3ptwLEt8pveyT8Q/V677L+HMd/7zNeGMJP3/9u48TrKqvv//69M93bMyw76joEAWN8QB9RcXRCVGE1wiauKK4hj9Gk1cIgajoIkBFXFfJiiuMTEaEcUFUUFJVBgMqyguoAzCwLDMMAsz092f3x9Vo01PV906h66enpnXk0c9qK6q95xP3Tp17+3T9577vG/8oDgzclH5NnGnb/6mOAMwOr98X2n9Hy0sb2iw/Pu74PybytsBNrzkPsWZ+R+/oTiz7vDdizMAOVbe2cf2HC5vaFPdjuZ33n1ncWbfF5fvk62v2yXj9l+MFmd2O6R8n2yscj99zZ3lmZo+MWt23TZx8IPXF2fW32eX4szc/7u1OAOw6WUHVuW2a855MSM0DV48pn1ZVDLv8Wv+EPDCvlUlSZIkSZLU1nS1kUnHYzNzJbCyLxVJkiRJkiSNU3f8tCRJkiRJ0jRx8EKSJEmSJM1oTXNeSJIkSZK0w4p0xs6ZwCMvJEmSJEnSjNb1yIuImAW8BHg6sG/74RuBLwMfy8xN/S1PkiRJkiTt6JqOvPg0cBhwMvDk9u0U4CHAZzqFImJJRCyLiGUrzv/W1FQqSZIkSZJ2SE1zXjwsMw+d8Nhy4IcRcW2nUGYuBZYCPPLzX/QEIUmSJEnStsnfaGeEpiMvbo+I4yLid6+LiIGIeDZwR39LkyRJkiRJah68eA7wTGBFRFwbET8Hbgae0X5OkiRJkiSpr7qeNpKZ1wPPBoiI3doPvzczn9fnuiRJkiRJkoDmq42cM8nDR29+PDOP7UtVkiRJkiTNBGNOejETNE3YuT/wE+BMWtOUBHAEcHqf65IkSZIkSQKa57xYDFwKnASsyswLgPWZeWFmXtjv4iRJkiRJkprmvBgDzoiI/2r/f0VTZqLXPnLXqsKGBgaLM6s23V2c+YOd9inOAIyMjRZnXrPhF8WZFR/9dHFm9bpbijMA+77i1OLMYx7WNP61pYt+sKk4AzB410hxZtYBQ8WZoa/dWJwBWLNveVsj+w8XZ2Z/7TvFGYCBofnFmdFdjyzOXP3jjxRnAM55/HeLM2NZfgjf8ED55wQwEFGcedbL31ScWb321uIMwFf/vXw8eSzHijMLhuYVZ2q96OZLijNrHnXfqrbef/TEq4I32zhavi57zt/8bXEG4C1LP1acecii/YszqzauLc4AnHTHdcWZgRs2FGee940fFGcAPvOkRxZnnn3Jt4szyy54c3EG4GEPf01xZvCWQ4ozOVi+Hvv1JR8szgCc+pGlxZlXH/+K4sz+j3tPcQaAjRWHgJcvPmJN+XoWYHRx+Tb72H3KM8NRvr8NcNGuq4szj1q0sDhTs+0FOHK3P6hoq3yfdvmam4szAM9/4WuLM/vuWb5P8asfva84A3D+f32vKif1W08DEZm5HDguIp4ClK+tJEmSJEnaBoVTXswIRUdRZOa5wLl9qkWSJEmSJGkL5cdHSZIkSZIkTSMHLyRJkiRJ0ozm4IUkSZIkSZrRiua8kCRJkiRph1JxhTtNveojLyKi/BpYkiRJkiRJhboOXkTErh1uuwFP7pJbEhHLImLZtz771SkvWpIkSZIk7TiaThu5Ffg1EOMey/bPe3YKZeZSYCnAF274rsfYSJIkSZKkak2DF78CHp+Zv5n4RETc0J+SJEmSJEmaIZzzYkZomvPiPcAuHZ57x9SWIkmSJEmSZrr2dBLfioift/+/xbhBRBwWET+IiKsj4oqIePa45z4REddFxGXt22FNbXYdvMjMD2bm5RMK+FT7uff3/M4kSZIkSdL24kTg25l5CPDt9s8TrQNekJkPAJ4EvCcidh73/Osz87D27bKmBrueNhIR50x8CHjc5gYz89imBiRJkiRJ0nblqcBR7fufBC4A3jD+BZl57bj7v42IW4A9gDtrGmya8+IA4GrgTH4/Uedi4PSaxiRJkiRJ2pbEdjrlRUQsAZaMe2hp++IbvdgrM29q378Z2KuhrSOBYeCX4x7+l4h4M+0jNzJzQ7d/o2nw4mHAq4GTaB3ScVlErM/MCxtykiRJkiRphhp/ldDJRMT5wN6TPHXShH8nIzoP8UTEPsCngRdm5lj74TfSGvQYbtfwBuCt3eqN7GHm1IjYHzgDWAEcm5n3aQy1Hfmmz9SNUzVNJTqZkYqmZkXzayYzWtHWpumpb/DmTeXtAGOLBsszewwVZ3b69vXFGYCcPbc4s/aPditv58DZxRmAuGljeebuseYXTVCzzAHYWN7/Ys1ocSZ3bRoTndzAivJ+m/NrVhR1Yn35Z5WD5d/fnF/+PQSIinVS3FXx+c6uXObD5cvio69ZXJx52bsuKc5A3edLxao2K9azAGyoqK/ms6rZtlG5/Go2v5Wb7Jp++5//9PjizLPOuKA4A3Cfx88pztz+2h8VZ9bcekVxZugRzyzOAGx65E7FmYGfrC9vqPYKAEPlnWlgVfk6c7Rymxgbyt/XwF0j5e1ULr6RfYeLM4MV23nG6goc3bNiXynK+0Ssq1j3AWO7V/SLuRXr9Mr6avb/Ln7XCyrX0NuGRz/ro9vlsRff//zLqj+3iPgZcFRm3tQenLggM/9gktctpHVKydsz8wsd/q2jgNdl5p93a7Onb0FmLs/M44CvA5/pJSNJkiRJkrZL5wAvbN9/IfDliS+IiGHgS8CnJg5ctAc8iIgAngZc1dRg0bBfZp4LnFuSkSRJkiRpm1V5FNB27lTg8xHxEuDXwLMAImIx8DeZeUL7sccAu0XEi9q5F7WvLPLZiNiD1nGVlwF/09Rg3bFskiRJkiRph5SZtwFbnGOZmcuAE9r3P0OHMzcy8+jSNqfvhHFJkiRJkqQKDl5IkiRJkqQZzcELSZIkSZI0o3Wd8yIiBmmdr7I/8I3M/J9xz70pM/+5z/VJkiRJkrTVRO1lmTWlmo68+CjwWOA24H0R8e5xzz2jUygilkTEsohYdsuPvzMFZUqSJEmSpB1V0+DFkZn515n5HuDhwIKI+O+ImE3rkiaTysylmbk4MxfveXjxJKKSJEmSJEm/0zR4Mbz5TmaOZOYS4HLgO8CCfhYmSZIkSZIEDXNeAMsi4kmZ+Y3ND2TmKRFxI/Dh/pYmSZIkSdJW5pwXM0LXIy8y83njBy4AIuJTmXlmZg71tzRJkiRJkqTmq42cM/Eh4HERsTNAZh7bp7okSZIkSZKA5tNGDgCuBs4EktbgxWLg9D7XJUmSJEmSBDQPXjwMeDVwEvD6zLwsItZn5oX9L02SJEmSpK0rnPJiRug6eJGZY8AZEfFf7f+vaMpMtOrMU6sKG8vR4szQ4JzizJ1rby7OAETnK8V2dPDjTirOPPfd9yvOHDh3l+IMwJs+8svy0Cc+XRy568UvKG8HYNeirgfAgv/+dXFm5LHlyxxgw683FGdywWBxZp/HlPdzgI2byjO3/c/dxZmlf3N4eUPAUw58XFWu1MjIxmlpB+C913y+OHPgvD2q2nrG/Z5YnIlouuDUlu7esKY402qrfJ35N3e9v7yh2eXvCeCGj51YnBmoWH6f/tnZxRmAv3nI8cWZ1etuLc4Mz5pbnAHY+3mnFGfG7jPc/KIJdvrmb4ozAMsueHNx5lkLzirOfP7vjyrOAPy/ZT8szqx55kPLG9p0WHHk9X+9b3k7wBuP+NvizIcv+1hx5sS3Xl2cAciB8nXS2Jzy73zuVL6dBxhasb44c+u33l2cGRsr398G2GOPBxdnbrnl8qq2aqxcdUNxpvVrT5n5c3cuzgB87Kf/XZx5y1duLM687fn3Lc4APPu+jy8Pvaty/14q0NNvg5m5HDguIp4CrO5vSZIkSZIkSb9X9KfszDwXOLdPtUiSJEmSJG2h/Dh8SZIkSZJ2FOmkFzNB3cnBkiRJkiRJ08TBC0mSJEmSNKM5eCFJkiRJkmY0By8kSZIkSdKM1nXCzoiYB7wSSOD9wHOAZwA/Bd6amWs65JYASwD23Gkfdp6361TWLEmSJEnS9Bhzws6ZoOnIi08AewEH0bpE6mLgnUAAH+4Uysylmbk4Mxc7cCFJkiRJku6NpkulHpqZz4qIAG4CnpCZGREXAZf3vzxJkiRJkrSj62nOi8xM4Gvt/2/+2WNnJEmSJElS3zUdebEsIhZk5prMfPHmByPi/sBd/S1NkiRJkqStK9K/288EXY+8yMwTJk7KGRGfysxfAo/ua2WSJEmSJEk0X23knIkPAY+LiJ3bPx/bj6IkSZIkSZI2azpt5ADgauBMWnNcBK0rjpze57okSZIkSZKA5sGLhwGvBk4CXp+Zl0XE+sy8sP+lSZIkSZK0leXY1q5AQGQPk49ExP7AGcAK4NjMvE+vDTzuz95dNbtJDvR0IZR7iNGR8syG9cUZAMY2FUdy/i7FmbXPOaC8nQ2VE8r8dmNxZM7Va5pfNNEvLi7PABsfUTHNynAUR2Y9ZkF5O8DIReXLYmxR0/jhJPYeKs/UWjVaHLn/0bOrmrrldVcWZ8bW31aciYG65RfD84szG/7usPJ2yrssAMNnXFEeqmlsoKLPArn+9uLM/Hf8SXHmlvPr1ukLvverqlyp9a/446rc8Du+XZwZmDW3ODM2Urf81h/1iOJM7lb+XZz3w/J+BDCwcnlxZtd3HVGcWV++GQXgg4vLl9+Ln3BGcWbk7vLld/eLjynOAAxdXL5N3PSoheUN3VS50OeW72fudN6vizN3Hd3zLvM9DNxY/r5m//AH5Q1V/kI2a+H+xZmNt/+8ODM4u6JPADFYvi8yULGdz9Hy3wcA+KeHF0fW/Lr895wF963cZr/le8WZC370nso9mG3DUX/+3u1yxs4Lvvrqbepz66lHZ+Zy4LiIeAqwur8lSZIkSZIk/V7RcFxmnguc26daJEmSJEmStlB3LJEkSZIkSTuCHqZaUP+Vn/AnSZIkSZI0jRy8kCRJkiRJM5qDF5IkSZIkaUYrHryIiGv7UYgkSZIkSdJkuk7YGRF3AZtnJ9l8Ddh5mx/PzEkvvhwRS4AlAIc+4Jnse8Ajp6hcSZIkSZKmTzhh54zQdOTFWcDZwCGZuVNm7gT8pn1/0oELgMxcmpmLM3OxAxeSJEmSJOne6Dp4kZmvAt4LfC4iXhURA/z+SAxJkiRJkqS+a5zzIjMvBZ7Q/vFCYE5fK5IkSZIkSRqn65wXm2XmGPC+iPgv4Kr+liRJkiRJ0gzhnBczQtOEnedM8vDszY9n5rF9qUqSJEmSJKmt6ciL/YGfAGfSmusigCOA0/tclyRJkiRJEtA858Vi4FLgJGBVZl4ArM/MCzPzwn4XJ0mSJEmS1PXIi/ZcF2e057o4IyJWNGUm2rhbxyuqzgij83aryg3cPVac2fSQ+cWZKG+GwfmN87BOauyu0eLMxj1mF2dOff/fFGcAfrr21uLMZ950Y3Fm5Py7ijMAuXvRVwOAqFjmrKvoFABjFefqDUVx5Jfn1Z0TOHjofYozOeu+xZkYrTxnsWKxj/707vLQ/MHyDDB6/5rlV/75Rk0/AmCf4kS+7nvlmScfUZwBWHfw/uWhilXt6E0j5SFg4A8PL86MLCpfJ9X0c6B1XGZp5NZNxZn1f1S3TzF4yyHFmdtf+6PizJpnPrQ4A/DiE88oznz8/L8vztw9sqE486KvXFqcARi8u7yvj+1U/qUava2i8wFUbAs2vKK8H3HtxvIMkAvKtwV3P+XRVW3VyP2GizOx/P7lDVVus+Ou8pXZ4KryPluzHQUYubZ8/Vdzvcc1P69oB5j1oAdX5bZrWbuB1FTqdcLO5cBxEfEUYHV/S5IkSZIkSfq9oj/LZOa5wLl9qkWSJEmSJGkLdecXSJIkSZIkTZOKE2IlSZIkSdpBZO2cX5pKHnkhSZIkSZJmNAcvJEmSJEnSjNZ18CIiHjzu/lBEvCkizomIt0fEvP6XJ0mSJEmSdnRNR158Ytz9U4GDgdOBucBHOoUiYklELIuIZTf//Hv3ukhJkiRJkrTjapqwM8bdfzxwRGZuiojvAZd3CmXmUmApwJ8870xnN5EkSZIkbZNibGxrlyCaBy8WRcTTaR2hMTszNwFkZkaEgxKSJEmSJKnvmgYvvgcc277/w4jYKzNXRMTewMr+liZJkiRJktQweJGZL5r4WER8KjNfQOs0EkmSJEmSpL7qOngREedM8vDREbEzQGYeO8nzkiRJkiRtH9IZE2aCptNGDgCuBs4EktYEnkfQuuKIJEmSJElS3zVdKvVhwKXAScCqzLwAWJ+ZF2bmhf0uTpIkSZIkqWnOizHgjIj4r/b/VzRltvg3BqP5RVMka5qqLC+HKoIVhxvlxopDlGZXvqmaz6qivPWjG8tDwKax8sbG5g4WZ2JT3WFhVamafjRSedhaTWygor7a5Tc8PeuKrP3SF6352mIaP9+moehJVC3zTeWRVmPlkTW3/aQ4ExxR3hCVy6JmnVmxHgMYG6r4gGv630Bl/5tV872qaKtyn6JmX2TNrVeUN7TpsPIMMHL37cWZu0c2FGfmzJpdnIma7QAQI6PFmaz5fkzjfuZY+Vuq3s+s2ebk7Ir1RK0NFfu0NfWN1q2TYl35ZS1r9u1zuHKZ12zra/avKvetsmabI02DnlaNmbkcOC4ingKs7m9JkiRJkiTNEFk+IKapV3YURea5wLl9qkWSJEmSJGkLHhMkSZIkSZJmNAcvJEmSJEnSjFYzBZ0kSZIkSTuGigsvaOp55IUkSZIkSZrRug5eRMQrI2L39v2DI+J7EXFnRPwoIh40PSVKkiRJkqQdWdORFy/PzJXt++8FzsjMnYE3AB/pFIqIJRGxLCKWrbj2wqmpVJIkSZIk7ZCaBi/Gz4mxZ2Z+CSAzLwB26hTKzKWZuTgzF+916GPvfZWSJEmSJGmH1TRh5xci4hPAW4EvRcTfAV8CjgZ+09/SJEmSJEnaynJsa1cgGgYvMvOkiDge+Bxwf2A2sAQ4G3hu36uTJEmSJEk7vMarjWTmWZn58MzcPTN3Ai7NzH/MzFXTUJ8kSZIkSdrBdT3yIiLOmeThozc/npnH9qUqSZIkSZKktqY5L/YHfgKcCSQQwBHA6X2uS5IkSZKkrc85L2aEptNGFgOXAicBq9pXGVmfmRdmptdAlSRJkiRJfdc0YecYcEZE/Ff7/yuaMhNtuOhzVYVljhZnZg0tKM6sWXNjcQZguKKtObOOL8489tU7F2eesdfBxRmAV/7iiuLMyH99ojjz1ke9ojgDMLaufMRzeM2m4syGx+9anAGIa9cXZ3KnweLMro+ZW5wBGB0pz6xadndx5tnP7HgV5a4+ftRbijM138OR0fL3BDAyUp576rdPKc48YN784gzAO884ozgzOlb+/bh74+riDMCcofJ+sefhLyrOrKtYTwCs/lL58ps1OKc48/rvv604A/DRj325OHPXnb8szsybu0dxBoCnPrs4kvsMF2cWnH9TcQbg15d8sDiz95+9sTjz+r/etzgD8PZ5xxRnXvSVS4szMRDFmc899ZHFGYAjX/KA4syZ7y/v56f948+LM0DreOJCI3dUbEgXFe02/87Ayoq2vvfF4sjYWPn+NsDcnfYrzmxYe3NxZnR0Q3EGYOUd5eu/Ggvm7VmVe+LXXlOcufC/y/czn3jsvOIMwBdOe2t56MMvqmpLKtHTGjUzlwPHRcRTgLo9V0mSJEmSpApFw8GZeS5wbp9qkSRJkiRpZsmKw7U05RovlSpJkiRJkrQ1OXghSZIkSZJmNAcvJEmSJEnSjFY3BbIkSZIkSTuEuquZaWp55IUkSZIkSZrRug5eRMR/R8TzImJByT8aEUsiYllELFu5+sZ7V6EkSZIkSdqhNR158XDgacBvIuLzEfH0iBhu+kczc2lmLs7Mxbsv3G8q6pQkSZIkSTuopsGLWzLzmcCBwFeAlwI3RsRZEXFMv4uTJEmSJElqmrAzATJzNfBp4NMRsRtwHHAicF5/y5MkSZIkaStKJ+ycCZqOvFgz8YHMvC0zP5KZR/epJkmSJEmSpN/pOniRmY+Z+FhEfKp/5UiSJEmSJN1T19NGIuKciQ8Bj4uInQEy89g+1SVJkiRJkgQ0z3lxAHA1cCat+S8CWAyc3ue6JEmSJEna6tI5L2aEyMzOT0YMAK8Gngy8PjMvi4hfZeb9em3g/135350b6GK4aTaOSdy5sbypByxovPLrpFaNjBZnvvHtDcWZ4Y9+uTjz25t+VJwB2PM5/1ScOe7VuxVn/vtttxRnAAbXbSrO3H3ULsWZ2d+/szgDsOHwhcWZgeUbizPzr7y+OAPA4FBxZP2BexdnNl7w78UZgBef95rizKrRkeLMcERxBmD+4GBx5lN//vHizLq1vy3OADz7WycWZxYNNo1fb2nXodnFGYDbN5Wv/z79o/XFmbGr1hVnAI4/oXxdtna0fDvw2WPeVZwBeMAXX12cedjC8u3bbzaUr5MA/uff1xZnBm8sbyv+YufiDMDfHVG+LXjnuSuLM3e99Z+LMwC7PrH88x28u3z9FxX7Ltd846TiDMDFK68uzjzl4KcUZ+b/v9cXZ4D2lPSF5pXvnA5dVv7dANj0wHnFmSP/rHz9PFi3SeTa8q8HD9mzvLGNXX5P6Wbxgop9sor9g8vWrC7OAHz/Wf9RnBn5iz8vzgx+ufz3CIDjv/qS4syS+/1ZZW/aNjzu0f9Y1xlnuO9+/+3b1OfWdc81W0NMZ0TEf7X/v6IpI0mSJEmSNJV6GojIzOXAcRHxFKBuiFGSJEmSJKlC0VEUmXkucG6fapEkSZIkaWapPIVJU6tiZglJkiRJkqTp4+CFJEmSJEma0Ry8kCRJkiRJM5pXDpEkSZIkqZMc29oViIYjLyLifhHx8Yj454hYEBH/FhFXRcR/RcSB01SjJEmSJEnagTWdNvIJ4BJgDfBD4KfAnwHfAD7eKRQRSyJiWUQsu/oL501RqZIkSZIkaUfUNHixU2Z+ODNPBRZm5umZeUNmfgzYpVMoM5dm5uLMXPyAZx4zpQVLkiRJkqQdS9PgxVhEHBoRRwDzImIxQEQcDAz2vTpJkiRJkrTDa5qw8x+ArwBjwNOAN0bEg4FFwJL+liZJkiRJ0lbmhJ0zQtfBi8z8NvAH4x66KCK+Chyb6ScoSZIkSZL6r+vgRUScM8nDRwFnRwSZeWxfqpIkSZIkSWprOm3kAOBq4EwggQCOAE7vc12SJEmSJElA8+DFw4BXAycBr8/MyyJifWZe2P/SJEmSJEnaypwxYUaIzGx+UcT+wBnAClrzXdyn1wYefJ9HNjcwiZHRDcWZObMXFWfuWntzcQZgaHBOcWbnJ7yyOPOMf9qzOPPABbsVZwDe/OFfFWfi858vzuQ/vqA4AxBN18aZxPyP/6w4c9dxh5Q3BMRvyvssg1Ec2etJ88rbATaNlGduu3B9ceY1x+9d3hDwpoe9vDgze3hBcWbTSPl7auXuLs68+kfvL878wbyOV6Hu3tZDTyjOjI2NFmfWb7yrOAMwZ3h+cWbfo19fnNnwkJ2KMwC3nfHm4szgwFBx5oOXnVWcAXjTY99WnFm1+tfFmXlz67Yfw3/+4uLM2H2HizPzv7uiOAPws+//a3HmPi98R3Hm1Df9cXEG4B++fH1xZnCn8o1ijpXvkv3jUeX7IQBvPOLVxZlzf3FuceY5rz+vOAPAQPn2N+eUZ5hdsfMCzKrYpxi75CtVbdUYGJxdnBmr2Lev2U4BLL95WVWu1MJ5e1TlXv0/pxZnPv6l1cWZlz69/HcjgLc9rPy6DDfccUPFF2Tb8bhHvrbqd9qZ7rs/OH2b+tyajrwAIDOXA8dFxFOA8m+OJEmSJElSpZ4GLzbLzHOB8mFxSZIkSZKkSkWDF5IkSZIk7UjSOS9mhLoT8SRJkiRJkqaJgxeSJEmSJGlGc/BCkiRJkiTNaF3nvIiIAeBFwF8C+wOjwLXARzLzgn4XJ0mSJEnSVpXb5ZVStzlNR158DLgP8K/Ad4Gvth97U0T8badQRCyJiGURsez2NXXXZJckSZIkSYLmwYuHZebJmXlRZv4dcExmfgt4CvCKTqHMXJqZizNz8a4L9prCciVJkiRJ0o6mafBiU0TcHyAiDgc2AmTmBsBjZyRJkiRJUt91nfMCeD3w3YjYCAwCfwUQEXvQOoVEkiRJkiSpr7oOXmTmdyLivsBumbkSICI+lZkvAP5hOgqUJEmSJGnrGdvaBYjmq42cM+7+5rtHR8TOAJl5bN8qkyRJkiRJovm0kQOAq4Ezac1xEcARwOl9rkuSJEmSJAno4WojwKXAScCqzLwAWJ+ZF2bmhf0uTpIkSZIkKTKbLxoSEfsDZwArgGMz8z69NnDEyZ+tuyrJYHkkNpU3lYPR/KIpamvglk3lDVUsvVlrRspDwMZ9Zxdn8oDh4szwsjXFGYBNx+xcnIn/W1ve0Ma6Lptzm8YCJwuVR2J95Tl3FV197D7lfWLg5o3lDQFj+5T3JTaUL4va5Ze7DZWH1owWRwaX1y6/8vpyQcWKdl5FPwe4rXy9FGvLlx9z6uqr+v5WtDXw87vL2wFm3Vm+/dj4wPnlDVVs2wAGVpV/vjlQsVKq+ZyAXFTe1weu31DRUHkEYGzPivXLcMXyq9jnGbp6XXk7wKZD5xZnBn5bvv77j3ceU5wB+M2am4ozJz/tP4oza553RHEGIK6rWFf8Yfkyb/wzZifXrC+O5C5NB3xvKfar2DcA8saKbelwxcIYqvw9omJfKRdWLL+76n4nyJ3K27rkxL+qWxjbiMce+crt8kqbF178gW3qc+vpW5qZyzPzOODrwGf6W5IkSZIkSZqpImLXiPhWRPy8/f9dOrxuNCIua9/Gz6l5UET8KCJ+ERH/GRGNo5VFQ4yZeW5m/mNJRpIkSZIkbVdOBL6dmYcA327/PJn1mXlY+zb+gh+nAWdk5sHAHcBLmhqsPVhMkiRJkiTtmJ4KfLJ9/5PA03oNRutSpkcDXyjJl5/QJEmSJEnSjiIr55yb4SJiCbBk3ENLM3Npj/G9MnPzBEI3A3t1eN2ciFgGjACnZubZwG7AnZm5eWKW5cB+TQ06eCFJkiRJ0g6mPVDRcbAiIs4H9p7kqZMm/DsZEZ0mNb1vZt4YEfcDvhMRVwKraup18EKSJEmSJN1DZj6h03MRsSIi9snMmyJiH+CWDv/Gje3//yoiLgAeCnwR2DkiZrWPvtgfuLGpnq5zXkTEoog4NSJ+GhG3R8RtEXFN+7Gdm/5xSZIkSZK03TkHeGH7/guBL098QUTsEhGz2/d3B/4E+ElmJvBd4Jnd8hM1Tdj5eVozfx6Vmbtm5m7A49qPfb5TKCKWRMSyiFh266XfaapBkiRJkqSZKce2z9u9cyrwxIj4OfCE9s9ExOKIOLP9mj8ClkXE5bQGK07NzJ+0n3sD8JqI+AWtOTA+1tRg02kjB2bmaeMfyMybgdMi4sWdQuPPnTni5M92OvdFkiRJkiRtYzLzNuDxkzy+DDihff9/gQd1yP8KOLKkzaYjL34dEf8QEb+bOTQi9oqINwA3lDQkSZIkSZJUo2nw4tm0DuG4MCLuiIjbgQuAXYFn9bk2SZIkSZKk7qeNZOYdtM5FeQNARDya1qEdV2bm7f0vT5IkSZKkrac1v6S2tqarjVw87v4JwPuABcBbIuLEPtcmSZIkSZLUeNrI0Lj7LwOOycxTgGOA5/atKkmSJEmSpLamq40MRMQutAY5IjNvBcjMtREx0vfqJEmSJEnSDq9p8GIRcCkQQEbEPpl5U0QsaD/WrLdXbWmgIljTVtOxJ52MlZ/3FBvLr6U7Nm+wOJOz6hZ6VLynHK1qqsrAUPn7GqvpR3MrO23FqXA1yzxG6865q+oXs8szOVz5papZfmsqrk9de85iRa7qs6pdZ9a8rZrMprrlV7P+q1Hd/2rWFTWfb+X6efDuTcWZuLtima+r/Jwq/pwRsyq2ORXrTAA2VuQqtjlZ048A5lb028ptQbHaZmpyFcvvN2tuqmgI7rNgn+JMzJpd3lDlKqlm+zFW8fWt3eQwp+KN1fSJ2k1Hzf7phorGRiuX4GDN/mnFMl9bWd+m6dlmS6WaJuw8sMNTY8DTp7waSZIkSZJmknRAZyZoOvJiUpm5DrhuimuRJEmSJEnaQu1JE5IkSZIkSdPCwQtJkiRJkjSjVZ02IkmSJEnSjiCrZ4/VVPLIC0mSJEmSNKM5eCFJkiRJkma06sGLiPh6l+eWRMSyiFh267Lv1DYhSZIkSZLUfc6LiDi801PAYZ1ymbkUWApwxCmfzdriJEmSJEnaqtI5L2aCpgk7LwEupDVYMdHOU16NJEmSJEnSBE2DF9cAL8vMn098IiJu6E9JkiRJkiRJv9c058XJXV7zt1NbiiRJkiRJ0pa6HnmRmV8Y/3NEPAo4ErgqM8/uY12SJEmSJG11mU7jOBN0PfIiIi4ed/+lwAeAnYC3RMSJfa5NkiRJkiSp8bSRoXH3lwBPzMxTgGOA5/atKkmSJEmSpLamCTsHImIXWoMckZm3AmTm2ogY6amF+U3jI1Mnhya7KEqDuXX15fzyQ4dGDphd3tD68svybKzIAAzctLE4E7dvKs4cfdLuxRmAb737jvLQwsHyzPyKDJCzy/tf/LZ8mY/t1vS17WCkvM/GLeWf7+Bt5RmA0eHy5ZcHDJc3NLvuOx/Lyz+r4Z+vL85sPGhOcQYg9xhqftEEcWv5Z5UVnxNA7lP+WQ3/7+rizKb9iyMA5Lzy731UrGurtlPAyHP3Km9rxWh5Q5sqD4u9ufz7MbCyt92I8cb2rPjOw+TXTGswsKp8+Y3NqVu/LDjv18WZDa84pDgzVtElRu4o/5wAmFe+LHJO+Qd18tP+ozgDELPK98k+9o1XFGeec+K3ijMAWbH/EtfdXdFQeQRg1z+dX5y57cfl6wmuXFeeATikYltasU2MNRVfKiDWVWw/Kr5TUbEeA8j9K9e1Up81/Ra0CLiU1mY/I2KfzLwpIhZQtSsgSZIkSZJUpmnCzgM7PDUGPH3Kq5EkSZIkaSbJuiPbNbWqjj/PzHXAdVNciyRJkiRJ0hamb0IKSZIkSZKkCg5eSJIkSZKkGa3ysgWSJEmSJO0AnPNiRvDIC0mSJEmSNKN1HbyIiIUR8a8R8emI+OsJz32ov6VJkiRJkiQ1H3lxFhDAF4HnRMQXI2J2+7lHdApFxJKIWBYRy2794benqFRJkiRJkrQjaprz4v6Z+Zft+2dHxEnAdyLi2G6hzFwKLAU44l2fy3tfpiRJkiRJ0y+d82JGaBq8mB0RA9n+tDLzXyLiRuB7wIK+VydJkiRJknZ4TaeNfAU4evwDmfkJ4LXAxj7VJEmSJEmS9Dtdj7zIzH8Y/3NEPAo4ErgqMw/pZ2GSJEmSJEnQfLWRi8fdfynwAWAn4C0RcWKfa5MkSZIkaSvL7fS2bWk6bWRo3P0lwBMz8xTgGOC5fatKkiRJkiSprWnCzoGI2IXWIEdk5q0Ambk2Ikb6Xp0kSZIkSdrhRWbnw0Ui4npgDAhax5X8SWbeFBELgIsy87CmBh7+95+sOh4lB6I4E6PlTeVQeTutYHkkRqbn0JyxnZvGpCYXG8ovATS0fENxZuPBc4szAAxW9Im7y99T7l65/G6omMN2VsV7WjNa3g4wULEs3nXq4cWZv3/PlcUZAKZpODQ21V3qKoeaDlSbJLNosDgTa+s+XzZWrF8q1rONQ96d1NRX8f3IOeWfE1R+ryq2HzlcV9/wteuKM5sOmlPeUM3nBMSmiu3vgvLvR86u22bHmorvfc0+xU7l7wmo6ktV39+axVe56zL0k/I+O3Kf2cWZ3He4OAM0H3s8WeQn64sz/3HqE8sbAp795vOLM1mz/1e5G0zFPm3VfnrlOrNqW1qxmsi5lfWNVXyxKvbjqNwmsqG8votPe35tb9om/MmD/mrbO8eiB/9z5ee2qc+tacLOAzs8NQY8fcqrkSRJkiRJmqDqb2iZuQ64boprkSRJkiRpRsmsO3JXU6vyWCJJkiRJkqTp4eCFJEmSJEma0Ry8kCRJkiRJM1rtvPGSJEmSJG33nPNiZuh65EVE7B0RH46ID0bEbhFxckRcGRGfj4h9pqtISZIkSZK042o6beQTwE+AG4DvAuuBJwPfBz7SKRQRSyJiWUQsu+XKC6akUEmSJEmStGNqGrzYKzPfn5mnAjtn5mmZeUNmvh+4b6dQZi7NzMWZuXjPBx01lfVKkiRJkqQdTNOcF+MHNz7V5TlJkiRJkrY/mVu7AtE8APHliFgAkJlv2vxgRBwMXNvPwiRJkiRJkqDhyIvMfPP4nyPiUcCRwFWZ+cx+FiZJkiRJkgTNVxu5eNz9lwIfAHYC3hIRJ/a5NkmSJEmSpMY5L4bG3V8CPDEzb42IdwE/BE7tW2WSJEmSJG1lmWNbuwTRw4SdEbELrSM0IjNvBcjMtREx0vfqJEmSJEnSDq9p8GIRcCkQQEbEPpl5U3sSz+ilgbH7z6mrrGJC1xzsqaR72lQ5c+xgRebW8vGeWdfdXZyJDXXv6RVv2Lc48/4v3l6ciVs2FWeAqll+4yHzijOD315dnAEYW1TeKf7fy/cuznzwHb8tzgCMzSuv7+/feUVxZtbNdZ/vpkfsVJUrlaO13/ny9cvAVevKM3fXjeyPHDa/PDSrYp1ZkwEYqfj+/rJ8/cdOdfXlfWeXhwbK2xr64V3l7QAbH72oPFSxzGs/3/ce94fFma/c+svizHfefWdxBmB0cfn3Y+Cq9cWZoRXlGYCRhU27Y1vKBRU7IuXNMLCy7m9Vmx5Yvv0dqlhnjmyoW2dGxbYgF5Yv82e/+fziDMB/vvUJxZlnffKi8oZq9p0BVpZv63Of4bq2KuRYTWevWBYb6/rfwJXlfX1st/L3NLCibp9s9CEV+xTSNGiasPPADk+NAU+f8mokSZIkSZImqBiWhMxcB1w3xbVIkiRJkiRtoWrwQpIkSZKkHYMTds4EXS+VKkmSJEmStLU5eCFJkiRJkma04sGLiNizH4VIkiRJkiRNpuucFxGx68SHgIsj4qFAZGb5dTIlSZIkSdpGZDrnxUzQdOTFSuDScbdlwH7Aj9v3JxURSyJiWUQsu/V/6q5vLUmSJEmSBM2DF68HfgYcm5kHZeZBwPL2/ft1CmXm0sxcnJmL9/iTJ0xlvZIkSZIkaQfTdfAiM08HTgDeHBHvjoidgJyWyiRJkiRJkmiY8wIgM5cDx0XEscC3gHl9r0qSJEmSpBkg07/fzwSNgxebZeY5EXEH8NiIOCYzz+tjXZIkSZIkSUDDaSMRcfG4+y8F3gcMAm+JiBP7XJskSZIkSVLjhJ1D4+4vAY7JzFOAY4Dn9q0qSZIkSZKktqbTRgYiYhdagxyRmbcCZObaiBjpe3WSJEmSJG1NOba1KxDNgxeLgEuBADIi9snMmyJiQfuxRg9+VM/TatxrYxXzqOw01NPb2MLcgfLcdy5qOtBlS2Of/2JxZuOGO4ozAB+Yf3xxZr9nLCjO/PbrdeNecftocWZsdfmKZt7PflacAVj7hAcXZz7wwZuLMwuuLc8A5PDs4szaI/Ysztxx/unFGYBnvvGU4sztI+Wf73D51xCAvYfK12Vf/+RFxZm7Vv6kOAPwuNe+ojgzd6B8YSxeuGtxBuBHq28rznz7p+uLM7F8Y3EG4KhXLirODEf5duCb7z27OANwn1eUr5/3rJhee6jy+/GqD15ZnBm4dVNxZt8Xl39OAMfuM784s/QHdxVnbv3Wu4szAHvv9+jizN1PKc/k7IoP+Hvl+yEAR77yBcWZS8/6z/KGXld3IPBYxe8hcd3dxZncuW4/+FkV24/Pv/BRxZmxyl/IXnDexc0vmuDMxz+0ODNrYLA4A3D+LVcVZ+ZUtLXzrDnFGYB3fPgDxZlZi59UnMll3yjOALzijSdU5aR+67pGzcwDOzw1Bjx9yquRJEmSJEmaoGo4ODPXAddNcS2SJEmSJElbqDxAVJIkSZIkaXpM34QUkiRJkiRtYxIn7JwJPPJCkiRJkiTNaA5eSJIkSZKkGc3BC0mSJEmSNKN1HbyIiCeNu78oIj4WEVdExL9HxF5dcksiYllELPvpF781lfVKkiRJkjR9MrfP2zam6ciLt4+7fzpwE/AXwCXARzuFMnNpZi7OzMV/+JdPvPdVSpIkSZKkHVbJ1UYWZ+Zh7ftnRMQL+1CPJEmSJEnSPTQNXuwZEa8BAlgYEZH5u+NLnC9DkiRJkiT1XdPgxb8BO7XvfxLYHbg1IvYGLutjXZIkSZIkbXWZY1u7BNEweJGZp4z/OSIeFRHPB67KzBf0tTJJkiRJkiSarzZy8bj7JwAfoHUkxlsi4sQ+1yZJkiRJktQ4b8XQuPsvA57YPhrjGOC5fatKkiRJkiSprWnOi4GI2IXWIEdk5q0Ambk2IkZ6aWAw4l6WWKL8WrXDleUN1uQqMmNjm4ozo6PlGYBZFfUNTue0rdO0zKk8py0r2qrqfrXn3FVcy7nmPY2NjZaHgOGB8sbmTmP/Gx4obyzHelpN3jOTdcuvZl1bs8yHYrA4AzA8TduC3LXkIlq/V1NfzfLLLO8TAIMVi31ORabu06Vyo1hu/Ya63HBFv43yVWb1+q96vT4Nat/TNHWJ6unj67a/09UQVQtwrKIfDUTdAqxZpde0NWugdp1e3tacirZmVS6/rPhe1e3SVu6TVW7rt2fOeTEzNH1LFwGX0vq+ZETsk5k3RcQC6lfHkiRJkiRJPWuasPPADk+NAU+f8mokSZIkSZImqDoWKzPXAddNcS2SJEmSJElbmM4ZCyRJkiRJkorVzYIjSZIkSdIOICsmvtfU88gLSZIkSZI0oxUPXkTEbv0oRJIkSZIkaTJdBy8i4tSI2L19f3FE/Ar4UUT8OiIe2yW3JCKWRcSya75w3hSXLEmSJEmSdiRNR148JTNXtu+/E3h2Zh4MPBE4vVMoM5dm5uLMXPxHzzxmikqVJEmSJGm6jW2nt21L0+DFrIjYPKnn3My8BCAzrwVm97UySZIkSZIkmgcvPgR8LSKOBr4REe+NiMdGxCnAZX2vTpIkSZIk7fC6Xio1M98fEVcCLwcObb/+EOBs4J/7Xp0kSZIkSdrhdR28AMjMC4ALACLi0cCRwPWZuamvlUmSJEmStJVlbnvzQ2yPmq42cvG4+ycA7wMWAG+JiBP7XJskSZIkSVLjnBdD4+6/DDgmM08BjgGe27eqJEmSJEmS2ppOGxmIiF1oDXJEZt4KkJlrI2Kk79VJkiRJkqQdXtPgxSLgUiCAjIh9MvOmiFjQfqzRdSvrCps9XJ5Zvaqnku7hkfcrzwBceVsWZwbmlLc1b88HFWeG7/ptcQZg04by93TT8orl8MC5xRmAsUvWlofWlZ+ftv4hDyhvB2Co/PONTeXLb+SO64ozAIOzFxZnYnTP4syuu/5hcQbgx7ePFmfmVqwndqnIAPzgjo3FmfWrfl2cmTOvfJkDrNxY3tevXV/e/65Zs6I4A3XLfWyfoeYXTRBr685JvW59ee6WO8vbGRysu8r4qjXlmf3mlWeuqPt4iQ3ly29gTfl3/vZflGcALtp1dXFmZN/yTrvHHg8uzgDMWrh/cSb3q/hSVWzn5+60X3k7wLUV+38DFd+PsWvWlzcEMKfp4OMt7fqn84szt11YWd/K8qnlXnDexc0vmiDqdoP59DGPKM4cf8EPizOb7i7vswDPfvCc4szXVqwrztx2R3EEgNkL9i7OrDt8QXFm3tV1+xTn3Va+znzufaua2mZk1vVFTa2mq40c2OGpMeDpU16NJEmSJEnSBI1XG5lMZq4D6v78K0mSJEmSVKD8mDlJkiRJkqRp5OCFJEmSJEma0apOG5EkSZIkaUeQWTchuKaWR15IkiRJkqQZrevgRUT8OCLeFBH3n66CJEmSJEmSxms68mIXYGfguxFxcUT8fUTs2/SPRsSSiFgWEcuWf/W8qahTkiRJkiTtoJoGL+7IzNdl5n2A1wKHAD+OiO9GxJJOocxcmpmLM3Px/n9+zFTWK0mSJEnSNBrbTm/blp7nvMjM72fmK4D9gNOAR/atKkmSJEmSpLamq41cO/GBzBwFvtG+SZIkSZIk9VXXwYvMfM74nyPiUcCRwFWZ6WQWkiRJkiSp75quNnLxuPsvBT4A7AS8JSJO7HNtkiRJkiRtVZm5Xd62NU1zXgyNu78EeGJmngIcAzy3b1VJkiRJkiS1Nc15MRARu9Aa5IjMvBUgM9dGxEjfq5MkSZIkSTu8psGLRcClQAAZEftk5k0RsaD9WKND97yXFRYYW1SeGezpXWzpyD0GizNf+VX55WjWr/xpcWbjhlXFGYBZw+ULY/d9yjM3fX9DcQZg1spNxZmRQ+YUZ+ZecU1xBmDNvg8uzuRQ+fKbtdvBxZlWW8PloYrvx8rbri4PAU/etfw7tXGs/HC34YG6L/3Bc8vru3nBvsWZtauuK84A7Du7vL4D55Yviwcv2KU4A/DTtXcWZ5bdVP6dzwU9X0TrHg6aW547eF55O18bGy0PAX9csS2dW9HXH16xTgf4xuzy5Tc2v7zP7nZIeQbgUYsWFmcuW3FnceaWWy4vzgDsMzi7OBPL71+cyYrPacPam4szAI/Ys7wvXThavn+QuzTtynYKlkdu+/HG4kyM1h2WnfuUb7PPfPxDizMDUbfOPP6CHxZnzjrqEcWZdSPrizMAl97+y+LMM/Yp/x4uOKBi3wp4+13LizPDP1pdnFl/143FGYAn7V7xS5U0DZom7Dyww1NjwNOnvBpJkiRJkmaQzPI/QmvqVQ1XZ+Y6oO7Pg5IkSZIkSQXqjhWTJEmSJEmaJg5eSJIkSZKkGc3BC0mSJEmSNKM5eCFJkiRJUge5nf53b0TErhHxrYj4efv/W1ySLiIeFxGXjbvdHRFPaz/3iYi4btxzhzW12XXwIiIWR8R3I+IzEXFAu6hVEXFJRJRfj0mSJEmSJG3rTgS+nZmHAN9u/3wPmfndzDwsMw8DjgbWAeeNe8nrNz+fmZc1Ndh05MWHgHcA5wL/C3w0Mxe1C/tQp1BELImIZRGx7OovnNfpZZIkSZIkadvzVOCT7fufBJ7W8PpnAl9vX7m0StPgxVBmfj0zPwdkZn6B1p1vA3M6hTJzaWYuzszFD3jmMbW1SZIkSZKkmWevzLypff9mYK+G1z8H+NyEx/4lIq6IiDMiYnZTg7Manr87Io4BFgEZEU/LzLMj4rHAaNM/LkmSJEnStixzbGuX0BcRsQRYMu6hpZm5dNzz5wN7TxI9afwPmZkR0XESjYjYB3gQ8M1xD7+R1qDHMLAUeAPw1m71Ng1evBw4DRgD/hR4eUScBfyWe75JSZIkSZK0jWgPVCzt8vwTOj0XESsiYp/MvKk9OHFLl6aeBXwpMzeN+7c3H7WxoT3G8LqmersOXrQnzfjTcQV+AfgNcGVm/k/TPy5JkiRJkrY75wAvBE5t///LXV77V7SOtPidcQMfQWu+jKuaGmy62sjF4+6/FHgfsAB4S0RsMZuoJEmSJEna7p0KPDEifg48of3z5iuWnrn5RRFxIHAAcOGE/Gcj4krgSmB34J+bGmw6bWRo3P0lwDGZeWtEvAv44eYCJUmSJEnaHm2vc17cG5l5G/D4SR5fBpww7ufrgf0med3RpW02DV4MRMQutI7QiMy8td3Q2ogYKW1MkiRJkiSpVNPgxSLgUiBoXW1k83kpC9qPNdpUOUg12NO/fk8bxzpOcNrRaFY0VNlWri9fGGOjG4ozIyN1l86dVbEohoeaXzNR3L6p+UWTGFswWB4q/5igcmS1ajivpvuNVo4bDlYsvygvMCoyAIMVufVj5Rc92lj5nd91Vnlnj8HyzNhY3fdjtKKzD0bT1bK3NHugabMxuY1Z8WWs6LJVG4/K2NyB8uWXlZ/vDWvLMwfMr+gTVSvNShXLfKxyn2KgZr1UsZ2vNTh7YXlotKK+isxoxX4I1H3nxyrW6bHfcHGm1VhF5sry/avcpW6dWWPWQPlKc1blOn3T3eWf77qR9cWZebPmFmcANlXsy82pWBZDUbOhgojytnKofJszMFCxow6M1WyzpWnQNGHngR2eGgOePuXVSJIkSZIkTVA13JqZ64DrprgWSZIkSZJmFo9GmRHKjz+SJEmSJEmaRg5eSJIkSZKkGc3BC0mSJEmSNKM5eCFJkiRJkma0rhN2ti+J+g/AXwL7AxuBXwIfycxP9L06SZIkSZK2oqy6vrKmWtORF58FfgX8KXAK8D7g+cDjIuLtnUIRsSQilkXEsmu+cN6UFStJkiRJknY8TYMXB2bmJzJzeWa+Gzg2M38OHA88o1MoM5dm5uLMXPxHzzxmKuuVJEmSJEk7mKbBi7UR8SiAiDgWuB0gM8eA6HNtkiRJkiRJ3ee8AF4O/FtEHAJcDbwYICL2AD7Y59okSZIkSdqqMnNrlyAaBi8y83LgyM0/R8SjIuLPgasy8339Lk6SJEmSJKnraSMRcfG4+ycAHwB2At4SESf2uTZJkiRJkqTGOS+Gxt1/GfDEzDwFOAZ4bt+qkiRJkiRJamua82IgInahNcgRmXkrQGaujYiRvlcnSZIkSdJW1Lpehba2psGLRcCltK4skhGxT2beFBEL6PFqI4/bZVFVYXMGmkrb0u2b1hdnHrzogOIMwLqRu4sz31p4fXFmzfpbizOr195cnAHYe6D8AjL7zitv5zflEQBmrSofL8s9Bsszu+xXnAHIofLlFxvLMxtXXlOcARgcXlAeWrdncWTVmlvK2wEevfP+xZmBaDp4bEtzBmcXZwDGKN9ovfv684sz6zasKs4APHXPg4szG0c3FWd2nr2wOAOw37zyvnTOfpcUZ2L1aHEG4E93v19xZu1I+TbnfbdcUZwB+Js9yle2Ndu3m9ffXpwBuHDW8uJMVHxUa+4szwAcudsfFGdG97yxOLNy1Q3FGYADKtZLcVf5OinWlWdW3vHL4gzA4gXl64r/vHlZcWa/G/+qOANAzarikDnFkfj1hoqGIMfK94PPv+Wq4sxwxXYU4NkPLl8Wl95e3pc2Vf7CePReDy7O1GwTf73mpuIMwC0ry7cFe875i+LMilsvL84AHL7L/atyUr81Tdh5YIenxoCnT3k1kiRJkiRJE5QP6wKZuQ64boprkSRJkiRJ2kLV4IUkSZIkSTuCrDh9WFOv7kQ3SZIkSZKkaeLghSRJkiRJmtEcvJAkSZIkSTOagxeSJEmSJGlG6zp4ERGLIuLUiPhpRNweEbdFxDXtx3buklsSEcsiYtm3//2rU160JEmSJEnTITO3y9u2punIi88DdwBHZeaumbkb8Lj2Y5/vFMrMpZm5ODMXP/6v/3zqqpUkSZIkSTucpsGLAzPztMy8efMDmXlzZp4G3Le/pUmSJEmSJDUPXvw6Iv4hIvba/EBE7BURbwBu6G9pkiRJkiRJMKvh+WcDJwIXtgcwElgBnAM8q8+1SZIkSZK0VWWObe0SRPORF4cCb8/MPwT2Az4A/LL93Gg/C5MkSZIkSYLmwYuPA2vb998D7AScCqwDzupfWZIkSZIkSS1Np40MZOZI+/7izDy8ff+iiLisf2VJkiRJkiS1NA1eXBURx2fmWcDlEbE4M5dFxKHApl4aGIqmgzumzpyBprezpY2jPb2NLcyKweJMjpRfS3essr4qQ1EcmTtQnhm8baT5RZOIiuU3UPGeYrSuPkYrrpU8q7y+gaH55e0AMWtueajiLUXld354cKg4MzJWfvbaGHXnLNZ854dmzSlvaMOq8gwwVnGt7pplPhDlfRbq6qNi/UJlfTXmDs4uzgwMlPcjgNGK5Vfz/Zg7OFycAZr3JiaRs8s/qxyruyb9QM16qaIv1Z4TPTBcvl4fXFW+rcqKbWKt2nVFseHK/cwNFZ/VrRX7ZLWnyVes/+ZUrF9q9p0BvrZiXXHmGfuUrzNr66vZv6/ZJs6v2c4DWbFOH7yr/Ds/VrEdAJhVua3antV8Zpp6TWv8E4DHRsQvgT8GfhARvwL+rf2cJEmSJElSX3UdzszMVcCLImIhcFD79cszc8V0FCdJkiRJktTTsViZuRq4vM+1SJIkSZIkbaHuRDJJkiRJknYAWT2BjabS9M2mKUmSJEmSVMHBC0mSJEmSNKM5eCFJkiRJkma06sGLiPj6VBYiSZIkSZI0ma4TdkbE4Z2eAg7rklsCLAFY8q+v4YnP/fPa+iRJkiRJ2moyc2uXIJqvNnIJcCGtwYqJdu4UysylwFKAL9zwXT9pSZIkSZJUrWnw4hrgZZn584lPRMQN/SlJkiRJkiTp95rmvDi5y2v+dmpLkSRJkiRJ2lLTkRc3ADcBRMRc4I3AQ4GfAG/vb2mSJEmSJG1dmWNbuwTRfOTFx4F17fvvBRYCp7UfO6uPdUmSJEmSJAHNR14MZOZI+/7izNx89ZGLIuKy/pUlSZIkSZLU0nTkxVURcXz7/uURsRggIg4FNvW1MkmSJEmSJJqPvDgBeG9EvAlYCfygfZWRG9rPNbp2/V1VhQ1WZDZWXH939ejGipZgzkB5hTla3s6sWXOKMwvm7FbeEMBY+fK7YX15Jgcmu/JuL8GKtipOT4u715aHoHkocDIVy3xw7q4VDUFU9CWGyz+r4aGKdoBfrb2lOLNprPxLNRg1HxQsmDVcnFm48L7FmbHfHexW5qdrbirOzBlo2gRs6X7z9yzOANywbmVxJlZVrDQrvlNQ1/9qzJ+zS1VubUVfr+kTY7XXsd80PVdFnzW7bvuxfM3NxZlYV74BmT935+IMQI6W/z0oZ5UvixwuX/8tmFf3nb9szerizMJ5e5Q3NFS5TzFanos15d/DnFu3zWFjef/buWI7P6tym3jbHeWZBQeUb0eHouY3Avh1xfpvfsXy27dymzg6Vv6dH7jmf4szSd08Das3Vu4Lb8eydvuoKdV1zzUzVwEvioiFwEHt1y/PzBXTUZwkSZIkSVJPf3bLzNXA5X2uRZIkSZIkaQuVx7JJkiRJkiRNj/ITniVJkiRJ2kHUzh+iqeWRF5IkSZIkaUZz8EKSJEmSJM1oXQcvImJhRPxrRHw6Iv56wnMf6m9pkiRJkiRJzUdenAUE8EXgORHxxYiY3X7uEZ1CEbEkIpZFxLKL//ObU1SqJEmSJEnaETVN2Hn/zPzL9v2zI+Ik4DsRcWy3UGYuBZYCvP3ac/LelylJkiRJ0vTL9FfamaBp8GJ2RAxk5hhAZv5LRNwIfA9Y0PfqJEmSJEnSDq/ptJGvAEePfyAzPwG8FtjYp5okSZIkSZJ+p+nIiy8CPwWIiLnAG4GHAj8BFve3NEmSJEmSpObBi48DD2nffy+wDjgNeDytyTyf0b/SJEmSJEnautqzKGgraxq8GMjMkfb9xZl5ePv+RRFxWf/KkiRJkiRJamma8+KqiDi+ff/yiFgMEBGHApv6WpkkSZIkSRIQ3S77EhGLaJ0u8mhgJXA4cEP79qrMvLypgQfsv7jqujI5NlqcmTVrTnHmrnW3FGcABmKwOLPPE15fnHnyKXsVZ4YjijMA//nZ1cWZ+V+/pDiz9riHF2dajZUv850+d0Vx5q7nPaT5RZOIn60vDy0of097PmFueTvAppHm10x0+4Xl7+mUJQeWNwS8+qEnFGeGh+YXZ+6867fFmVZb5cv9o1d+tjgzRt1hiS9/0POLM7MGh4szQ7Pq+t/6DauKM3u88C3lDc1rGpOf3O0ffVtxZqhim/O6/zmtOAPwnseUL4vRsfK/MQzNmlecAZjzjJcWZ8YOmF2cWfCtuu/vdRe/vzizx6v+uThzyksPLM4AvPOKFcWZNddW/A1ppHyX7LF/Wr6eAPjfZ/9nceb557ywOHPWmbcVZwAYLN9XirvK901zYfl2HmBgRfnnGxd9rThTs78NMHvB3sWZu+9aXpyJaDpIfHK3rCzf/6u5FGbNehbgwuU/LM68/qryzDsf+IjiDMDD93hQceaWtbfV/QKyjdh/5/22y2ulLr/zxm3qc+u6RsjMVcCLImIhcFD79cszs3wrK0mSJEnSNqZmcEtTr6fhzMxcDTQeZSFJkiRJkjTV6o6vlSRJkiRJmiYOXkiSJEmSpBmtbhYcSZIkSZJ2AIlzXswEHnkhSZIkSZJmtK6DFxGxd0R8OCI+GBG7RcTJEXFlRHw+IvaZriIlSZIkSdKOq+nIi08APwFuAL4LrAeeDHwf+EinUEQsiYhlEbHsjrW3TlGpkiRJkiRpR9Q0eLFXZr4/M08Fds7M0zLzhsx8P3DfTqHMXJqZizNz8S7z95jSgiVJkiRJ0o6lacLO8YMbn+rynCRJkiRJ253Msa1dgmgegPhyRCwAyMw3bX4wIg4Gru1nYZIkSZIkSdB85MW5tAc4ImIucCJwOK15MF7S39IkSZIkSZKaj7z4OLCuff+9wCLgtPZjZ/WxLkmSJEmSJKCHOS8yc6R9f3FmHt6+f1FEXNa/siRJkiRJ2voyc2uXIJqPvLgqIo5v3788IhYDRMShwKa+ViZJkiRJkgREt1GkiFhE63SRRwMrac13cUP79qrMvLypgUe89Ky6YapZURyJDeWzwI7NrbtoyuCa0eLM6MKmA122NPagecUZbq0bV4q15e+JTeUfb+4xVN4OwOzyz2r2D1YVZzYcsbA4AxA3bywPDZX385w/WN4OwGDFd6qin3PInPIMMHT+neWhirVLDpQvB4CoGHHfeNiC8oZq10n/t7Y8c3f55zs2XHmhqdHy5TfyoPnFmVhd0WeBWdffXd5WxXva+LCKPgEsOO+3xZm791pUnJm1bqT5RZPYcFDFtqpiVTZwW119A3eX7x9sekDFe1pUuX6ucXfFCrBiObCxbob9WFeey90r9g8q9kOAunXtuvL1S9xR12dr9oNn3VixH1Jp0+Hl67LhH60uzuRQ3TZnbE55bvCu8s9q4Jr/Lc4A7PXRvyjOvPOBjyjOvObyHxZnAO5826+LM9/92t/X7WBtI/beac/t8tCLm++6ZZv63Lr+Np2Zq4AXRcRC4KD265dn5orpKE6SJEmSJKmnQwEyczXQeJSFJEmSJEnbk8y6o9A0tSqP/5UkSZIkSZoeDl5IkiRJkqQZzcELSZIkSZI0oxVf/iIi9szMW/pRjCRJkiRJM0m3K3Rq+nQdvIiIXSc+BFwcEQ+ldZnV2/tWmSRJkiRJEs1HXqwEJl7odz/gx0AC95ssFBFLgCUABz3qBez5h0fduyolSZIkSdIOq2nOi9cDPwOOzcyDMvMgYHn7/qQDFwCZuTQzF2fmYgcuJEmSJEnSvdF18CIzTwdOAN4cEe+OiJ1oHXEhSZIkSZI0LRon7MzM5cBxEXEs8C1gXt+rkiRJkiRpBsgc29oliIYjLyLi4RGxsP3j+cD3gKsi4rSIWNT36iRJkiRJ0g6vac6LjwPr2vffAwwBJ7cfO6tvVUmSJEmSJLU1nTYykJkj7fuLM/Pw9v2LIuKy/pUlSZIkSZLU0nTkxVURcXz7/uURsRggIg4FNvW1MkmSJEmStrLcTv/b1kRm56Lb81q8F3g0sBI4HLihfXtVZl7e1MAf73d41VLJHC3OzBqcU5y5a90txRmAgYHB4sy+j/+H4sxfvHXv4szcitoAPv2ZO4sz879+SXFm7bMeUZxpNdY01ralBZ+9rDiz5vkPLc4ADPx0XfOLJsidGufM3cJeT5xbnAHYNNL8moluu2B9ceZtLzuovCHglQ85vvlFEwwPzS/O3LnmpuIMwPCs8vXLmVf/R3FmrMs6uZslD/yr4sysweHizPCsujmb1224sziz1wtOLs7kgrr138qPlLdVsyze8IN3FmcATn/0PxVnxkbL/8YwNFS3fpnzjJcVZ8YOmF2cWfCt3xZnAH71o/cVZ/Z81b8UZ2rXf6ddfnNxZs3PK/6GNFK+fnnik8o/J4Dv/uVnizPHf/UlxZkzP7ayOAPAQBRHYlX5vmnuXLdOGlhR/vnGRV8rzuRY+XsCmD1/z+LM+rtuLM4MDAwVZwBW3Nr4K8oWxiqWRVI3ieOFy39YnHnN5eWZdz+kbp/7yN0fUJy5dd0d5V+qbcju83be9n7T78HKdXduU59b19+cMnMV8KL2pJ0HtV+/PDNXTEdxkiRJkiRJPf3ZNzNXA+VDmJIkSZIkSfdS+THrkiRJkiTtIDLrThHS1CqfRECSJEmSJGkaOXghSZIkSZJmNAcvJEmSJEnSjOacF5IkSZIkdZCVl7LX1Op65EVEPGnc/UUR8bGIuCIi/j0i9uqSWxIRyyJi2R1rK6+/LUmSJEmSRPNpI28fd/904CbgL4BLgI92CmXm0sxcnJmLd5m/+72vUpIkSZIk7bBKThtZnJmHte+fEREv7EM9kiRJkiRJ99A0eLFnRLwGCGBhRET+/oQfJ/uUJEmSJEl91zR48W/ATu37nwR2B26NiL2By/pYlyRJkiRJW13m2NYuQTQPXnwD+GlmroqIecCJEfFQ4CfA3/a9OkmSJEmStMNrOvXj48Da9v33AAuB04B1wFn9K0uSJEmSJKml6ciLgcwcad9fnJmHt+9fFBGX9a8sSZIkSZKklqYjL66KiOPb9y+PiMUAEXEosKmvlUmSJEmStJXldvrftiZ+f/GQSZ6MWAS8F3g0sBI4HLihfXtVZl7e1MCXb/xe1VIZIIoza0Y3FmcOXrB3cQZgZGy0OPN3X7+2OLP6DW8rzqzfsLo4A7DnCW8tzjzsufOLMz/+aF19s+4oHy8b/OvdijMDH7mhOAOw9uG7F2diXfnkP7O/eUFxBmBg1tzizPrHHFmcue5Dry7OAJzzmwuLMxvHyvvErrMXFWcARsZGml80wdMP/rPizPoNdxVnAL5asfxq1mPDA0PFGYDhwfLciz90cXGm5jsF8N5XP7g4U9P/nvcHTyvOALzj8k8UZ/afs0tx5q6R9cUZgLd86jfFmYHfbCjODB2zsDgDcNYTFhdnnnvyBcWZn73vZcUZgIc+tDy34UHlfTaHyi8Ud/uX3lGcAXjd/55enHnbw5YUZ/Z+Q119bKpYV8wuX35xW/m2AyDvO7s484onl2/fhmOwOANw3m3l+3JP2r28vrEuv6d0c/gu9y/OzBooXxarN65tftEk/uyARxVnHvDYNxVnrrqgfN8e4OKVVxdnDpq3b/kvb9uQnWfP2/Z+0+/BnRvWbVOfW9fTRjJzFfCiiFgIHNR+/fLMXDEdxUmSJEmSJDXNeQFAZq4GGo+ykCRJkiRJmmo9DV5IkiRJkrQj6jbVgqZP+cl7kiRJkiRJ08jBC0mSJEmSNKMVD15ERPnlGyRJkiRJkip1nfMiIk4F3pWZKyNiMfB5YCwihoAXZGb5tfkkSZIkSdpGZNZdil1Tq+nIi6dk5sr2/XcCz87Mg4EnAh0v4B0RSyJiWUQs++ZnzpmiUiVJkiRJ0o6o6WojsyJiVmaOAHMz8xKAzLw2ImZ3CmXmUmApwJdv/J5Ts0qSJEmSpGpNR158CPhaRBwNfCMi3hsRj42IU4DL+l6dJEmSJEna4XU98iIz3x8RVwIvBw5tv/4Q4Gzgn/tenSRJkiRJ2uF1PfIiIh4O/Dgznw38CfAlYAy4PzCv/+VJkiRJkrT1jJHb5e3eiIjjIuLqiBhrX9yj0+ueFBE/i4hfRMSJ4x4/KCJ+1H78PyNiuKnNptNGPg6sa99/D7ATcGr7sbOa/nFJkiRJkrTduQp4BvC9Ti+IiEHgg8CfAX8M/FVE/HH76dOAM9oXBLkDeElTg00Tdg60J+sEWJyZh7fvXxQRlzX945IkSZIkafuSmdcARES3lx0J/CIzf9V+7X8AT42Ia4Cjgb9uv+6TwMnAh7v9Y01HXlwVEce371+++XCQiDgU2NSQlSRJkiRJO6b9gBvG/by8/dhuwJ3jDpTY/Hh3mdnxBiwCPgH8EvgRrQGLXwEXAg/plu3lBiyZjsx0tuV7sj7r2/oZ67M+65sZbVmf9e0I78n6rM/6vG2rN2AJsGzcbcmE58+ndXrIxNtTx73mAlpnaUz27z8TOHPcz88HPgDsTuuIjM2PHwBc1Vhvj29qIfAQ4GHAXlO4sJZNR2Y62/I9WZ/1bf2M9Vmf9c2MtqzP+naE92R91md93nbkG90HLx4JfHPcz29s3wJYCcya7HWdbk2njQCQmasz8/LMvDQzV/SSkSRJkiRJO6xLgEPaVxYZBp4DnJOtEYvv0joyA+CFwJeb/rGeBi8kSZIkSZIAIuLpEbGc1lET50bEN9uP7xsRXwPI1pwWrwS+CVwDfD4zr27/E28AXhMRv6A1B8bHmtpsutpIvy2dpsx0tuV7mv62rG/6M9PZlvVNf2Y627K+6c9MZ1vWN/2Z6WzL9zT9bVnf9Gems63ttT5thzLzS8CXJnn8t8CTx/38NeBrk7zuV7SuRtKzaJ9jIkmSJEmSNCN52ogkSZIkSZrZttKMpE8Cfgb8Ajixx8zHgVvo4RIq4zIH0JoI5CfA1cCre8jMAS4GLm9nTilobxD4P+CrBZnrgSuBy+hxBl9gZ+ALwE9pnTv0yB4yf9BuY/NtNfB3PeT+vr0crgI+B8zpIfPq9uuv7tbGZJ8psCvwLeDn7f/v0kPmuHZbY3Se6Xay3Dvby/AKWoc87dxD5m3t118GnAfs22s/BV4LJLB7D+2cDNw47vN6cq/fCeBv2+/rauAdPbT1n+PauR64rMfldxjww819Fziyh8xDgB/Q6vNfARb28p3t1i+6ZDr2iy6Zpj7RKdexX3TKdOsXXdrp2i+6tdWpX3Rpq2O/6JJp6hOdch37BR3WycBBtC7h/Yt2rcM9ZF7Zfv0W38OG3GdpbbOuotWvh3rIfKz92BW01tcLmjLjnn8fsKagvk8A1437vA7rIRPAvwDX0tqOvKqHzPfHtfFb4Owe63s88ON27iLg4B4yR7czVwGfpD0b+YT27rHN7dYnumS69okuuY59okumY5/olGnqE13a6tgnumQ69okuma59okuuY5/okumlT1zPhH0qmvcrJst03a/okOm6/eiSa9qv2CIz7rlO+xWTtXMyzfsVk7ZF9/2Kydrqul/RIXMY3bcfk2W67lO0X7MzE/aZae4Tk2Wa+sRkmV76xGS5pj6xRaaHPjFZOyfT3CcmbYsufcKbt37epr/B1sbol8D9gGFaG/I/7iH3GOBwygYv9gEOb9/fidYGuWtbtDbeC9r3h2jtCD2ix/ZeA/w75YMXHXeYOmQ+CZzQvj882cqwh8/gZuC+Da/bj9bOz9z2z58HXtSQeSCtHYt5tOZUOZ9Jdko6fabAO2gPaAEnAqf1kPkjWoMzF9B58GKy3DH8/vI8p/XY1vhfql4FfKSXfkrrl7ZvAr+e+Hl3aOdk4HWl3wngce1lPrv985691Dfu+dOBN/fY1nnAn7XvPxm4oIfMJcBj2/dfDLxtQmbS72y3ftEl07FfdMk09YlOuY79olOmW7/o0k7XftEl17FfdKuvU7/o0k5Tn+iU69gv6LBOprU+ek778Y8AL+8h81DgQDqsd7vkntx+LmgN4vbS1vg+8W7GDdR3yrR/Xgx8mskHLzq19QngmR36RKfM8cCngIFJ+kTjdhD4IvCCHtu6Fvij9uOvAD7RkPn/gBuAQ9uPvxV4ySTv7R7b3G59okuma5/okuvYJ7pkOvaJTpmmPtGlrY59okumY5/oVl+3PtGlrY59YrIMrSOFe+kTW3yONO9XTJbpul/RIdN1+9El17RfMWnfpPt+xWTtnEzzfsVkuab9iknrG/f8FvsVHdpp2n5Mlum6T9F+fIt95h76xGSZpj4xWaaXPjFZrqlPTPp7QEOfmKydXvrEZLmufcKbt37etsZpI0cCv8jMX2XmRuA/gKc2hTLze8DtJQ1l5k2Z+eP2/btojRju15DJzFzT/nGofcumtiJif+ApwJklNZaKiEW0fin8GEBmbszMOwv/mccDv8zMX/fw2lnA3IiYRWtA4rcNr/8j4EeZuS5bs8teCDxjshd2+EyfSmtFSfv/T2vKZOY1mfmzbkV1yJ3XrhFao/3795BZPe7H+UzoG1366RnAP0x8fUOmqw65lwOnZuaG9mtu6bWtiAjgWbR2xHtpK4GF7fuLmNA3OmQOBb7Xvv8t4C8nZDp9Zzv2i06Zbv2iS6apT3TKdewXDeuhSftFzbqrIdexXzS1NVm/6JJp6hOdch37RZd18tG0/hoEW/aJSTOZ+X+ZeX2X5dcp97X2c0nrKIH9e8isHrf85nLPPjFpJiIGaf2l7h9K6uv0fhoyLwfemplj7dfd0kOG9ntaSGv5n91jWx37RYfMKLAxM69tP77FumLiNre9nDv2icky7fa79okuuY59okumY5/olGnqE51yTTpkOvaJpnY69Ykuua7rikkyu9HQJ7roul8xmW7bjy6ZrtuPLrmu+xVddNyvmGJd9yu66bZfMYmufaKDrvsUXfaZO/aJTplufaJLpmuf6JLr2Ccafg+YtE/U/u7QJVfdJ6R7a2sMXuxHa/R8s+X0sFN+b0XEgbT+wvKjHl47GBGX0Trk/VuZ2ZgB3kNrhTFWWFoC50XEpRGxpIfXHwTcCpwVEf8XEWdGxPzCNp9DDxuSzLwReBfwG+AmYFVmntcQuwp4dETsFhHzaI2eH1BQ216ZeVP7/s3AXgXZe+PFwNd7eWFE/EtE3AA8F3hzD69/KnBjZl5eWNMrI+KKiPh4ROzSY+ZQWsv/RxFxYUQcUdDeo4EVmfnzHl//d8A728viXcAbe8hcze8HK4+jS9+Y8J3tqV+UfM97yHTtExNzvfSL8Zle+8Uk9fXULybkeuoXHZZF134xIfN39NgnJuS69ouJ62RaR+/dOW6ncIvtSOV6vGsuIoaA5wPf6CUTEWfR6q9/CLy/h8wraV37/CY66FLfv7T7xRkRMbuHzP2BZ0fEsoj4ekQc0utyoLWj/+0JO9jdcicAX2tfTu35wKndMrQGA2ZFxOL2S57JluuK93DPbe5uNPSJSTK96pjr1Cc6Zbr1iQ6Zxj7Rpb6OfaJDpmuf6NIOdOkTHXJd+8QkmZU09wmYfJ+qaftRuh/WS6bT9mPSXMP2Y4tMD9uPTvU1bT8myzVtP7oti07bj8kyf0f37cdkmaZ9ik77zN36RM1+di+ZyfpEx1yXPjFppqFPdKuvW5/olLs3+5rSvZPTfKgHrQ3OmeN+fj7wgR6zB1Jw2si43ALgUuAZhbmdaZ2f/cCG1/058KH2/aMoO21kv/b/96R1Cs1jGl6/GBgBHt7++b1Mcphcl/wwrZ2AvXp47S7Ad4A9aP017GzgeT3kXtJe3t8DPgy8p9fPlNbO5/jn7+i1H9DltJGG3Em0zkWMkj5Ha8O6xZwo4zO0jlb5EbCo/fP1TH7458TlsBet03sGaJ2D/PEel99VtHaIg9ZRTtdNfF9dlsOHgdcWfFbvA/6yff9ZwPk9ZP6Q1qGhlwJvAW7r0NY9vrM99otJv+fd+kWXTMc+0S3X0C9+lynoFxOXQ6/9YmKul37RaVl07BeTtNPYJzrkeu0XO9NaJz+K1hF8mx8/YLI+PSHzwHGPTbq8e8j9G93XZ5NlBoEPAcc3ZB5D69z/zYcYdzxFYGJbtE7HCWA2rb8ibnHq1ySZNZs/13af/H7Be/r65s+5x/r+m99vs17PuH2ALplH0ppP4WLgn7nnnCtbbHOB3bv1ickyE9qetE/0kNuiT/SQ2aJPdHhP+zb1iU5tdesTXTId+0QP72nSPtGlrY59okumY58Yl91in4qG7cdkmXHPXcDkpwh0y3Tbp+i6z8ck248O76nr9qNDpnH70SHXdfvRsCwm3X50aKfr9qNDpuu2gw77zN36RKdMtz7RQ2bSPtGUm6xPdMi8s1uf6LIcuvaJLrnGfQpv3vp1m/4GWxufb477+Y3AG3vMHkjh4AWtX7q/Cbymst4303w+2L/S+ivP9bRGcNcBn6lo6+Qe2tobuH7cz48Gzi1o46nAeT2+9jjgY+N+fgHtHYqC9t4OvKLXz5TWBGj7tO/vA/ys134w2QalKQe8iNZkT/NK+xxwnw51/C4DPIjWXxOvb99GaB3JsndBOz0/R+uvf48b9/MvgT16WA6zgBXA/gWf1arNGytaG7DVhbUfClw8yeNbfGeb+sVkmaZ+0SnTQ5/ouk6ZrF9MzPTSL3poZ9Jl22H5de0XXZZFx37RoZ1e+kTT+5q0X4x7/s20ftlZye9/qbvHdqVD5nXjfr6eHuYaGp+jtWN8Nu35AHptq/3YY+gyqN3OvIXW9mNznxhj3C/jBW0d1UNbr6M10dpB4z6rVT0uh92B2+ht8ubNn9UvJ3w/flL4no4BPj/u58m2uZ/t1ic6ZD4z7vlJ+0S3XKc+0dTWZH2iQ+aOpj7RY1tH9dDWZ7r1iYbl0LFPdMid261P9Pie7tEnOvSlk2n19cb9iomZcT9fQJf9iokZGrYf3doatyw67ue2M/9ED/sVDe0c2K2dCcuvcb+iw7Jo3K+Y0E7j9qPhPW2x7aDDPnO3PtEp061PdMt06xNNbU3WJzpkvt2tT/TYzhZ9osvy67lPePM21betcdrIJcAhEXFQRAzTOoXhnH40FBFB6zytazLz3T1m9oiIndv35wJPpLVB7ygz35iZ+2fmgbTez3cy83k9tDU/InbafJ/WxviqhrZuBm6IiD9oP/R4WjP39+qv6O3cQ2it+B4REfPay/LxtM5R7yoi9mz//z60/nrz7wX1nQO8sH3/hcCXC7JFIuJJtA5LPTYz1/WYGX8Y7VNp7htXZuaemXlgu38spzVh4c0N7ewz7sen09Avxjmb1kRKRMSh/P5ImyZPAH6amct7bAda56M+tn3/aFqzdnc1rm8MAG+iNane+Oc7fWc79ovK7/mkmaY+0SXXsV9MlmnqF13a6dovuiyLs+nQLxqW36T9okuma5/o8r469osO6+RraP2F/pntl03sE8Xr8W65iDgB+FPgr7I9H0BD5mcRcfC493ws9+wTk2Uuzcy9x/WJdZl5cI/17TOuracxrl90WRZn0+4TtD6za3vIQGuZfzUz7+5x+V0DLGr3O8Y91vSeNveJ2cAbGNcnOmxzn0uXPlG7ne6U69YnJssAz+/WJzq0s0tTn+hSX8c+0WVZnE2HPtGw/Dr2iQ7L4ql06RNd3lPHPtF+vNM+VbftR/F+WKdMD9uPTrlu24/JMpc0bD86tdO0/ei0LM6m8/aj2/LrtP3olOm4/ejynrruU3TZZ+7YJ2r2sztlmvpEl1zHPtEh8+NufaJLO137RJdlcTZ1+5rSvbc1RkxozYNwLa2RupN6zHyO1rwLm2h9KbeYZXqSzKNonSO3+XJDlzHJZYAmZB5M69JcV9D6Ek96+G2X/FH0eNoIrSuuXM7vLxHX67I4jNZlpK6gtQLZpcfcfFp/HVlU8H5OobXSvIrWbOeze8h8n9bK7XLg8SWfKa3zlr9Na6N1PrBrD5mnt+9voDXKv8VfYDvkfkFr/pXNfWPibM6TZb7YXhZX0Los134l/ZTJD++crJ1P07r01xW0NrL79Piehmn9Be0qWpeUO7qX+mjNTP83hZ/Vo2gdqnk5rcMVH9ZD5tW0vvvX0jrHeeIhlJN+Z7v1iy6Zjv2iS6apT3TKdewXnTLd+kWXdrr2iy65jv2iW3106Bdd2mnqE51yHfsFHdbJtNafF7c/s/9i3LqpS+ZVtPrECK0d5TMn1NcpN0Jre7W55jd3y9A6BPd/2p/VVbSOCljY1M6EWiY7RaBTfd8Z19ZnuOdlWTtldqb1F7Qraf1V8CG91Efrr45P6rCe6NTW09vtXN7O36+HzDtp/UL7M7pfcvsofn9aQcc+0SXTtU90yXXsE5NlmvpEp3aa+kSX+jr2iS6Zjn2iW33d+kSXtjr2iS6Zrn2CDvtUdN9+dMp02350yjRtPzrlum0/GvcT2XL70amdpu1Hp1y37UfH+ui8/ejUTsftR5dM132K9msOY8I+c7c+0SXTdV+zQ6Zrn+iSa9rX3CLTrU90aaeXfc3Jcl33Nb156+dt8+FZkiRJkiRJM9LWOG1EkiRJkiSpZw5eSJIkSZKkGc3BC0mSJEmSNKM5eCFJkiRJkmY0By8kSZIkSdKM5uCFJEmSJEma0Ry8kCRJkiRJM5qDF5IkSZIkaUb7/wHlN2xB3MC6xwAAAABJRU5ErkJggg==\n" }, "metadata": { "needs_background": "light" @@ -1371,64 +1519,130 @@ } ], "source": [ - "size = final_df.shape[1]\n", - "corr = final_df.corr()\n", + "#sns.heatmap(corr, annot = True, vmin=-1, vmax=1, center= 0, fmt='.1g', cmap= 'coolwarm', linewidths=1, linecolor='black', square=True, yticklabels=False, xticklabels=False)\n", + "size = imputed_df.shape[1]\n", + "corr = imputed_df.corr()\n", "plt.subplots(figsize=(20,20))\n", - "sns.heatmap(corr, vmin=-1, vmax=1, center=0, xticklabels=range(size), yticklabels=range(size))" + "sns.heatmap(corr, vmin=-1, vmax=1, center=0, xticklabels=range(size), yticklabels=range(size),cmap='mako')" ] }, { - "source": [ - "## PCA of the Final Dataset" + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "{0: 'Population with at least some secondary education (% ages 25 and older)', 1: 'Population with at least some secondary education, female (% ages 25 and older)', 2: 'Population with at least some secondary education, male (% ages 25 and older)', 3: 'Mean years of schooling, female (years)', 4: 'Mean years of schooling, male (years)', 5: 'Share of seats in parliament (% held by women)', 6: 'Adolescent birth rate (births per 1,000 women ages 15-19)', 7: 'Vulnerable employment (% of total employment)', 8: 'Total population (millions)', 9: 'Urban population (%)', 10: 'Labour force participation rate (% ages 15 and older), female', 11: 'Labour force participation rate (% ages 15 and older), male', 12: 'Sex ratio at birth (male to female births)', 13: 'Remittances, inflows (% of GDP)', 14: 'Foreign direct investment, net inflows (% of GDP)', 15: 'Population ages 15?64 (millions)', 16: 'Infants lacking immunization, measles (% of one-year-olds)', 17: 'Infants lacking immunization, DTP (% of one-year-olds)', 18: 'Gross fixed capital formation (% of GDP)', 19: 'Gender Inequality Index (GII)', 20: 'Life expectancy at birth (years)', 21: 'Expected years of schooling (years)', 22: 'Inequality-adjusted education index', 23: 'Inequality-adjusted life expectancy index', 24: 'Inequality in education (%)', 25: 'Inequality in life expectancy (%)', 26: 'Mean years of schooling (years)', 27: 'Life expectancy index', 28: 'Income index', 29: 'Education index', 30: 'Unemployment, youth (% ages 15?24)', 31: 'Private capital flows (% of GDP)', 32: 'Life expectancy at birth, female (years)', 33: 'Life expectancy at birth, male (years)', 34: 'Young age (0-14) dependency ratio (per 100 people ages 15-64)', 35: 'Old-age (65 and older) dependency ratio (per 100 people ages 15-64)', 36: 'Expected years of schooling, female (years)', 37: 'Expected years of schooling, male (years)', 38: 'Population ages 65 and older (millions)', 39: 'Population under age 5 (millions)', 40: 'Exports and imports (% of GDP)', 41: 'Human Development Index (HDI)', 42: 'Unemployment, total (% of labour force)', 43: 'HDI rank', 44: 'Youth not in school or employment (% ages 15-24)', 45: 'Labour force participation rate (% ages 15 and older)', 46: 'Employment to population ratio (% ages 15 and older)', 47: 'Employment in agriculture (% of total employment)', 48: 'Employment in services (% of total employment)', 49: 'Working poor at PPP$3.20 a day (% of total employment)', 50: 'Total unemployment rate (female to male ratio)', 51: 'Youth unemployment rate (female to male ratio)', 52: 'Share of employment in nonagriculture, female (% of total employment in nonagriculture)', 53: 'Gross capital formation (% of GDP)', 54: 'Gross domestic product (GDP), total (2017 PPP $ billions)', 55: 'GDP per capita (2017 PPP $)', 56: 'Gross national income (GNI) per capita (constant 2017 PPP$)', 57: 'Gender Development Index (GDI)', 58: 'Estimated gross national income per capita, female (2017 PPP $)', 59: 'Estimated gross national income per capita, male (2017 PPP $)', 60: 'Human Development Index (HDI), female', 61: 'Human Development Index (HDI), male', 62: 'Inequality-adjusted income index', 63: 'Overall loss in HDI due to inequality (%)', 64: 'Inequality in income (%)', 65: 'Coefficient of human inequality', 66: 'Inequality-adjusted HDI (IHDI)'}\n" + ] + } ], - "cell_type": "markdown", - "metadata": {} + "source": [ + "map_columns = {}\n", + "count = 0\n", + "for col in imputed_df.columns:\n", + " map_columns[count] = col\n", + " count += 1\n", + "\n", + "print(map_columns)\n", + "\n", + "#Makes it easier to check the correlations" + ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 28, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "[[26.08 13.22 36.92 ... 1.308 29.77273216\n 0.36028022]\n [30.232 23.133 38.056 ... 0.906 31.733\n 0.397 ]\n [93.174 93.7 92.497 ... 0.799 10.893\n 0.708 ]\n ...\n [75.478 74.977 78.207 ... 1.161 31.163\n 0.468 ]\n [44.44 38.488 54.068 ... 1.079 30.592\n 0.401 ]\n [64.935 59.792 70.783 ... 1.269 22.525\n 0.441 ]]\n(195, 67)\n(195, 67)\n" + "[[ 26.08 13.22 36.92 ... -14.31206116 19.79533568\n 0.42346498]\n [ 30.232 23.133 38.056 ... 28.9 31.733\n 0.397 ]\n [ 93.174 93.7 92.497 ... 13.179 10.893\n 0.708 ]\n ...\n [ 75.478 74.977 78.207 ... 56.996 31.163\n 0.468 ]\n [ 44.44 38.488 54.068 ... 44.84 30.592\n 0.401 ]\n [ 64.935 59.792 70.783 ... 28.769 22.525\n 0.441 ]]\n" ] } ], "source": [ - "x = final_df.loc[:, final_df.columns].values\n", + "x = imputed_df.loc[:, imputed_df.columns].values\n", "print(x)\n", - "x = StandardScaler().fit_transform(x)\n", - "\n", - "print(final_df.shape)\n", + "x = StandardScaler().fit_transform(x)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "(195, 67)\n(195, 67)\n" + ] + } + ], + "source": [ + "print(imputed_df.shape)\n", "print(x.shape)" ] }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "array([[-1.213211 , -1.49949287, -0.95026927, ..., -3.68962647,\n 0.08912291, -0.98754125],\n [-1.06825946, -1.17214393, -0.90913571, ..., 0.45316976,\n 1.47092771, -1.13989063],\n [ 1.12912485, 1.15813273, 1.06212486, ..., -1.05402286,\n -0.94133748, 0.65042431],\n ...,\n [ 0.51133525, 0.53985833, 0.54469657, ..., 3.14676964,\n 1.40494925, -0.73116921],\n [-0.57224033, -0.66508825, -0.32935532, ..., 1.98135819,\n 1.33885503, -1.11686407],\n [ 0.14326588, 0.03841642, 0.27588008, ..., 0.44061062,\n 0.40508616, -0.88659848]])" + }, + "metadata": {} + } + ], + "source": [ + "display(x)" + ] + }, + { + "source": [ + "### We want to check if the mean of the normalized dataset is 0 and std is 1\n", + "### It looks like it" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 31, "metadata": {}, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ - "(-1.713134035701734e-17, 1.0)" + "(-6.274693313304368e-17, 1.0)" ] }, "metadata": {}, - "execution_count": 21 + "execution_count": 31 } ], "source": [ "np.mean(x), np.std(x)" ] }, + { + "source": [ + "### To show the normalized data" + ], + "cell_type": "markdown", + "metadata": {} + }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -1436,167 +1650,167 @@ "data": { "text/plain": [ " Population with at least some secondary education (% ages 25 and older) \\\n", - "0 -1.242745 \n", - "1 -1.094493 \n", - "2 1.152920 \n", - "3 0.408555 \n", - "4 -0.133071 \n", + "0 -1.213211 \n", + "1 -1.068259 \n", + "2 1.129125 \n", + "3 0.401330 \n", + "4 -0.128239 \n", "\n", " Population with at least some secondary education, female (% ages 25 and older) \\\n", - "0 -1.537407 \n", - "1 -1.202607 \n", - "2 1.180706 \n", - "3 0.430388 \n", - "4 0.014194 \n", + "0 -1.499493 \n", + "1 -1.172144 \n", + "2 1.158133 \n", + "3 0.424512 \n", + "4 0.017579 \n", "\n", " Population with at least some secondary education, male (% ages 25 and older) \\\n", - "0 -0.972184 \n", - "1 -0.930083 \n", - "2 1.087538 \n", - "3 0.377085 \n", - "4 -0.308501 \n", + "0 -0.950269 \n", + "1 -0.909136 \n", + "2 1.062125 \n", + "3 0.367996 \n", + "4 -0.301836 \n", "\n", - " Share of seats in parliament (% held by women) \\\n", - "0 0.366696 \n", - "1 0.601335 \n", - "2 0.559447 \n", - "3 2.000054 \n", - "4 1.442235 \n", + " Mean years of schooling, female (years) \\\n", + "0 -1.941779 \n", + "1 -1.318987 \n", + "2 0.385514 \n", + "3 0.606718 \n", + "4 0.812015 \n", "\n", - " Vulnerable employment (% of total employment) Urban population (%) \\\n", - "0 1.554740 -1.443911 \n", - "1 1.044887 0.299618 \n", - "2 0.556868 0.083835 \n", - "3 -0.832710 1.240433 \n", - "4 -0.595953 1.413060 \n", + " Mean years of schooling, male (years) \\\n", + "0 -1.112677 \n", + "1 -0.984083 \n", + "2 0.565966 \n", + "3 0.547752 \n", + "4 0.607859 \n", "\n", - " Labour force participation rate (% ages 15 and older), female \\\n", - "0 -2.035680 \n", - "1 1.612659 \n", - "2 -0.355562 \n", - "3 0.155448 \n", - "4 -0.087393 \n", - "\n", - " Labour force participation rate (% ages 15 and older), male \\\n", - "0 0.233312 \n", - "1 0.733974 \n", - "2 -0.953924 \n", - "3 -0.052027 \n", - "4 0.006454 \n", - "\n", - " Remittances, inflows (% of GDP) \\\n", - "0 -0.027719 \n", - "1 -0.796618 \n", - "2 0.835683 \n", - "3 -0.508438 \n", - "4 -0.776802 \n", + " Share of seats in parliament (% held by women) \\\n", + "0 0.361897 \n", + "1 0.596509 \n", + "2 0.554626 \n", + "3 1.995072 \n", + "4 1.437315 \n", "\n", - " Foreign direct investment, net inflows (% of GDP) ... \\\n", - "0 -0.441756 ... \n", - "1 -0.915527 ... \n", - "2 0.386758 ... \n", - "3 -0.105242 ... \n", - "4 -0.307092 ... \n", + " Adolescent birth rate (births per 1,000 women ages 15-19) \\\n", + "0 0.532975 \n", + "1 2.562666 \n", + "2 -0.694136 \n", + "3 -0.728367 \n", + "4 0.379322 \n", "\n", - " Population under age 5 (millions) \\\n", - "0 0.225085 \n", - "1 0.227833 \n", - "2 -0.259851 \n", - "3 -0.906248 \n", - "4 0.056909 \n", + " Vulnerable employment (% of total employment) Total population (millions) \\\n", + "0 1.556274 -0.009236 \n", + "1 1.051012 -0.051786 \n", + "2 0.567386 -0.249884 \n", + "3 -1.213266 -0.269075 \n", + "4 -0.575057 0.036887 \n", "\n", - " Adolescent birth rate (births per 1,000 women ages 15-19) \\\n", - "0 0.534851 \n", - "1 2.593772 \n", - "2 -0.709932 \n", - "3 -0.827685 \n", - "4 0.378985 \n", + " Urban population (%) ... Gender Development Index (GDI) \\\n", + "0 -1.443911 ... -3.764694 \n", + "1 0.299618 ... -0.482479 \n", + "2 0.083835 ... 0.378430 \n", + "3 1.240433 ... 1.606995 \n", + "4 1.413060 ... 0.728174 \n", "\n", - " Sex ratio at birth (male to female births) \\\n", - "0 0.462524 \n", - "1 -1.216161 \n", - "2 2.141209 \n", - "3 0.381230 \n", - "4 -0.656599 \n", + " Estimated gross national income per capita, female (2017 PPP $) \\\n", + "0 -0.880471 \n", + "1 -0.605187 \n", + "2 -0.241164 \n", + "3 1.807789 \n", + "4 0.001609 \n", "\n", - " Young age (0-14) dependency ratio (per 100 people ages 15-64) \\\n", - "0 1.513894 \n", - "1 2.161911 \n", - "2 -0.932226 \n", - "3 -0.952069 \n", - "4 -0.324548 \n", + " Estimated gross national income per capita, male (2017 PPP $) \\\n", + "0 -0.858135 \n", + "1 -0.720907 \n", + "2 -0.329338 \n", + "3 1.645966 \n", + "4 0.105056 \n", "\n", - " Old-age (65 and older) dependency ratio (per 100 people ages 15-64) \\\n", - "0 -0.950705 \n", - "1 -0.999777 \n", - "2 0.730564 \n", - "3 0.859705 \n", - "4 0.390002 \n", + " Human Development Index (HDI), female Human Development Index (HDI), male \\\n", + "0 -1.898855 -1.037358 \n", + "1 -0.901924 -0.907477 \n", + "2 0.509877 0.506782 \n", + "3 1.183786 0.806977 \n", + "4 0.850444 0.744897 \n", "\n", - " HDI rank Total unemployment rate (female to male ratio) \\\n", - "0 1.364735 -0.115960 \n", - "1 0.976870 -0.308338 \n", - "2 -0.482239 -0.372276 \n", - "3 -1.091741 0.128707 \n", - "4 -0.907043 -0.191780 \n", + " Inequality-adjusted income index \\\n", + "0 0.259496 \n", + "1 -0.644363 \n", + "2 0.608240 \n", + "3 0.664195 \n", + "4 0.352855 \n", "\n", - " Youth unemployment rate (female to male ratio) \\\n", - "0 -0.049773 \n", - "1 -0.485075 \n", - "2 -0.600939 \n", - "3 0.062921 \n", - "4 -0.068182 \n", + " Overall loss in HDI due to inequality (%) Inequality in income (%) \\\n", + "0 0.022060 -3.689626 \n", + "1 1.394523 0.453170 \n", + "2 -0.962154 -1.054023 \n", + "3 -0.226792 1.145381 \n", + "4 -0.645497 0.094515 \n", "\n", " Coefficient of human inequality Inequality-adjusted HDI (IHDI) \n", - "0 1.192044 -1.315801 \n", - "1 1.408239 -1.110134 \n", - "2 -0.890168 0.631779 \n", - "3 -0.981317 1.074191 \n", - "4 -0.631542 0.749400 \n", + "0 0.089123 -0.987541 \n", + "1 1.470928 -1.139891 \n", + "2 -0.941337 0.650424 \n", + "3 -0.241610 0.809411 \n", + "4 -0.669900 0.771314 \n", "\n", "[5 rows x 67 columns]" ], - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Population with at least some secondary education (% ages 25 and older)Population with at least some secondary education, female (% ages 25 and older)Population with at least some secondary education, male (% ages 25 and older)Share of seats in parliament (% held by women)Vulnerable employment (% of total employment)Urban population (%)Labour force participation rate (% ages 15 and older), femaleLabour force participation rate (% ages 15 and older), maleRemittances, inflows (% of GDP)Foreign direct investment, net inflows (% of GDP)...Population under age 5 (millions)Adolescent birth rate (births per 1,000 women ages 15-19)Sex ratio at birth (male to female births)Young age (0-14) dependency ratio (per 100 people ages 15-64)Old-age (65 and older) dependency ratio (per 100 people ages 15-64)HDI rankTotal unemployment rate (female to male ratio)Youth unemployment rate (female to male ratio)Coefficient of human inequalityInequality-adjusted HDI (IHDI)
0-1.242745-1.537407-0.9721840.3666961.554740-1.443911-2.0356800.233312-0.027719-0.441756...0.2250850.5348510.4625241.513894-0.9507051.364735-0.115960-0.0497731.192044-1.315801
1-1.094493-1.202607-0.9300830.6013351.0448870.2996181.6126590.733974-0.796618-0.915527...0.2278332.593772-1.2161612.161911-0.9997770.976870-0.308338-0.4850751.408239-1.110134
21.1529201.1807061.0875380.5594470.5568680.083835-0.355562-0.9539240.8356830.386758...-0.259851-0.7099322.141209-0.9322260.730564-0.482239-0.372276-0.600939-0.8901680.631779
30.4085550.4303880.3770852.000054-0.8327101.2404330.155448-0.052027-0.508438-0.105242...-0.906248-0.8276850.381230-0.9520690.859705-1.0917410.1287070.062921-0.9813171.074191
4-0.1330710.014194-0.3085011.442235-0.5959531.413060-0.0873930.006454-0.776802-0.307092...0.0569090.378985-0.656599-0.3245480.390002-0.907043-0.191780-0.068182-0.6315420.749400
\n

5 rows × 67 columns

\n
" + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Population with at least some secondary education (% ages 25 and older)Population with at least some secondary education, female (% ages 25 and older)Population with at least some secondary education, male (% ages 25 and older)Mean years of schooling, female (years)Mean years of schooling, male (years)Share of seats in parliament (% held by women)Adolescent birth rate (births per 1,000 women ages 15-19)Vulnerable employment (% of total employment)Total population (millions)Urban population (%)...Gender Development Index (GDI)Estimated gross national income per capita, female (2017 PPP $)Estimated gross national income per capita, male (2017 PPP $)Human Development Index (HDI), femaleHuman Development Index (HDI), maleInequality-adjusted income indexOverall loss in HDI due to inequality (%)Inequality in income (%)Coefficient of human inequalityInequality-adjusted HDI (IHDI)
0-1.213211-1.499493-0.950269-1.941779-1.1126770.3618970.5329751.556274-0.009236-1.443911...-3.764694-0.880471-0.858135-1.898855-1.0373580.2594960.022060-3.6896260.089123-0.987541
1-1.068259-1.172144-0.909136-1.318987-0.9840830.5965092.5626661.051012-0.0517860.299618...-0.482479-0.605187-0.720907-0.901924-0.907477-0.6443631.3945230.4531701.470928-1.139891
21.1291251.1581331.0621250.3855140.5659660.554626-0.6941360.567386-0.2498840.083835...0.378430-0.241164-0.3293380.5098770.5067820.608240-0.962154-1.054023-0.9413370.650424
30.4013300.4245120.3679960.6067180.5477521.995072-0.728367-1.213266-0.2690751.240433...1.6069951.8077891.6459661.1837860.8069770.664195-0.2267921.145381-0.2416100.809411
4-0.1282390.017579-0.3018360.8120150.6078591.4373150.379322-0.5750570.0368871.413060...0.7281740.0016090.1050560.8504440.7448970.352855-0.6454970.094515-0.6699000.771314
\n

5 rows × 67 columns

\n
" }, "metadata": {}, - "execution_count": 22 + "execution_count": 32 } ], "source": [ - "feat_cols = final_df.columns.values.tolist()\n", + "feat_cols = imputed_df.columns.values.tolist()\n", "#print(feat_cols)\n", - "normalized_final_df = pd.DataFrame(x, columns=feat_cols)\n", - "normalized_final_df.head()" + "normalized_imputed_df = pd.DataFrame(x, columns=feat_cols)\n", + "normalized_imputed_df.head()" ] }, + { + "source": [ + "### Now we start with the PCA Part" + ], + "cell_type": "markdown", + "metadata": {} + }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 33, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "['PC1', 'PC2', 'PC3']\n['49.73', '7.93', '7.18']\n" + "['PC1', 'PC2', 'PC3']\n['49.70', '7.85', '7.20']\n" ] } ], "source": [ "num_components = 3\n", - "pca_final = PCA(n_components=num_components)\n", - "pComponents_final = pca_final.fit_transform(x)\n", + "pca_imputed = PCA(n_components=num_components)\n", + "pComponents_imputed = pca_imputed.fit_transform(x)\n", "component_col = ['PC'+str(i+1) for i in range(num_components)]\n", "print(component_col)\n", "\n", - "percentage_list = [element * 100 for element in pca_final.explained_variance_ratio_]\n", + "percentage_list = [element * 100 for element in pca_imputed.explained_variance_ratio_]\n", "percentage_list = ['%.2f' % elem for elem in percentage_list]\n", "print(percentage_list)" ] }, + { + "source": [ + "### PC stands for principal components" + ], + "cell_type": "markdown", + "metadata": {} + }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 34, "metadata": {}, "outputs": [ { @@ -1611,61 +1825,61 @@ "data": { "text/plain": [ " PC1 PC2 PC3\n", - "0 8.660925 3.855080 -0.080563\n", - "1 7.369314 -2.616149 0.028787\n", - "2 -3.287324 2.085875 -0.449373\n", - "3 -5.811149 -0.738707 -0.166838\n", - "4 -3.917583 0.676241 -0.271113" + "0 7.815705 3.771093 -0.133255\n", + "1 7.339138 -2.606812 0.272919\n", + "2 -3.214204 2.176000 -0.611012\n", + "3 -5.807156 -1.477608 -0.284501\n", + "4 -3.974595 0.524419 -0.239346" ], - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
PC1PC2PC3
08.6609253.855080-0.080563
17.369314-2.6161490.028787
2-3.2873242.085875-0.449373
3-5.811149-0.738707-0.166838
4-3.9175830.676241-0.271113
\n
" + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
PC1PC2PC3
07.8157053.771093-0.133255
17.339138-2.6068120.272919
2-3.2142042.176000-0.611012
3-5.807156-1.477608-0.284501
4-3.9745950.524419-0.239346
\n
" }, "metadata": {}, - "execution_count": 24 + "execution_count": 34 } ], "source": [ - "pc_final_df = pd.DataFrame(data = pComponents_final, columns = component_col)\n", - "print(pc_final_df.shape)\n", - "pc_final_df.head()" + "pc_imputed_df = pd.DataFrame(data = pComponents_imputed, columns = component_col)\n", + "print(pc_imputed_df.shape)\n", + "pc_imputed_df.head()" ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 35, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "Explained variation percentage per principal component: ['49.73', '7.93', '7.18']\nTotal percentage of the explained data by 3 components is: 64.84\nPercentage of the information that is lost for using 3 components is: 35.16\n" + "Explained variation percentage per principal component: ['49.70', '7.85', '7.20']\nTotal percentage of the explained data by 3 components is: 64.75\nPercentage of the information that is lost for using 3 components is: 35.25\n" ] } ], "source": [ "print('Explained variation percentage per principal component: {}'.format(percentage_list))\n", - "total_explained_percentage = (sum(pca_final.explained_variance_ratio_)*100)\n", - "print('Total percentage of the explained data by',pca_final.n_components,'components is: %.2f' %total_explained_percentage)\n", - "print('Percentage of the information that is lost for using',pca_final.n_components,'components is: %.2f' %(100-total_explained_percentage))" + "total_explained_percentage = (sum(pca_imputed.explained_variance_ratio_)*100)\n", + "print('Total percentage of the explained data by',pca_imputed.n_components,'components is: %.2f' %total_explained_percentage)\n", + "print('Percentage of the information that is lost for using',pca_imputed.n_components,'components is: %.2f' %(100-total_explained_percentage))" ] }, { "source": [ - "## 3 Main Principle Component is presented" + "### Outliers are a big problem as it can be seen from the graph" ], "cell_type": "markdown", "metadata": {} }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 36, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "{'0': 'PC1 49.73%', '1': 'PC2 7.93%', '2': 'PC3 7.18%'}\n" + "{'0': 'PC1 49.70%', '1': 'PC2 7.85%', '2': 'PC3 7.20%'}\n" ] }, { @@ -1677,7 +1891,7 @@ }, "data": [ { - "hovertemplate": "PC1 49.73%=%{x}
PC2 7.93%=%{y}
PC3 7.18%=%{z}", + "hovertemplate": "PC1 49.70%=%{x}
PC2 7.85%=%{y}
PC3 7.20%=%{z}", "legendgroup": "", "marker": { "color": "#636efa", @@ -1689,595 +1903,595 @@ "showlegend": false, "type": "scatter3d", "x": [ - 8.660925373030112, - 7.36931441039187, - -3.287323774612212, - -5.811149454434806, - -3.917583415567073, - -2.9338836176267127, - -1.3634938862156527, - -8.95719329714002, - -8.061102744290617, - -2.0143966716041626, - 9.518730559247157, - -8.83584022021243, - 8.101931475789897, - 9.390221152113469, - 3.7920355348972397, - -4.533593406252421, - -4.360984547988361, - -3.512033805407493, - -2.693074770407761, - -5.187274735018256, - 0.15634895125033405, - 1.327148550243007, - -0.5915289853603273, - -3.651639000535378, - -4.506113576087406, - 3.628606254985032, - 0.4220843585147365, - 12.680295441880574, - -7.967091555964078, - -4.194571416724602, - -2.275633082655154, - 8.366996344735632, - 7.300290963343796, - 8.926587475681194, - 5.557030223889865, - -0.5358221359930567, - 7.389569574497576, - 2.0766840364109256, - -2.7277717561457733, - -3.4448467607081747, - -6.890528980649567, - -7.618664623703192, - -8.793588332529188, - 5.030759542043407, - -0.8133041827675904, - -9.048869551995287, - -0.3224865164826, - -0.11270737710548943, - -0.21558223396562975, - 1.706906391115579, - 8.221535016841335, - -7.165904482034793, - 8.698629888933718, - -9.324042146819695, - -0.4363534601027277, - -7.403491382198684, - 2.137625968690034, - -3.2522807297427105, - 4.437806353565892, - 7.79742829320645, - 6.402924375558027, - -6.254361937358284, - -0.24840011661343397, - -5.9743490272615185, - 4.43695230324791, - 1.9170572823945042, - 4.8116043036306495, - 13.0309792014796, - 4.56048084557989, - 10.124601509654775, - 9.464432864991926, - 3.332273020710495, - 1.334235774731984, - -8.677829019013167, - 3.566237278455438, - 8.102761520239902, - -5.990221066605703, - 1.0212879422538246, - 3.799763414682114, - -8.961571182924617, - -2.0116371496465018, - 2.3452054287494515, - -8.998425604718578, - -7.192573125538015, - -6.69926394386997, - -0.6197240202964007, - -0.8871561941125945, - -8.160398493492213, - -4.375289152115088, - 5.384390076964414, - -0.7368806438860154, - 3.8542782035866976, - -6.959926349684004, - -2.912873268210257, - 5.11979306543985, - -0.8804355671773069, - 8.221737810503074, - -0.2959305965655109, - -6.745582778644443, - 6.607815336068809, - -6.665402163818996, - -10.22624722126282, - -6.383178963211472, - 1.6061607812886278, - -0.923072842836434, - -2.1045430816121162, - 7.742286990664149, - -0.3249499652865133, - -1.0545194081043436, - -0.8793745013263952, - -2.315936291337086, - 11.171093857013355, - -7.8586969724826385, - 5.10063014743016, - -4.671798219956093, - -1.1803364178532467, - 9.495409105780801, - 7.274862403400485, - -2.911851692298899, - 7.592600143178789, - -3.3239892133995954, - 4.158783210879166, - 11.659981452804312, - 8.106398056165082, - 2.082527374112786, - -8.882946614749645, - -9.40254395453483, - 4.960564659314305, - -0.45350878877708417, - -8.014766635562616, - -3.0901261913689666, - 6.6922476770592, - -4.707503064696859, - 0.7571221305201962, - -0.1676971430788005, - -5.956312959493098, - -9.131681154878528, - -6.951574928918852, - -7.842286950536407, - -1.0862985842844837, - -0.553407667927873, - -1.7756904913436278, - -2.284128602738151, - -1.0306200985471243, - 0.686392192277255, - 7.906495025661678, - -6.386655189132161, - -5.633462144999635, - 0.9379578630417558, - -5.340853869141102, - -4.103711688500217, - -4.6722331884107575, - 6.607486409903617, - -4.249172805924318, - 7.790891416947143, - 7.429333092490025, - -8.868267693969555, - 4.2617616621659735, - 9.739984460067737, - -1.2982756071941874, - 6.6997542096048734, - -4.044533181810401, - 11.37384943365761, - 2.9989471218939494, - 0.43928328385974, - -6.105665614117344, - -8.093367975526451, - -9.18598504844754, - -2.4745554817040665, - 4.837127138188524, - 7.551378070484332, - -1.2843924193698983, - 0.820800722755169, - 0.7473458450490823, - 5.365815568843352, - -0.7597514742681404, - -2.4373413206171173, - -0.7138582435099253, - -2.705881390776994, - 0.31476642032113766, - 7.71333296545075, - 7.186259568291081, - -3.7978657071531776, - -3.3979525762581626, - -7.75882743273823, - -0.5968403419780313, - -0.5838730219221859, - -0.007916107619517623, - -0.2041579547749093, - 4.88102780317078, - 0.015884491794824422, - 9.204539209440739, - 1.4973101808646454, - 6.220218114546498, - 5.442054166264446 + 7.815705391742462, + 7.339137705703802, + -3.214203916269259, + -5.80715643866871, + -3.9745954619497295, + -2.890966092672859, + -1.1134671652005752, + -9.02976272407463, + -8.089903395153193, + -1.9800675811561705, + 9.527366508949298, + -8.814781431817284, + 8.057536998694976, + 9.389458414018907, + 3.8049608938917885, + -4.5411540540591, + -4.23920966194199, + -3.1588756354356065, + -2.6858306608095894, + -5.136335371331304, + 0.12810416951246514, + 1.267042524569538, + -0.6885217978448994, + -3.65835391674737, + -4.182557988623389, + 3.7408392194080093, + 0.20400898125735614, + 12.56978154058819, + -8.050563036925059, + -4.288361890597987, + -2.3582248937799273, + 8.327761469360418, + 7.2752883396901575, + 8.856710810591405, + 5.533077430318204, + -0.6019520590967266, + 7.294069988360144, + 1.8970704667026417, + -2.788007359243617, + -3.0580619971246326, + -6.588294978619638, + -7.573929299906972, + -8.902789615997523, + 5.372849242136768, + -0.5339264068916624, + -9.082419175322016, + -0.3654413763172631, + -0.11787503537257654, + -0.26730624222407656, + 1.6301659735629148, + 7.904739443603567, + -7.157833186894553, + 8.762975653218588, + -9.194067425167436, + -0.3051455870997747, + -7.3806651712145515, + 2.1534605695235087, + -3.1876558033358795, + 4.47778550921977, + 7.862744607195441, + 5.901182830324904, + -6.354542916764469, + -0.4067551835511576, + -5.970468538879629, + 4.566984752150551, + 1.9292708308075317, + 4.772592533434519, + 13.069788552035853, + 4.367579870283229, + 10.18771836172564, + 9.546609925194428, + 3.268280023564391, + 1.3641510634203449, + -8.959144626756714, + 3.5239748566941724, + 8.09574152733288, + -5.997380117994976, + 1.0110406969635937, + 3.785140734566966, + -9.092556100865856, + -2.093224510897799, + 2.313017712713081, + -9.083314846698999, + -7.18731043401891, + -6.72232805979924, + -0.6159066258325677, + -0.9248226691956368, + -8.241936643448538, + -4.3512784393720105, + 5.314985585514629, + -0.634269111601688, + 3.6412780541396295, + -7.021759781450271, + -2.7879093551636958, + 5.21499904167344, + -0.5048660224959203, + 8.250222773015107, + -0.028671322512146755, + -10.239720758557572, + 6.6673450911698335, + -6.599811015887725, + -9.075382520720181, + -6.347740337271529, + 1.5171468658736802, + -1.362051712582059, + -2.037529218145667, + 7.7171716974342415, + -0.32339256579989906, + -1.1282922477603508, + 0.21885241143556144, + -2.31846231910023, + 11.205339947133302, + -7.361576598086409, + 4.790180540615756, + -4.5948425662985315, + -1.0509994004013095, + 9.471266868062813, + 7.273411428415602, + -2.89776118464564, + 7.513645783446732, + -2.9246343517899582, + 4.019324064053343, + 11.673093122705474, + 8.071012495061858, + 2.0699265091720696, + -8.997003865902158, + -9.445122207161843, + 5.101055040274665, + -0.21329078140762486, + -8.094356897681944, + -3.150516903237161, + 6.676900922868478, + -3.9195141665897246, + 1.8540679921789573, + -0.15376162236217705, + -5.648809454506782, + -9.218137325881434, + -6.979610366647846, + -7.885858153911095, + -1.4386898053967137, + -0.6233359470292887, + -1.7593857873642393, + -2.344725313882094, + -1.0534229727076467, + 0.6654668206170398, + 7.887735069516859, + -6.38882597077141, + -5.6397559950521154, + 0.8455120890389446, + -5.250593981881587, + -4.112425219809245, + -4.681161480300002, + 6.522331966196904, + -4.023280194965856, + 7.742324860246996, + 7.352758852805935, + -8.962687133514889, + 4.31975979988239, + 9.705167181253548, + -2.484810312171407, + 7.561131630567262, + -4.017490652651401, + 11.093618100157807, + 2.9909862541842602, + 0.28649873104569173, + -6.073720961255064, + -8.067662923582365, + -9.228762918666252, + -2.572977914669187, + 4.497489633099259, + 7.555490434805937, + -1.3302502498349542, + 0.889150114494581, + 0.6492983535956304, + 5.372302012623104, + -0.3836415766204878, + -2.3372990413558163, + -0.7046133426963144, + -2.7672631482209042, + 0.7779732705161404, + 7.679315506536789, + 7.212648012351597, + -3.717171194809398, + -3.443218965335672, + -7.9884355813861525, + -0.15437542776681207, + -0.3252988281038899, + -0.04736873525040834, + -0.06581490480457773, + 4.876186643841398, + 0.36241169157713116, + 8.959685526258205, + 1.3513180314927358, + 6.150885694615564, + 5.4789655277814875 ], "y": [ - 3.855079906757912, - -2.6161491630776537, - 2.0858745119674817, - -0.7387070741223745, - 0.6762411291710205, - 3.2612679019976785, - -0.7597612819340497, - -1.5132518573724385, - -1.3141138830707781, - -0.4603812837704453, - -4.176798797673366, - -0.17145939483571848, - -2.3552322867774333, - -1.0701328964463008, - 0.8702761364071849, - 0.44236870815169077, - -1.9358357839167768, - -0.875340692809248, - 4.195432845157893, - -1.2376211881520474, - 0.12409870870908377, - -2.1090907082786456, - 1.685357352839291, - 0.6758843835084245, - -0.4501378746479654, - -1.066802136251232, - 0.6634853407176996, - -1.7623622324432309, - -1.1554207697853431, - -0.06063224652875297, - 3.3758883351636406, - 0.4512264379143446, - -2.456638459417957, - -0.43679824747548973, - -0.7382688818718947, - -0.2520532911701617, - 2.750530427456509, - 1.125146783490973, - 0.7892791006156633, - 0.5765882273665656, - -0.6854056696141374, - -1.279685771976567, - -1.1825978137443862, - 1.3222286500907285, - 0.11745983009345888, - -1.542437895261929, - -0.2782375674209586, - 3.937745783870189, - -1.3320803207099212, - 4.169856066791524, - -2.2477669326690903, - -1.150485868378693, - -3.8712181278625093, - -0.7022335549777545, - 0.5420963052877399, - 0.4678926303972273, - 3.4403713919822887, - 0.4863806254463764, - -0.6238378308545871, - 1.343829136369984, - 0.14409084055530824, - 2.5343927756276208, - -0.5526272432620005, - 1.2248475756753234, - -3.7675068565379526, - 0.5204095710567854, - 3.8376607993496474, - -2.0760363685139835, - 0.5644581810204278, - -1.1459815564721405, - -2.041770332342056, - -0.004542519610788543, - 1.7031900127353492, - -1.3742218685131904, - -0.7147485799669284, - 1.4881169379618266, - -0.19050682488166057, - -0.14475243097201565, - 6.360968776083738, - -2.078243330810698, - 4.14095498498866, - 5.227145165733215, - -3.3612305563899025, - -1.1255274387743974, - 2.1625635432281007, - 0.4396840547361396, - 5.751134848691572, - -0.9000703677554964, - -1.7793354355241953, - -2.4139451622163732, - 0.8205060831759692, - 0.7039545268141139, - -0.7726894334348547, - -1.5249528470778462, - -3.868128583078392, - 3.202644291798853, - -2.962651113308873, - 4.430985736188797, - -2.4314062342671723, - 1.3807182968551648, - -0.7449036382521768, - -0.8069094474868895, - -0.6759332084903706, - 3.0748583207932327, - 0.1405897640815465, - 2.392095650546612, - -5.076137879528213, - 0.1097660154101488, - -0.09293666247089191, - 0.6138002511135776, - 2.3161173720426596, - -1.071210529898813, - -0.19711844410400842, - -0.9021406931148502, - 2.1673739587776044, - -0.19060429757994993, - -3.685341829885408, - 2.7174995622045883, - 0.7284784869926412, - -3.0190587027490117, - -0.7989147485071739, - 2.285982156684738, - -2.7164474192473183, - 2.0824407561550218, - -0.9369710311952276, - -2.092283307281979, - -2.184152854419849, - -4.04801007971819, - 0.6121619616567823, - -2.096903142825676, - -0.449370857527864, - 3.246313330481864, - 0.2072632677881261, - -3.526650756993172, - 5.912620412600382, - -3.2069462495949463, - -2.6355919352137627, - 1.1560393798870965, - -0.810113928458289, - -0.6400475866863665, - 1.6073144480858566, - 1.6113479644274307, - -1.4330355400833183, - -2.5206657362497764, - 0.1919453712673838, - 1.7782666634371787, - -0.22981003650282733, - -0.4233650947364542, - -1.3739336823800556, - -4.744448285298656, - 0.41078286576938844, - 0.2198503546716565, - -4.949990753643417, - 1.599525194878205, - 3.9230026623695577, - 2.094233447191595, - -3.308099746818885, - -4.3619148663696246, - -0.8069372215208568, - -0.31619288705894766, - 2.2622864147208737, - 1.7822106604828154, - -0.3317218431250816, - 1.3483469394442205, - 2.043981599768457, - -0.3321920606619467, - -0.7869185545988505, - -1.5467856892585568, - -0.25708760611913994, - 4.164638837124573, - -3.2659992541243765, - -1.9281826961005137, - 4.136589214412604, - -0.6703021414154839, - -1.5635311694465044, - -0.44951947244297247, - -0.3761386627777358, - 3.9764711009886002, - 2.3419627959783003, - 0.6089978678769945, - -4.338425696323253, - -2.5225599257667737, - 1.6428508719923456, - 0.12007001975983786, - 0.24402194312458406, - -0.2773245069485185, - 1.628382866958211, - 1.0067797556961153, - -2.66536832367383, - -1.4735063838523634, - 3.620964936225569, - 6.36265096697167, - 4.446035444782243, - -1.7217799443553965, - -3.5869356337268425 + 3.7710930700377343, + -2.6068122483972225, + 2.1759998382097714, + -1.477608137355973, + 0.5244193644395958, + 3.2222414860008306, + -0.6243507824918618, + -1.4525585842358641, + -1.2454320204471736, + -0.3197983036265329, + -4.237515714493149, + -0.1745838558446209, + -2.3382043958696803, + -1.0001205825719757, + 1.111163226050274, + 0.36914800662604874, + -2.0102061441495627, + -0.9596191176361444, + 4.114508502610506, + -1.1129139648683155, + -0.04650566248863399, + -2.1837767842915867, + 1.59071944797144, + 0.47363682832027093, + -0.3555564643680984, + -0.9772141578971821, + 0.6748364196510189, + -1.852551303827457, + -1.094111964537084, + -0.13869719837063346, + 4.666867362889493, + 0.3930464320109389, + -2.5179622696437893, + -0.32093333784864697, + -0.7806349080444681, + -0.32532378405232726, + 2.3955915410128226, + 1.141869680698887, + 0.5613822279535107, + 0.6199184188077461, + -0.7912863453361185, + -1.170416996964333, + -1.0513991436296977, + 0.9590765521071616, + -0.27242128263812415, + -1.5085111318643667, + -0.3085735129738893, + 4.131216809952003, + -1.3260495297428727, + 4.055202391554322, + -2.2912905440280102, + -1.047719714753937, + -3.561210590917475, + -0.7534647588303485, + 0.521686291212891, + 0.5153572670991243, + 3.2982843117596703, + 0.5439050810776036, + -0.6139123293485069, + 1.24966754387615, + 0.08283426661537716, + 2.4205953671128966, + -0.8620360299059099, + 1.218415315069224, + -3.702394948803829, + 0.44234956852966806, + 3.479352348848602, + -2.0858220432044217, + 0.825736813216072, + -1.019524143668798, + -2.2098267746146685, + -0.18289127807047462, + 1.783105542226986, + -1.584742368267455, + -0.7885358100669981, + 1.4064754574794345, + -0.06121314024465169, + 0.20217916802341582, + 7.474788743257434, + -1.7492366112861004, + 4.134103049603261, + 5.069571363427267, + -3.3111111011242764, + -1.1911420440298752, + 2.085456665139465, + 0.3894734380967889, + 5.668793789144949, + -0.558134535111894, + -1.6454439632996396, + -2.4859943981787693, + 1.00599629341969, + 0.3529129239948134, + -0.6009508210767537, + -1.4789193673035914, + -3.7748892487898007, + 3.100974039846159, + -2.897771044300527, + 4.298572957046066, + -1.4505126708965623, + 1.3700733845045165, + -0.8428440174556316, + -1.4758330493933198, + -0.6967325849637968, + 3.1668800161854556, + -0.23873747865098688, + 2.4856432233399466, + -4.9921256886164125, + 0.16518106042801775, + -0.11171481571152728, + 1.0949247613992086, + 2.3302094506334567, + -1.0266218714485222, + -0.5290480011503546, + -0.8344495211845591, + 2.2091109582233983, + -0.10605596618334574, + -3.553147300917237, + 2.8083552413960424, + 0.6479697790399467, + -3.1489644344238026, + -0.7947752862465971, + 1.8864930596369995, + -2.5018749242658975, + 2.1472048210075987, + -1.066223004796494, + -2.0100362941854204, + -2.0854082137719283, + -3.6505235452230527, + 0.26715344146391684, + -2.0767724469085764, + -0.4691622797649216, + 3.3168574113875895, + 0.1298244177503368, + -3.4670042691428264, + 5.789549947812651, + -3.3078602462065954, + -2.569035394856519, + 1.0984202420704408, + -0.8037305700455658, + -0.6636828835248264, + 1.6051363516612027, + 1.671485719666504, + -1.518616085313642, + -2.5393250747189424, + 0.3120517966570482, + 1.787750467826509, + -0.19724141628178163, + -0.4943330634356602, + -1.4935380283703719, + -4.649245770451785, + 0.4345804417117196, + 0.3501036381156643, + -4.949826018260202, + 1.5072756647611225, + 3.7003818677917777, + 2.1195330631670433, + -3.4129919044965176, + -4.081080733037543, + -0.8384739520601534, + -0.7090983114822332, + 2.5751290648726224, + 1.735506551700908, + -0.39572799630852773, + 1.2958850189263693, + 1.8970870955716783, + -0.308620040638708, + -0.7589333585377616, + -1.4816789461586213, + -0.904686467685462, + 4.104837364351266, + -3.1929672847548205, + -1.8159181491685787, + 4.114620300186373, + -0.7798587119233383, + -1.5540163204104063, + -0.44774452331140946, + -0.42143364507485415, + 3.9104734934031127, + 2.3841210940811215, + 0.3755125442647771, + -4.223587424909779, + -2.4465322252575294, + 1.6310274245445033, + -0.0028246323915299227, + 0.6216299027178394, + -0.014010365301508051, + 1.594650154053963, + 1.0192261832505012, + -2.4447386976502656, + -1.2992800194951994, + 3.5555081366304244, + 6.260046043530518, + 4.073331971606124, + -1.6167691506707658, + -3.5674654661302934 ], "z": [ - -0.08056349942375234, - 0.028786945680939334, - -0.44937341234933376, - -0.16683803717768994, - -0.27111339571903237, - -0.8468634775668962, - -0.5502370446162456, - 0.4632032199948351, - 0.017798805062920902, - 0.571825806803118, - 0.8610933028242622, - -0.41718466981031516, - 0.16298126000548457, - 0.0792910898343927, - 1.8128567388748213, - -0.5915769084573904, - -0.6600713773871396, - -0.8618537879404934, - -1.3168602103635203, - -0.22386892528755858, - -1.2014952503028953, - 0.07455281400208881, - 1.9166641224580574, - -1.2135979612511367, - -0.6447006133013446, - -0.12282338586990073, - -1.3674628062622514, - -0.20112813577814573, - 0.4490646679359641, - -0.30546512881185595, - 21.075170142106238, - -0.3461901436442329, - 0.028559610619205766, - 0.7183639705212421, - -0.8787618828044577, - 0.12710832268882694, - -0.9921767250704747, - -1.4080096325967255, - -0.8219680893706439, - -0.16275604933559068, - -1.1533739954894404, - -0.0337917509503916, - 1.6799185317306151, - -1.6512330639034185, - -0.7302482647171719, - -0.057800768168225665, - -0.5793990807734664, - -0.3083473792952449, - 0.06495870174368194, - 0.26669955368531123, - 0.47673235544920756, - -0.36120354829237655, - 2.041100499830188, - -0.4143178336544228, - -0.6015274112600257, - 0.7478337195452976, - -1.8828288126503987, - -0.7500800314342261, - -0.12798166920024825, - -1.1867701805068653, - -1.1196282252328504, - -0.6493267239833703, - -0.43756308949814743, - -0.7533933663839528, - 0.4302699784022649, - -0.7319465680265883, - -2.2780987950134697, - -0.06682395650749673, - -0.4419775297297648, - -0.3445492341786709, - -0.11254660017123147, - -0.18043721696072984, - -1.2245532604994218, - -0.4508568352724152, - -0.5245332955884419, - -1.4928953735994406, - -0.3800223951921673, - 3.3336995724742122, - 16.58065950845859, - -0.10654620050939036, - 0.008192649556087934, - -0.6423735209945476, - 0.152297292659392, - -0.36560878774545547, - 0.49191207289471833, - -1.1099575355724403, - -1.7319271224030202, - 2.7873230415457813, - 0.3265442671574655, - 0.5945942363898596, - -0.9086831018342412, - -0.5682675113500351, - 0.9809557365077258, - -0.2955124194307041, - 0.5430900659914154, - -0.875669448080304, - 0.015598845436188625, - -1.7110254542689507, - 0.7159377765562558, - -2.110361788242772, - -0.6140117208816129, - -2.2213300253252046, - -0.4855754948258507, - -0.020397403392057183, - -0.6674547258338281, - -1.0322834653250168, - 0.841765444160154, - -0.16573915738325531, - 1.3532932568239346, - -1.0306742402186815, - -1.1673487760360945, - 0.055627548134166156, - -1.0807593074388993, - 0.2489197605289283, - -1.2548555213743704, - -1.1222118522352336, - 0.37543854283410066, - -0.8582102171406314, - -0.8972184590567043, - 0.0557980004106488, - 0.2075716873589323, - -2.118355272391502, - 0.8960991584668245, - 1.619249911125445, - -0.48425138660513256, - 0.20873183469256704, - 0.13649392700008095, - 1.1043508356549243, - -0.7750278052214509, - -0.03990788295694306, - -0.3456984462829911, - 2.7893599209321964, - -0.8224626080103721, - 1.0510801949597657, - -1.8906202128098901, - 0.1765606034112846, - 0.19411942215412678, - 0.1833261337225062, - 1.0667397058802544, - -0.2867439193164209, - -1.4817313055181802, - -0.43374751726861893, - -0.4787152619003991, - 0.48739304026159463, - 0.7960149868538892, - -0.1506706339034871, - 0.342128657741293, - -0.10838198808233662, - -0.2324437265816887, - 0.23903962222116307, - -0.10779761283468126, - 1.9882259122761288, - 0.7137857571409595, - -0.38100084383652005, - -0.7369267139576294, - -0.5866833474499575, - -0.2601928237466296, - 0.7355547951926357, - -0.3915917226406725, - -0.6608095025394163, - -0.4820656942062738, - -0.890245666833216, - -0.2379812125363602, - -1.1282432906633666, - -0.9714088903315417, - -0.6977684963639371, - -0.3478849704694565, - -0.01431592220793677, - -0.9684387291859726, - -0.6535085737776317, - -0.06077323296566774, - 1.2253400465197497, - -1.088695983798872, - -0.3074576335207782, - 0.06497871050632115, - -0.5866301760000734, - -0.6938107871003306, - -0.9784676321572428, - 0.5843442289245169, - -0.7814587484817813, - 1.068832535600227, - 0.5516405641878677, - -0.37564916203542914, - -0.6494838123648803, - 7.139715614122555, - 0.003818061511962325, - -1.5702626196716343, - -0.6436689069476974, - 1.7452512841104453, - 0.21842118139393515, - -1.1804007080469503, - -0.48422171683216453, - -1.8277115375834077, - -0.3770607910856339, - -0.14827461968716107 + -0.1332549867679698, + 0.27291870991937145, + -0.611012267273753, + -0.2845008401372673, + -0.23934607177095424, + -0.989885897143346, + -0.5913310286751665, + 0.4918869311562419, + 0.02152328028019099, + 0.6527665776802173, + 1.1779896925604951, + -0.4708636708683358, + 0.2956680935739928, + 0.12663008610763415, + 1.6942631052609094, + -0.5648214463106873, + -0.6120798399280499, + -0.8126412115199241, + -1.5597933259979462, + -0.20172561562931726, + -1.047714000388964, + 0.2833283572551736, + 1.947988206124562, + -1.0940250957737738, + -0.700773597471764, + 0.08586194539976243, + -1.4115772304017518, + -0.08515973093916311, + 0.4719010931574096, + -0.34883138810793957, + 20.966696914227896, + -0.3274459280580112, + 0.29271254763675336, + 0.6196062751105513, + -0.8265694284581329, + 0.19528142811908988, + -1.0421850982750887, + -1.4945598964235005, + -0.7987533916470302, + -0.4414013258569815, + -0.9833877041475038, + -0.014107758956231299, + 1.6975210715833469, + -1.3432928236773465, + -0.5691741516819883, + -0.016253383951449877, + -0.5609881949423667, + -0.7751208351141133, + 0.14824692386359914, + 0.00927794382893188, + 0.3179320083242132, + -0.3576194520490325, + 2.211293354678765, + -0.40672738166071587, + -0.6075844208483971, + 0.6765252189015973, + -2.020671173119792, + -0.8020750071696471, + 0.04334994483721389, + -1.086057747558172, + -0.8670786486384499, + -0.7475883165995749, + -0.4853487655958365, + -0.83531533811805, + 0.734179483116577, + -0.6696378871532909, + -2.387871871639611, + 0.2056780509902696, + -0.6271404340494551, + -0.3105679935654806, + 0.15434282400106256, + -0.041509387748856236, + -1.3518728132750355, + -0.30979810793800244, + -0.4076506800725293, + -1.4368858634288142, + -0.439837150288455, + 3.284033180624785, + 16.222883878857836, + -0.2875562816754254, + -0.3592141552110312, + -0.881347200571578, + 0.3237967022487916, + -0.299888668387499, + 0.3693021525982787, + -1.0364700904846793, + -2.1255576816295476, + 2.884194216499615, + 0.41893252327431185, + 0.7829805728736471, + -0.9766590654787115, + -0.6126549175381664, + 0.8963086398057337, + -0.06684147199340751, + 0.9059223522651572, + -1.166783909012498, + 0.2518120483509488, + -1.9813558678292322, + 0.5081446050076046, + -2.179479213880696, + -0.521918288574282, + -1.5747977920674756, + -0.43605984926764313, + -0.2761240963499135, + -0.6427173988235734, + -1.2010568896745912, + 1.0894778343477631, + -0.10654044827049912, + 1.4019091347689008, + -1.0265730834270628, + -1.3601266111839339, + 0.15646587786945004, + -0.9382090527097158, + 0.5053523595060782, + -1.4667694835270888, + -1.1604490104069942, + 0.5150624787802507, + -1.1027292782221167, + -0.839105415019863, + 0.2776553132752387, + 0.21503674198584916, + -2.0704733945969522, + 0.9887373441404025, + 1.5217215798291597, + -0.3220752306439535, + 0.28679952660295216, + 0.1587864411478722, + 1.290438072221053, + -0.6496490293445591, + 0.002632923994493077, + -0.3760188151867507, + 2.7115844513505634, + -0.9828777983239214, + 1.083015524634079, + -2.2842817622522524, + 0.4199335852091797, + 0.2738786451283277, + 0.10490493644303588, + 1.1314337861119779, + -0.35609718357504794, + -1.5997477704369565, + -0.5515669205914375, + -0.3926802265739144, + 0.701690271753913, + 0.7841817274062157, + -0.2575142832338854, + 0.3640003794240824, + -0.05399275040865746, + -0.06743258867823183, + 0.3163775826699158, + -0.1462798928758705, + 1.9942716803820362, + 0.9359999525922797, + -0.5623556831453945, + -0.8469774592591988, + -0.8779543598166668, + -0.011611440250646143, + 1.0550222920744383, + -0.3923020976890576, + -0.7590866947217605, + -0.9289791128963573, + -0.9967515617595287, + -0.47678452948726496, + -1.2313850212238613, + -1.0910139483733312, + -0.6840759561480423, + -0.31184363442804364, + 0.004357646405543191, + -0.7426386538844539, + -1.3054675039254935, + 0.1566801829898895, + 1.368288604939323, + -1.3662589846026323, + -0.3096134232154807, + 0.1770769632986913, + -0.5471472073762823, + -0.6466621016673111, + -1.248041765770726, + 0.3939036866698287, + -0.6813283958170979, + 1.2742176082427117, + 0.744638907265581, + -0.39433976596142706, + -0.5799619618503732, + 7.060467356342127, + -0.2211897015322298, + -1.5809316826536888, + -0.80120105935382, + 2.0811505851585417, + 0.26892275492564527, + -1.480500416081267, + -1.3618537976781397, + -1.970376263321043, + -0.34348196426888905, + 0.18144894292221464 ] } ], @@ -2298,17 +2512,17 @@ }, "xaxis": { "title": { - "text": "PC1 49.73%" + "text": "PC1 49.70%" } }, "yaxis": { "title": { - "text": "PC2 7.93%" + "text": "PC2 7.85%" } }, "zaxis": { "title": { - "text": "PC3 7.18%" + "text": "PC3 7.20%" } } }, @@ -3119,7 +3333,7 @@ } }, "title": { - "text": "Total Explained Variance: 64.84%" + "text": "Total Explained Variance: 64.75%" } } } @@ -3135,7 +3349,7 @@ "print(l_dict)\n", "\n", "fig = px.scatter_3d(\n", - " pComponents_final, x=0, y=1, z=2,\n", + " pComponents_imputed, x=0, y=1, z=2,\n", " title=f'Total Explained Variance: {total_explained_percentage:.2f}%',\n", " labels=l_dict\n", ")\n", @@ -3144,26 +3358,26 @@ ] }, { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], "source": [ - "## Conversion of the Dataset to CSV" - ], - "cell_type": "markdown", - "metadata": {} + "imputed_df.to_csv(\"../data/unlabeled/preprocessed/hdro_preprocessed.csv\")" + ] }, { "cell_type": "code", - "execution_count": 29, + "execution_count": null, "metadata": {}, "outputs": [], - "source": [ - "final_df.to_csv(\"../data/unlabeled/preprocessed/hdro_preprocessed.csv\")" - ] + "source": [] } ], "metadata": { "kernelspec": { - "name": "python374jvsc74a57bd0dca0ade3e726a953b501b15e8e990130d2b7799f14cfd9f4271676035ebe5511", - "display_name": "Python 3.7.4 64-bit ('base': conda)" + "name": "python394jvsc74a57bd01e002e48d41ce7b93ab532133c559bfbfa167161e2109b258903f10473d9f54b", + "display_name": "Python 3.9.4 64-bit ('wsenv': conda)" }, "language_info": { "codemirror_mode": { @@ -3175,7 +3389,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.4" + "version": "3.9.4" } }, "nbformat": 4, From ba63fb29d8c7cac26746fd16a60d72fd8ebfc487 Mon Sep 17 00:00:00 2001 From: Joachim Bache-Mathiesen Date: Tue, 18 May 2021 14:46:21 +0200 Subject: [PATCH 2/6] Working documentation --- generate_documentation.py | 12 +++++++----- requirements.txt | 3 ++- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/generate_documentation.py b/generate_documentation.py index e7e5fdf..1d6a142 100644 --- a/generate_documentation.py +++ b/generate_documentation.py @@ -7,13 +7,15 @@ pdoc.link_inheritance(context) def recursive_htmls(mod): - yield mod.name, mod.html() + yield mod.name, mod.html(), bool(mod.submodules()) for submod in mod.submodules(): yield from recursive_htmls(submod) -for module_name, html in recursive_htmls(modules): - fname = f"documentation/{'/'.join(module_name.split('.'))}/index.html" +for module_name, html, has_subm in recursive_htmls(modules): + if has_subm: + fname = f"documentation/{'/'.join(module_name.split('.'))}/index.html" + else: + fname = f"documentation/{'/'.join(module_name.split('.'))}.html" os.makedirs(os.path.dirname(fname), exist_ok=True) with open(fname,"w", encoding="utf-8") as f: - f.writelines(html) - + f.writelines(html) \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 2f892a7..bc7050b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -17,4 +17,5 @@ folium ipyleaflet voila==0.1.24 haversine -country-converter \ No newline at end of file +country-converter +pdoc3 \ No newline at end of file From dae6c147f7204d4e216c60a8af569c0378c74e4c Mon Sep 17 00:00:00 2001 From: Joachim Bache-Mathiesen Date: Tue, 18 May 2021 15:31:38 +0200 Subject: [PATCH 3/6] Html upload and ignore file --- .docignore | 4 + .../classification/classifier.html | 165 ++++ .../classification/feature_selection.html | 159 ++++ .../WaterSecurity/classification/index.html | 81 ++ .../classification/model_handler.html | 861 ++++++++++++++++++ documentation/WaterSecurity/index.html | 75 ++ .../labeled_preprocessing/imputation.html | 418 +++++++++ .../labeled_preprocessing/index.html | 65 ++ .../unlabeled_preprocessing/helpers.html | 211 +++++ .../unlabeled_preprocessing/index.html | 65 ++ documentation/WaterSecurity/utils/geo.html | 470 ++++++++++ documentation/WaterSecurity/utils/index.html | 70 ++ documentation/WaterSecurity/utils/nlp.html | 287 ++++++ generate_documentation.py | 8 +- 14 files changed, 2937 insertions(+), 2 deletions(-) create mode 100644 .docignore create mode 100644 documentation/WaterSecurity/classification/classifier.html create mode 100644 documentation/WaterSecurity/classification/feature_selection.html create mode 100644 documentation/WaterSecurity/classification/index.html create mode 100644 documentation/WaterSecurity/classification/model_handler.html create mode 100644 documentation/WaterSecurity/index.html create mode 100644 documentation/WaterSecurity/labeled_preprocessing/imputation.html create mode 100644 documentation/WaterSecurity/labeled_preprocessing/index.html create mode 100644 documentation/WaterSecurity/unlabeled_preprocessing/helpers.html create mode 100644 documentation/WaterSecurity/unlabeled_preprocessing/index.html create mode 100644 documentation/WaterSecurity/utils/geo.html create mode 100644 documentation/WaterSecurity/utils/index.html create mode 100644 documentation/WaterSecurity/utils/nlp.html diff --git a/.docignore b/.docignore new file mode 100644 index 0000000..7afe47c --- /dev/null +++ b/.docignore @@ -0,0 +1,4 @@ +WaterSecurity.data +WaterSecurity.documentation +WaterSecurity.run +WaterSecurity.generate_documentation \ No newline at end of file diff --git a/documentation/WaterSecurity/classification/classifier.html b/documentation/WaterSecurity/classification/classifier.html new file mode 100644 index 0000000..39e2cea --- /dev/null +++ b/documentation/WaterSecurity/classification/classifier.html @@ -0,0 +1,165 @@ + + + + + + +WaterSecurity.classification.classifier API documentation + + + + + + + + + + + +
+
+
+

Module WaterSecurity.classification.classifier

+
+
+
+ +Expand source code + +
from sklearn.base import BaseEstimator, RegressorMixin
+import numpy as np
+
+
+class Classifier(BaseEstimator, RegressorMixin):
+    # @TODO implement
+    def fit(self, x_data, y_data):
+        """
+        x_data: the nxm features
+        y_data: the n labels, with values 0,1,2 or 3
+        """
+        return self
+
+    def predict(self, x_data):
+        """
+        x_data: the nxm features
+        Returns n predictions, which have values 0 to 3, they can be floats
+        """
+        return np.zeros(x_data.shape[0])
+
+
+
+
+
+
+
+
+
+

Classes

+
+
+class Classifier +
+
+

Base class for all estimators in scikit-learn.

+

Notes

+

All estimators should specify all the parameters that can be set +at the class level in their __init__ as explicit keyword +arguments (no *args or **kwargs).

+
+ +Expand source code + +
class Classifier(BaseEstimator, RegressorMixin):
+    # @TODO implement
+    def fit(self, x_data, y_data):
+        """
+        x_data: the nxm features
+        y_data: the n labels, with values 0,1,2 or 3
+        """
+        return self
+
+    def predict(self, x_data):
+        """
+        x_data: the nxm features
+        Returns n predictions, which have values 0 to 3, they can be floats
+        """
+        return np.zeros(x_data.shape[0])
+
+

Ancestors

+
    +
  • sklearn.base.BaseEstimator
  • +
  • sklearn.base.RegressorMixin
  • +
+

Methods

+
+
+def fit(self, x_data, y_data) +
+
+

x_data: the nxm features +y_data: the n labels, with values 0,1,2 or 3

+
+ +Expand source code + +
def fit(self, x_data, y_data):
+    """
+    x_data: the nxm features
+    y_data: the n labels, with values 0,1,2 or 3
+    """
+    return self
+
+
+
+def predict(self, x_data) +
+
+

x_data: the nxm features +Returns n predictions, which have values 0 to 3, they can be floats

+
+ +Expand source code + +
def predict(self, x_data):
+    """
+    x_data: the nxm features
+    Returns n predictions, which have values 0 to 3, they can be floats
+    """
+    return np.zeros(x_data.shape[0])
+
+
+
+
+
+
+
+ +
+ + + \ No newline at end of file diff --git a/documentation/WaterSecurity/classification/feature_selection.html b/documentation/WaterSecurity/classification/feature_selection.html new file mode 100644 index 0000000..01369dd --- /dev/null +++ b/documentation/WaterSecurity/classification/feature_selection.html @@ -0,0 +1,159 @@ + + + + + + +WaterSecurity.classification.feature_selection API documentation + + + + + + + + + + + +
+
+
+

Module WaterSecurity.classification.feature_selection

+
+
+
+ +Expand source code + +
from sklearn import base
+from sklearn.base import BaseEstimator, TransformerMixin
+
+
+class FeatureSelectionAndGeneration(BaseEstimator, TransformerMixin):
+    # @TODO implement
+
+    def fit(self, x_data, y_data):
+        """
+        Fits to nxm features x_data and n predictions y_data
+        """
+        return self
+
+    def transform(self, x_data):
+        """
+        Transforms x_data from nxm to kxm
+        """
+        return x_data
+
+
+
+
+
+
+
+
+
+

Classes

+
+
+class FeatureSelectionAndGeneration +
+
+

Base class for all estimators in scikit-learn.

+

Notes

+

All estimators should specify all the parameters that can be set +at the class level in their __init__ as explicit keyword +arguments (no *args or **kwargs).

+
+ +Expand source code + +
class FeatureSelectionAndGeneration(BaseEstimator, TransformerMixin):
+    # @TODO implement
+
+    def fit(self, x_data, y_data):
+        """
+        Fits to nxm features x_data and n predictions y_data
+        """
+        return self
+
+    def transform(self, x_data):
+        """
+        Transforms x_data from nxm to kxm
+        """
+        return x_data
+
+

Ancestors

+
    +
  • sklearn.base.BaseEstimator
  • +
  • sklearn.base.TransformerMixin
  • +
+

Methods

+
+
+def fit(self, x_data, y_data) +
+
+

Fits to nxm features x_data and n predictions y_data

+
+ +Expand source code + +
def fit(self, x_data, y_data):
+    """
+    Fits to nxm features x_data and n predictions y_data
+    """
+    return self
+
+
+
+def transform(self, x_data) +
+
+

Transforms x_data from nxm to kxm

+
+ +Expand source code + +
def transform(self, x_data):
+    """
+    Transforms x_data from nxm to kxm
+    """
+    return x_data
+
+
+
+
+
+
+
+ +
+ + + \ No newline at end of file diff --git a/documentation/WaterSecurity/classification/index.html b/documentation/WaterSecurity/classification/index.html new file mode 100644 index 0000000..24f58b0 --- /dev/null +++ b/documentation/WaterSecurity/classification/index.html @@ -0,0 +1,81 @@ + + + + + + +WaterSecurity.classification API documentation + + + + + + + + + + + +
+ + +
+ + + \ No newline at end of file diff --git a/documentation/WaterSecurity/classification/model_handler.html b/documentation/WaterSecurity/classification/model_handler.html new file mode 100644 index 0000000..207feab --- /dev/null +++ b/documentation/WaterSecurity/classification/model_handler.html @@ -0,0 +1,861 @@ + + + + + + +WaterSecurity.classification.model_handler API documentation + + + + + + + + + + + +
+
+
+

Module WaterSecurity.classification.model_handler

+
+
+
+ +Expand source code + +
from sklearn.base import BaseEstimator
+from data.labeled.preprocessed import LABELED_CITIES
+import os
+import pickle
+import pandas as pd
+import numpy as np
+import importlib
+from data.model import MODEL_PATH
+from sklearn.pipeline import Pipeline
+from classification.classifier import Classifier
+from classification.feature_selection import FeatureSelectionAndGeneration
+from sklearn.exceptions import NotFittedError
+from sklearn.model_selection import train_test_split
+from sklearn.metrics import confusion_matrix, classification_report
+from classification import RANDOM_SEED
+from data.model.metrics import VALIDATION_METRICS_PATH, TRAINING_METRICS_PATH
+from data.model.predictions import PREDICTION_MASK_PATH, FILLED_DATASET_PATH
+from utils.geo import is_close, get_place
+
+
+class TrainingRequired(NotFittedError):
+    def __init__(self, obj):
+        super().__init__(f"{obj} could not be loaded. Training model is required")
+
+
+class InvalidCoordinates(BaseException):
+    pass
+
+
+class ModelHandler:
+    """
+    Trains and Tests the model, while also computing metrics.
+    During training the model is first fitted, then produces predictions for any unlabled points inside the dataset
+    """
+
+    def __init__(self):
+        self._model = None
+        self._dataset = None
+        self._valid_metrics = None
+        self._train_metrics = None
+        self._filled_dataset = None
+        self.train_mask = None
+        self.feat_names = None
+        self.lab_names = None
+        # The id columns to remain in the filled dataset
+        self.id_columns = ["city", "country", "latitude", "longitude"]
+
+    @property
+    def model(self) -> Pipeline:
+        """
+        If model is not defined, try to loaded from disk
+        """
+        if self._model is None:
+            try:
+                from data.model import MODEL
+
+                self._model = MODEL
+            except ImportError:
+                raise TrainingRequired("Model")
+        return self._model
+
+    @model.setter
+    def model(self, model: Pipeline):
+        self._model = model
+
+    def save_model(self) -> None:
+        """
+        Saves model to memory
+        """
+        with open(os.path.join(MODEL_PATH), "wb") as out:
+            pickle.dump(self.model, out)
+        import data.model
+
+        importlib.reload(data.model)
+
+    @property
+    def dataset(self) -> pd.DataFrame:
+        """
+        The dataset for the training step.
+        When it is loaded the first time, several variables are defined:
+            - lab_names: the labels names/columns of the dataset
+            - unique_labs: the unique labels values
+            - feat_names: the features names/columns of the dataset
+            - train_mask: the mask that refers to the cities that are labeled at least for one risk
+        """
+        if self._dataset is None:
+            from data.labeled.preprocessed import LABELED_CITIES, RISKS_MAPPING
+            from data.dataset import DATASET as dataset
+
+            self.lab_names = sorted(RISKS_MAPPING.keys())
+            self.unique_labs = np.unique(dataset[self.lab_names].T.stack().values)
+            self.feat_names = [
+                x
+                for x in dataset.columns
+                if x not in self.lab_names and x not in LABELED_CITIES.columns
+            ]
+            self.train_mask = dataset[self.lab_names].apply(
+                lambda x: all(pd.isnull(x)), axis=1
+            )
+            self._dataset = dataset
+        return self._dataset
+
+    @property
+    def filled_dataset(self) -> pd.DataFrame:
+        """
+        The dataset that has filled labels, which were produced from the predictions
+        """
+        if self._filled_dataset is None:
+            try:
+                self._filled_dataset = pd.read_csv(FILLED_DATASET_PATH)
+            except IOError:
+                raise TrainingRequired("Filled Dataset")
+        return self._filled_dataset
+
+    @filled_dataset.setter
+    def filled_dataset(self, dataset: pd.DataFrame):
+        self._filled_dataset = dataset
+
+    def compute_metrics(self, y_true, y_pred):
+        """
+        Compute metrics for regression labels of size nx1
+        """
+        metrics = {}
+        # Interpolate predictions to labels, eg convert 0.2 to 0, 0.7 to 1 etc.
+        y_pred_interp = self.unique_labs[
+            np.abs(np.reshape(self.unique_labs, (-1, 1)) - y_pred).argmin(axis=0)
+        ]
+        metrics["confusion_matrix"] = confusion_matrix(y_true, y_pred_interp)
+        metrics["classification_report"] = classification_report(y_true, y_pred)
+        return metrics
+
+    @property
+    def is_fitted(self) -> bool:
+        """
+        Tries to load model from memory/disk, if it fails, returns False, else returns True
+        """
+        try:
+            self.model
+        except TrainingRequired:
+            return False
+        return True
+
+    def train(self) -> None:
+        """
+        - Trains 7 different models, one per each different water security risk.
+        - Applies feature selection and generation per different model.
+        - Keeps 0.3 validation size, computes classification metrics, saves them, then fits each model to the whole available dataset for each risk.
+        - Creates the filled dataset and saves it to disk
+        - Creates the prediction mask (what labels from the filled dataset were predicted) and saves it to memory
+        """
+        dataset = self.dataset
+        labeled = dataset[self.train_mask]
+        labeled[self.lab_names]
+
+        model = {}
+        train_metrics = {}
+        valid_metrics = {}
+        filled_dataset = dataset[self.lab_names + self.id_columns].copy()
+        for label in self.lab_names:
+            train_mask = ~pd.isnull(dataset[label])
+            labeled = dataset.loc[train_mask, :]
+            train_set, valid_set = train_test_split(
+                labeled, test_size=0.3, random_state=RANDOM_SEED
+            )
+
+            model[label] = Pipeline(
+                [
+                    ("FeatureSelection", FeatureSelectionAndGeneration()),
+                    ("Classification", Classifier()),
+                ]
+            )
+            model[label].fit(train_set[self.feat_names], train_set[label])
+            train_preds = model[label].predict(train_set[self.feat_names])
+            valid_preds = model[label].predict(valid_set[self.feat_names])
+            train_metrics[label] = self.compute_metrics(train_set[label], train_preds)
+            valid_metrics[label] = self.compute_metrics(valid_set[label], valid_preds)
+            model[label].fit(labeled[self.feat_names], labeled[label])
+
+            filled_dataset.loc[~train_mask, label] = model[label].predict(
+                dataset.loc[~train_mask, self.feat_names]
+            )
+        self.model = model
+        self.save_model()
+        with open(VALIDATION_METRICS_PATH, "wb") as out:
+            pickle.dump(valid_metrics, out)
+        with open(TRAINING_METRICS_PATH, "wb") as out:
+            pickle.dump(train_metrics, out)
+        self.filled_dataset = filled_dataset
+        self.filled_dataset.to_csv(FILLED_DATASET_PATH, index=False)
+        pd.isnull(dataset[self.lab_names]).to_csv(PREDICTION_MASK_PATH, index=False)
+        import data.model.metrics
+
+        importlib.reload(data.model.metrics)
+        import data.model.predictions
+
+        importlib.reload(data.model.predictions)
+
+    def test(self, latitude, longitude):
+        """
+        Given a specific latitude and longitude value, either returns saved predictions from the filled dataset, if the point is close to the
+        ones that have already been predicted, or uses a REST API to load the country to which the latitude and longitude refer, uses the country data
+        to create the feature vector and computes the prediction using the trained models.
+        Returns the series of the found labels, which also contain city and country, and the series of booleans which shows which predictions were predicted and which where not.
+        """
+        try:
+            from data.model.predictions import FILLED_DATASET, PREDICTION_MASK
+        except ImportError:
+            raise TrainingRequired("Filled Dataset")
+        check_existing = FILLED_DATASET.apply(
+            lambda x: is_close((latitude, longitude), (x["latitude"], x["longitude"])),
+            axis=1,
+        )
+        if np.any(check_existing):
+            labs = list(sorted(self.model.keys()))
+            return (
+                FILLED_DATASET.loc[check_existing, labs + ["city", "country"]].iloc[0],
+                PREDICTION_MASK.loc[check_existing, labs].iloc[0],
+            )
+        try:
+            place = get_place(latitude, longitude)
+        except AttributeError:
+            raise InvalidCoordinates
+        from data.unlabeled import COUNTRIES_DATASET
+
+        feats = COUNTRIES_DATASET.loc[place["code"]]
+        preds = {}
+        mask = {}
+        for label in self.model:
+            preds[label] = self.model[label].predict(feats)[0]
+            mask[label] = True
+        preds["city"] = place["city"]
+        preds["country"] = place["country"]
+        return pd.Series(preds), pd.Series(mask)
+
+
+
+
+
+
+
+
+
+

Classes

+
+
+class InvalidCoordinates +(*args, **kwargs) +
+
+

Common base class for all exceptions

+
+ +Expand source code + +
class InvalidCoordinates(BaseException):
+    pass
+
+

Ancestors

+
    +
  • builtins.BaseException
  • +
+
+
+class ModelHandler +
+
+

Trains and Tests the model, while also computing metrics. +During training the model is first fitted, then produces predictions for any unlabled points inside the dataset

+
+ +Expand source code + +
class ModelHandler:
+    """
+    Trains and Tests the model, while also computing metrics.
+    During training the model is first fitted, then produces predictions for any unlabled points inside the dataset
+    """
+
+    def __init__(self):
+        self._model = None
+        self._dataset = None
+        self._valid_metrics = None
+        self._train_metrics = None
+        self._filled_dataset = None
+        self.train_mask = None
+        self.feat_names = None
+        self.lab_names = None
+        # The id columns to remain in the filled dataset
+        self.id_columns = ["city", "country", "latitude", "longitude"]
+
+    @property
+    def model(self) -> Pipeline:
+        """
+        If model is not defined, try to loaded from disk
+        """
+        if self._model is None:
+            try:
+                from data.model import MODEL
+
+                self._model = MODEL
+            except ImportError:
+                raise TrainingRequired("Model")
+        return self._model
+
+    @model.setter
+    def model(self, model: Pipeline):
+        self._model = model
+
+    def save_model(self) -> None:
+        """
+        Saves model to memory
+        """
+        with open(os.path.join(MODEL_PATH), "wb") as out:
+            pickle.dump(self.model, out)
+        import data.model
+
+        importlib.reload(data.model)
+
+    @property
+    def dataset(self) -> pd.DataFrame:
+        """
+        The dataset for the training step.
+        When it is loaded the first time, several variables are defined:
+            - lab_names: the labels names/columns of the dataset
+            - unique_labs: the unique labels values
+            - feat_names: the features names/columns of the dataset
+            - train_mask: the mask that refers to the cities that are labeled at least for one risk
+        """
+        if self._dataset is None:
+            from data.labeled.preprocessed import LABELED_CITIES, RISKS_MAPPING
+            from data.dataset import DATASET as dataset
+
+            self.lab_names = sorted(RISKS_MAPPING.keys())
+            self.unique_labs = np.unique(dataset[self.lab_names].T.stack().values)
+            self.feat_names = [
+                x
+                for x in dataset.columns
+                if x not in self.lab_names and x not in LABELED_CITIES.columns
+            ]
+            self.train_mask = dataset[self.lab_names].apply(
+                lambda x: all(pd.isnull(x)), axis=1
+            )
+            self._dataset = dataset
+        return self._dataset
+
+    @property
+    def filled_dataset(self) -> pd.DataFrame:
+        """
+        The dataset that has filled labels, which were produced from the predictions
+        """
+        if self._filled_dataset is None:
+            try:
+                self._filled_dataset = pd.read_csv(FILLED_DATASET_PATH)
+            except IOError:
+                raise TrainingRequired("Filled Dataset")
+        return self._filled_dataset
+
+    @filled_dataset.setter
+    def filled_dataset(self, dataset: pd.DataFrame):
+        self._filled_dataset = dataset
+
+    def compute_metrics(self, y_true, y_pred):
+        """
+        Compute metrics for regression labels of size nx1
+        """
+        metrics = {}
+        # Interpolate predictions to labels, eg convert 0.2 to 0, 0.7 to 1 etc.
+        y_pred_interp = self.unique_labs[
+            np.abs(np.reshape(self.unique_labs, (-1, 1)) - y_pred).argmin(axis=0)
+        ]
+        metrics["confusion_matrix"] = confusion_matrix(y_true, y_pred_interp)
+        metrics["classification_report"] = classification_report(y_true, y_pred)
+        return metrics
+
+    @property
+    def is_fitted(self) -> bool:
+        """
+        Tries to load model from memory/disk, if it fails, returns False, else returns True
+        """
+        try:
+            self.model
+        except TrainingRequired:
+            return False
+        return True
+
+    def train(self) -> None:
+        """
+        - Trains 7 different models, one per each different water security risk.
+        - Applies feature selection and generation per different model.
+        - Keeps 0.3 validation size, computes classification metrics, saves them, then fits each model to the whole available dataset for each risk.
+        - Creates the filled dataset and saves it to disk
+        - Creates the prediction mask (what labels from the filled dataset were predicted) and saves it to memory
+        """
+        dataset = self.dataset
+        labeled = dataset[self.train_mask]
+        labeled[self.lab_names]
+
+        model = {}
+        train_metrics = {}
+        valid_metrics = {}
+        filled_dataset = dataset[self.lab_names + self.id_columns].copy()
+        for label in self.lab_names:
+            train_mask = ~pd.isnull(dataset[label])
+            labeled = dataset.loc[train_mask, :]
+            train_set, valid_set = train_test_split(
+                labeled, test_size=0.3, random_state=RANDOM_SEED
+            )
+
+            model[label] = Pipeline(
+                [
+                    ("FeatureSelection", FeatureSelectionAndGeneration()),
+                    ("Classification", Classifier()),
+                ]
+            )
+            model[label].fit(train_set[self.feat_names], train_set[label])
+            train_preds = model[label].predict(train_set[self.feat_names])
+            valid_preds = model[label].predict(valid_set[self.feat_names])
+            train_metrics[label] = self.compute_metrics(train_set[label], train_preds)
+            valid_metrics[label] = self.compute_metrics(valid_set[label], valid_preds)
+            model[label].fit(labeled[self.feat_names], labeled[label])
+
+            filled_dataset.loc[~train_mask, label] = model[label].predict(
+                dataset.loc[~train_mask, self.feat_names]
+            )
+        self.model = model
+        self.save_model()
+        with open(VALIDATION_METRICS_PATH, "wb") as out:
+            pickle.dump(valid_metrics, out)
+        with open(TRAINING_METRICS_PATH, "wb") as out:
+            pickle.dump(train_metrics, out)
+        self.filled_dataset = filled_dataset
+        self.filled_dataset.to_csv(FILLED_DATASET_PATH, index=False)
+        pd.isnull(dataset[self.lab_names]).to_csv(PREDICTION_MASK_PATH, index=False)
+        import data.model.metrics
+
+        importlib.reload(data.model.metrics)
+        import data.model.predictions
+
+        importlib.reload(data.model.predictions)
+
+    def test(self, latitude, longitude):
+        """
+        Given a specific latitude and longitude value, either returns saved predictions from the filled dataset, if the point is close to the
+        ones that have already been predicted, or uses a REST API to load the country to which the latitude and longitude refer, uses the country data
+        to create the feature vector and computes the prediction using the trained models.
+        Returns the series of the found labels, which also contain city and country, and the series of booleans which shows which predictions were predicted and which where not.
+        """
+        try:
+            from data.model.predictions import FILLED_DATASET, PREDICTION_MASK
+        except ImportError:
+            raise TrainingRequired("Filled Dataset")
+        check_existing = FILLED_DATASET.apply(
+            lambda x: is_close((latitude, longitude), (x["latitude"], x["longitude"])),
+            axis=1,
+        )
+        if np.any(check_existing):
+            labs = list(sorted(self.model.keys()))
+            return (
+                FILLED_DATASET.loc[check_existing, labs + ["city", "country"]].iloc[0],
+                PREDICTION_MASK.loc[check_existing, labs].iloc[0],
+            )
+        try:
+            place = get_place(latitude, longitude)
+        except AttributeError:
+            raise InvalidCoordinates
+        from data.unlabeled import COUNTRIES_DATASET
+
+        feats = COUNTRIES_DATASET.loc[place["code"]]
+        preds = {}
+        mask = {}
+        for label in self.model:
+            preds[label] = self.model[label].predict(feats)[0]
+            mask[label] = True
+        preds["city"] = place["city"]
+        preds["country"] = place["country"]
+        return pd.Series(preds), pd.Series(mask)
+
+

Instance variables

+
+
var dataset : pandas.core.frame.DataFrame
+
+

The dataset for the training step. +When it is loaded the first time, several variables are defined: +- lab_names: the labels names/columns of the dataset +- unique_labs: the unique labels values +- feat_names: the features names/columns of the dataset +- train_mask: the mask that refers to the cities that are labeled at least for one risk

+
+ +Expand source code + +
@property
+def dataset(self) -> pd.DataFrame:
+    """
+    The dataset for the training step.
+    When it is loaded the first time, several variables are defined:
+        - lab_names: the labels names/columns of the dataset
+        - unique_labs: the unique labels values
+        - feat_names: the features names/columns of the dataset
+        - train_mask: the mask that refers to the cities that are labeled at least for one risk
+    """
+    if self._dataset is None:
+        from data.labeled.preprocessed import LABELED_CITIES, RISKS_MAPPING
+        from data.dataset import DATASET as dataset
+
+        self.lab_names = sorted(RISKS_MAPPING.keys())
+        self.unique_labs = np.unique(dataset[self.lab_names].T.stack().values)
+        self.feat_names = [
+            x
+            for x in dataset.columns
+            if x not in self.lab_names and x not in LABELED_CITIES.columns
+        ]
+        self.train_mask = dataset[self.lab_names].apply(
+            lambda x: all(pd.isnull(x)), axis=1
+        )
+        self._dataset = dataset
+    return self._dataset
+
+
+
var filled_dataset : pandas.core.frame.DataFrame
+
+

The dataset that has filled labels, which were produced from the predictions

+
+ +Expand source code + +
@property
+def filled_dataset(self) -> pd.DataFrame:
+    """
+    The dataset that has filled labels, which were produced from the predictions
+    """
+    if self._filled_dataset is None:
+        try:
+            self._filled_dataset = pd.read_csv(FILLED_DATASET_PATH)
+        except IOError:
+            raise TrainingRequired("Filled Dataset")
+    return self._filled_dataset
+
+
+
var is_fitted : bool
+
+

Tries to load model from memory/disk, if it fails, returns False, else returns True

+
+ +Expand source code + +
@property
+def is_fitted(self) -> bool:
+    """
+    Tries to load model from memory/disk, if it fails, returns False, else returns True
+    """
+    try:
+        self.model
+    except TrainingRequired:
+        return False
+    return True
+
+
+
var model : sklearn.pipeline.Pipeline
+
+

If model is not defined, try to loaded from disk

+
+ +Expand source code + +
@property
+def model(self) -> Pipeline:
+    """
+    If model is not defined, try to loaded from disk
+    """
+    if self._model is None:
+        try:
+            from data.model import MODEL
+
+            self._model = MODEL
+        except ImportError:
+            raise TrainingRequired("Model")
+    return self._model
+
+
+
+

Methods

+
+
+def compute_metrics(self, y_true, y_pred) +
+
+

Compute metrics for regression labels of size nx1

+
+ +Expand source code + +
def compute_metrics(self, y_true, y_pred):
+    """
+    Compute metrics for regression labels of size nx1
+    """
+    metrics = {}
+    # Interpolate predictions to labels, eg convert 0.2 to 0, 0.7 to 1 etc.
+    y_pred_interp = self.unique_labs[
+        np.abs(np.reshape(self.unique_labs, (-1, 1)) - y_pred).argmin(axis=0)
+    ]
+    metrics["confusion_matrix"] = confusion_matrix(y_true, y_pred_interp)
+    metrics["classification_report"] = classification_report(y_true, y_pred)
+    return metrics
+
+
+
+def save_model(self) ‑> NoneType +
+
+

Saves model to memory

+
+ +Expand source code + +
def save_model(self) -> None:
+    """
+    Saves model to memory
+    """
+    with open(os.path.join(MODEL_PATH), "wb") as out:
+        pickle.dump(self.model, out)
+    import data.model
+
+    importlib.reload(data.model)
+
+
+
+def test(self, latitude, longitude) +
+
+

Given a specific latitude and longitude value, either returns saved predictions from the filled dataset, if the point is close to the +ones that have already been predicted, or uses a REST API to load the country to which the latitude and longitude refer, uses the country data +to create the feature vector and computes the prediction using the trained models. +Returns the series of the found labels, which also contain city and country, and the series of booleans which shows which predictions were predicted and which where not.

+
+ +Expand source code + +
def test(self, latitude, longitude):
+    """
+    Given a specific latitude and longitude value, either returns saved predictions from the filled dataset, if the point is close to the
+    ones that have already been predicted, or uses a REST API to load the country to which the latitude and longitude refer, uses the country data
+    to create the feature vector and computes the prediction using the trained models.
+    Returns the series of the found labels, which also contain city and country, and the series of booleans which shows which predictions were predicted and which where not.
+    """
+    try:
+        from data.model.predictions import FILLED_DATASET, PREDICTION_MASK
+    except ImportError:
+        raise TrainingRequired("Filled Dataset")
+    check_existing = FILLED_DATASET.apply(
+        lambda x: is_close((latitude, longitude), (x["latitude"], x["longitude"])),
+        axis=1,
+    )
+    if np.any(check_existing):
+        labs = list(sorted(self.model.keys()))
+        return (
+            FILLED_DATASET.loc[check_existing, labs + ["city", "country"]].iloc[0],
+            PREDICTION_MASK.loc[check_existing, labs].iloc[0],
+        )
+    try:
+        place = get_place(latitude, longitude)
+    except AttributeError:
+        raise InvalidCoordinates
+    from data.unlabeled import COUNTRIES_DATASET
+
+    feats = COUNTRIES_DATASET.loc[place["code"]]
+    preds = {}
+    mask = {}
+    for label in self.model:
+        preds[label] = self.model[label].predict(feats)[0]
+        mask[label] = True
+    preds["city"] = place["city"]
+    preds["country"] = place["country"]
+    return pd.Series(preds), pd.Series(mask)
+
+
+
+def train(self) ‑> NoneType +
+
+
    +
  • Trains 7 different models, one per each different water security risk.
  • +
  • Applies feature selection and generation per different model.
  • +
  • Keeps 0.3 validation size, computes classification metrics, saves them, then fits each model to the whole available dataset for each risk.
  • +
  • Creates the filled dataset and saves it to disk
  • +
  • Creates the prediction mask (what labels from the filled dataset were predicted) and saves it to memory
  • +
+
+ +Expand source code + +
def train(self) -> None:
+    """
+    - Trains 7 different models, one per each different water security risk.
+    - Applies feature selection and generation per different model.
+    - Keeps 0.3 validation size, computes classification metrics, saves them, then fits each model to the whole available dataset for each risk.
+    - Creates the filled dataset and saves it to disk
+    - Creates the prediction mask (what labels from the filled dataset were predicted) and saves it to memory
+    """
+    dataset = self.dataset
+    labeled = dataset[self.train_mask]
+    labeled[self.lab_names]
+
+    model = {}
+    train_metrics = {}
+    valid_metrics = {}
+    filled_dataset = dataset[self.lab_names + self.id_columns].copy()
+    for label in self.lab_names:
+        train_mask = ~pd.isnull(dataset[label])
+        labeled = dataset.loc[train_mask, :]
+        train_set, valid_set = train_test_split(
+            labeled, test_size=0.3, random_state=RANDOM_SEED
+        )
+
+        model[label] = Pipeline(
+            [
+                ("FeatureSelection", FeatureSelectionAndGeneration()),
+                ("Classification", Classifier()),
+            ]
+        )
+        model[label].fit(train_set[self.feat_names], train_set[label])
+        train_preds = model[label].predict(train_set[self.feat_names])
+        valid_preds = model[label].predict(valid_set[self.feat_names])
+        train_metrics[label] = self.compute_metrics(train_set[label], train_preds)
+        valid_metrics[label] = self.compute_metrics(valid_set[label], valid_preds)
+        model[label].fit(labeled[self.feat_names], labeled[label])
+
+        filled_dataset.loc[~train_mask, label] = model[label].predict(
+            dataset.loc[~train_mask, self.feat_names]
+        )
+    self.model = model
+    self.save_model()
+    with open(VALIDATION_METRICS_PATH, "wb") as out:
+        pickle.dump(valid_metrics, out)
+    with open(TRAINING_METRICS_PATH, "wb") as out:
+        pickle.dump(train_metrics, out)
+    self.filled_dataset = filled_dataset
+    self.filled_dataset.to_csv(FILLED_DATASET_PATH, index=False)
+    pd.isnull(dataset[self.lab_names]).to_csv(PREDICTION_MASK_PATH, index=False)
+    import data.model.metrics
+
+    importlib.reload(data.model.metrics)
+    import data.model.predictions
+
+    importlib.reload(data.model.predictions)
+
+
+
+
+
+class TrainingRequired +(obj) +
+
+

Exception class to raise if estimator is used before fitting.

+

This class inherits from both ValueError and AttributeError to help with +exception handling and backward compatibility.

+

Examples

+
>>> from sklearn.svm import LinearSVC
+>>> from sklearn.exceptions import NotFittedError
+>>> try:
+...     LinearSVC().predict([[1, 2], [2, 3], [3, 4]])
+... except NotFittedError as e:
+...     print(repr(e))
+NotFittedError("This LinearSVC instance is not fitted yet. Call 'fit' with
+appropriate arguments before using this estimator."...)
+
+
+

Changed in version: 0.18

+

Moved from sklearn.utils.validation.

+
+
+ +Expand source code + +
class TrainingRequired(NotFittedError):
+    def __init__(self, obj):
+        super().__init__(f"{obj} could not be loaded. Training model is required")
+
+

Ancestors

+
    +
  • sklearn.exceptions.NotFittedError
  • +
  • builtins.ValueError
  • +
  • builtins.AttributeError
  • +
  • builtins.Exception
  • +
  • builtins.BaseException
  • +
+
+
+
+
+ +
+ + + \ No newline at end of file diff --git a/documentation/WaterSecurity/index.html b/documentation/WaterSecurity/index.html new file mode 100644 index 0000000..9503205 --- /dev/null +++ b/documentation/WaterSecurity/index.html @@ -0,0 +1,75 @@ + + + + + + +WaterSecurity API documentation + + + + + + + + + + + +
+ + +
+ + + \ No newline at end of file diff --git a/documentation/WaterSecurity/labeled_preprocessing/imputation.html b/documentation/WaterSecurity/labeled_preprocessing/imputation.html new file mode 100644 index 0000000..4b9553f --- /dev/null +++ b/documentation/WaterSecurity/labeled_preprocessing/imputation.html @@ -0,0 +1,418 @@ + + + + + + +WaterSecurity.labeled_preprocessing.imputation API documentation + + + + + + + + + + + +
+
+
+

Module WaterSecurity.labeled_preprocessing.imputation

+
+
+
+ +Expand source code + +
from sklearn.experimental import enable_iterative_imputer
+from sklearn.impute import IterativeImputer
+from sklearn.neighbors import KNeighborsRegressor
+from sklearn.ensemble import RandomForestClassifier
+from sklearn.pipeline import make_pipeline
+from sklearn.feature_selection import SelectKBest, f_classif
+import numpy as np
+
+
+class LabeledDatasetImputer:
+    """
+    Imputes missing data on y. Assumes also missing data on X. Uses two different types of imputation, as it assumes that y is Categorical
+    k_features_per_label: the number of features to keep from X for the imputation, defaults to 0 (no features selection)
+    verbose: verbosity of the iterative imputers, defaults to 0
+    seed: the random seed, defaults to 42
+    labels_est: the estimator object to be used during labels imputation
+    feats_est: the estimator object to be used during features estimation
+    """
+
+    def __init__(
+        self,
+        k_features_per_label=0,
+        verbose=0,
+        seed=42,
+        labels_est=None,
+        feats_est=None,
+    ):
+        self.x_imputer = None
+        self.y_imputer = None
+        self.verbose = verbose
+        self.selection_mask = None
+        self.seed = seed
+        self.k_features_per_label = k_features_per_label
+        self.labels_est = labels_est
+        self.feats_est = feats_est
+
+    def create_selection_mask(self, X, y):
+        if not self.k_features_per_label:
+            return np.zeros(X.shape[1]) == 0
+        selection_mask = None
+        for cnt in range(y.shape[1]):
+            labeled = ~np.isnan(y[:, cnt])
+            _y = y[labeled, cnt]
+            _x = X[labeled, :]
+
+            selector = SelectKBest(f_classif, k=self.k_features_per_label).fit(
+                np.nan_to_num(_x), _y
+            )
+            if selection_mask is None:
+                selection_mask = selector.get_support()
+            else:
+                selection_mask = (selection_mask + selector.get_support()) > 0
+        return selection_mask
+
+    def fit_transform(self, X, y, ret_imputed_x=False):
+        """
+        X: nxp matrix
+        y: nxv matrix
+        Both matrices are allowed to have missing values
+        if `ret_imputed_x`, return (imputed_x,imputed_y), otherwise return imputed_y
+        """
+        print("Applying feature selection..")
+        self.selection_mask = self.create_selection_mask(X, y)
+        if self.feats_est is None:
+            self.feats_est = KNeighborsRegressor(n_neighbors=5)
+
+        print(f"Creating imputed X using {self.feats_est.__class__.__name__}..")
+        self.x_imputer = IterativeImputer(
+            estimator=self.feats_est,
+            initial_strategy="most_frequent",
+            verbose=self.verbose,
+            n_nearest_features=200,
+            random_state=self.seed,
+            skip_complete=True,
+        )
+        imputed_x = self.x_imputer.fit_transform(X[:, self.selection_mask])
+        if self.labels_est is None:
+            self.labels_est = make_pipeline(
+                SelectKBest(
+                    f_classif, k=min(int(0.1 * X.shape[0]), imputed_x.shape[1])
+                ),
+                RandomForestClassifier(n_estimators=50, random_state=self.seed),
+            )
+        print(f"Creating imputed Y using {self.labels_est.__class__.__name__}..")
+        self.y_imputer = IterativeImputer(
+            estimator=self.labels_est,
+            initial_strategy="most_frequent",
+            max_iter=10,
+            random_state=self.seed,
+            skip_complete=True,
+            verbose=self.verbose,
+        )
+        imputed_y = self.y_imputer.fit_transform(np.hstack([y, imputed_x]))[
+            :, : y.shape[1]
+        ]
+        if ret_imputed_x:
+            return imputed_x, imputed_y
+        return imputed_y
+
+    def transform(self, X, y, ret_imputed_x=False):
+        """
+        X: nxp matrix
+        y: nxv matrix
+        Both matrices are allowed to have missing values
+        if `ret_imputed_x`, return (imputed_x,imputed_y), otherwise return imputed_y
+        """
+        imputed_x = self.x_imputer.transform(X[:, self.selection_mask])
+        ret = self.y_imputer.transform(np.hstack([y, imputed_x]))[:, : y.shape[1]]
+        if ret_imputed_x:
+            return imputed_x, ret
+        return ret
+
+
+
+
+
+
+
+
+
+

Classes

+
+
+class LabeledDatasetImputer +(k_features_per_label=0, verbose=0, seed=42, labels_est=None, feats_est=None) +
+
+

Imputes missing data on y. Assumes also missing data on X. Uses two different types of imputation, as it assumes that y is Categorical +k_features_per_label: the number of features to keep from X for the imputation, defaults to 0 (no features selection) +verbose: verbosity of the iterative imputers, defaults to 0 +seed: the random seed, defaults to 42 +labels_est: the estimator object to be used during labels imputation +feats_est: the estimator object to be used during features estimation

+
+ +Expand source code + +
class LabeledDatasetImputer:
+    """
+    Imputes missing data on y. Assumes also missing data on X. Uses two different types of imputation, as it assumes that y is Categorical
+    k_features_per_label: the number of features to keep from X for the imputation, defaults to 0 (no features selection)
+    verbose: verbosity of the iterative imputers, defaults to 0
+    seed: the random seed, defaults to 42
+    labels_est: the estimator object to be used during labels imputation
+    feats_est: the estimator object to be used during features estimation
+    """
+
+    def __init__(
+        self,
+        k_features_per_label=0,
+        verbose=0,
+        seed=42,
+        labels_est=None,
+        feats_est=None,
+    ):
+        self.x_imputer = None
+        self.y_imputer = None
+        self.verbose = verbose
+        self.selection_mask = None
+        self.seed = seed
+        self.k_features_per_label = k_features_per_label
+        self.labels_est = labels_est
+        self.feats_est = feats_est
+
+    def create_selection_mask(self, X, y):
+        if not self.k_features_per_label:
+            return np.zeros(X.shape[1]) == 0
+        selection_mask = None
+        for cnt in range(y.shape[1]):
+            labeled = ~np.isnan(y[:, cnt])
+            _y = y[labeled, cnt]
+            _x = X[labeled, :]
+
+            selector = SelectKBest(f_classif, k=self.k_features_per_label).fit(
+                np.nan_to_num(_x), _y
+            )
+            if selection_mask is None:
+                selection_mask = selector.get_support()
+            else:
+                selection_mask = (selection_mask + selector.get_support()) > 0
+        return selection_mask
+
+    def fit_transform(self, X, y, ret_imputed_x=False):
+        """
+        X: nxp matrix
+        y: nxv matrix
+        Both matrices are allowed to have missing values
+        if `ret_imputed_x`, return (imputed_x,imputed_y), otherwise return imputed_y
+        """
+        print("Applying feature selection..")
+        self.selection_mask = self.create_selection_mask(X, y)
+        if self.feats_est is None:
+            self.feats_est = KNeighborsRegressor(n_neighbors=5)
+
+        print(f"Creating imputed X using {self.feats_est.__class__.__name__}..")
+        self.x_imputer = IterativeImputer(
+            estimator=self.feats_est,
+            initial_strategy="most_frequent",
+            verbose=self.verbose,
+            n_nearest_features=200,
+            random_state=self.seed,
+            skip_complete=True,
+        )
+        imputed_x = self.x_imputer.fit_transform(X[:, self.selection_mask])
+        if self.labels_est is None:
+            self.labels_est = make_pipeline(
+                SelectKBest(
+                    f_classif, k=min(int(0.1 * X.shape[0]), imputed_x.shape[1])
+                ),
+                RandomForestClassifier(n_estimators=50, random_state=self.seed),
+            )
+        print(f"Creating imputed Y using {self.labels_est.__class__.__name__}..")
+        self.y_imputer = IterativeImputer(
+            estimator=self.labels_est,
+            initial_strategy="most_frequent",
+            max_iter=10,
+            random_state=self.seed,
+            skip_complete=True,
+            verbose=self.verbose,
+        )
+        imputed_y = self.y_imputer.fit_transform(np.hstack([y, imputed_x]))[
+            :, : y.shape[1]
+        ]
+        if ret_imputed_x:
+            return imputed_x, imputed_y
+        return imputed_y
+
+    def transform(self, X, y, ret_imputed_x=False):
+        """
+        X: nxp matrix
+        y: nxv matrix
+        Both matrices are allowed to have missing values
+        if `ret_imputed_x`, return (imputed_x,imputed_y), otherwise return imputed_y
+        """
+        imputed_x = self.x_imputer.transform(X[:, self.selection_mask])
+        ret = self.y_imputer.transform(np.hstack([y, imputed_x]))[:, : y.shape[1]]
+        if ret_imputed_x:
+            return imputed_x, ret
+        return ret
+
+

Methods

+
+
+def create_selection_mask(self, X, y) +
+
+
+
+ +Expand source code + +
def create_selection_mask(self, X, y):
+    if not self.k_features_per_label:
+        return np.zeros(X.shape[1]) == 0
+    selection_mask = None
+    for cnt in range(y.shape[1]):
+        labeled = ~np.isnan(y[:, cnt])
+        _y = y[labeled, cnt]
+        _x = X[labeled, :]
+
+        selector = SelectKBest(f_classif, k=self.k_features_per_label).fit(
+            np.nan_to_num(_x), _y
+        )
+        if selection_mask is None:
+            selection_mask = selector.get_support()
+        else:
+            selection_mask = (selection_mask + selector.get_support()) > 0
+    return selection_mask
+
+
+
+def fit_transform(self, X, y, ret_imputed_x=False) +
+
+

X: nxp matrix +y: nxv matrix +Both matrices are allowed to have missing values +if ret_imputed_x, return (imputed_x,imputed_y), otherwise return imputed_y

+
+ +Expand source code + +
def fit_transform(self, X, y, ret_imputed_x=False):
+    """
+    X: nxp matrix
+    y: nxv matrix
+    Both matrices are allowed to have missing values
+    if `ret_imputed_x`, return (imputed_x,imputed_y), otherwise return imputed_y
+    """
+    print("Applying feature selection..")
+    self.selection_mask = self.create_selection_mask(X, y)
+    if self.feats_est is None:
+        self.feats_est = KNeighborsRegressor(n_neighbors=5)
+
+    print(f"Creating imputed X using {self.feats_est.__class__.__name__}..")
+    self.x_imputer = IterativeImputer(
+        estimator=self.feats_est,
+        initial_strategy="most_frequent",
+        verbose=self.verbose,
+        n_nearest_features=200,
+        random_state=self.seed,
+        skip_complete=True,
+    )
+    imputed_x = self.x_imputer.fit_transform(X[:, self.selection_mask])
+    if self.labels_est is None:
+        self.labels_est = make_pipeline(
+            SelectKBest(
+                f_classif, k=min(int(0.1 * X.shape[0]), imputed_x.shape[1])
+            ),
+            RandomForestClassifier(n_estimators=50, random_state=self.seed),
+        )
+    print(f"Creating imputed Y using {self.labels_est.__class__.__name__}..")
+    self.y_imputer = IterativeImputer(
+        estimator=self.labels_est,
+        initial_strategy="most_frequent",
+        max_iter=10,
+        random_state=self.seed,
+        skip_complete=True,
+        verbose=self.verbose,
+    )
+    imputed_y = self.y_imputer.fit_transform(np.hstack([y, imputed_x]))[
+        :, : y.shape[1]
+    ]
+    if ret_imputed_x:
+        return imputed_x, imputed_y
+    return imputed_y
+
+
+
+def transform(self, X, y, ret_imputed_x=False) +
+
+

X: nxp matrix +y: nxv matrix +Both matrices are allowed to have missing values +if ret_imputed_x, return (imputed_x,imputed_y), otherwise return imputed_y

+
+ +Expand source code + +
def transform(self, X, y, ret_imputed_x=False):
+    """
+    X: nxp matrix
+    y: nxv matrix
+    Both matrices are allowed to have missing values
+    if `ret_imputed_x`, return (imputed_x,imputed_y), otherwise return imputed_y
+    """
+    imputed_x = self.x_imputer.transform(X[:, self.selection_mask])
+    ret = self.y_imputer.transform(np.hstack([y, imputed_x]))[:, : y.shape[1]]
+    if ret_imputed_x:
+        return imputed_x, ret
+    return ret
+
+
+
+
+
+
+
+ +
+ + + \ No newline at end of file diff --git a/documentation/WaterSecurity/labeled_preprocessing/index.html b/documentation/WaterSecurity/labeled_preprocessing/index.html new file mode 100644 index 0000000..b903ad0 --- /dev/null +++ b/documentation/WaterSecurity/labeled_preprocessing/index.html @@ -0,0 +1,65 @@ + + + + + + +WaterSecurity.labeled_preprocessing API documentation + + + + + + + + + + + +
+ + +
+ + + \ No newline at end of file diff --git a/documentation/WaterSecurity/unlabeled_preprocessing/helpers.html b/documentation/WaterSecurity/unlabeled_preprocessing/helpers.html new file mode 100644 index 0000000..bc4a713 --- /dev/null +++ b/documentation/WaterSecurity/unlabeled_preprocessing/helpers.html @@ -0,0 +1,211 @@ + + + + + + +WaterSecurity.unlabeled_preprocessing.helpers API documentation + + + + + + + + + + + +
+
+
+

Module WaterSecurity.unlabeled_preprocessing.helpers

+
+
+
+ +Expand source code + +
from sklearn.experimental import enable_iterative_imputer
+from sklearn.impute import IterativeImputer
+import pandas as pd
+
+def dropColumnHalf(df):
+    """
+    Removes columns where the number of missig values is 50% or more
+    """
+    df.dropna(thresh=len(df.index)/2, axis=1, inplace=True)
+
+def fill_missing_with_column(df, into, fro):
+    """
+    Merges one column into the other filling null values of the into colun and removing the fro column
+    """
+    df[into] = df[into].combine_first(df[fro])
+    df.drop([fro], axis=1, inplace = True)
+
+    
+def impute_df(df,verbose=0, **kwargs):
+    """
+    Imputes a df and returns a dataframe with the original and imputed values
+    """
+    imp = IterativeImputer(verbose=verbose, **kwargs)
+    imp.fit_transform(df)
+    imputed_df = imp.transform(df)
+    return pd.DataFrame(imputed_df, columns=df.columns,index=df.index)
+
+def print_missing_percentages(df):
+    """
+    Max, min and mean number of missing values for the columns
+    """
+    percent_missing = df.isnull().sum() * 100 / len(df)
+    max_missing = percent_missing.max()
+    min_missing = percent_missing.min()
+    mean_missing = percent_missing.mean()
+    print("Max, min and mean number of missing values for the columns")
+    print("Max:", max_missing,'%')
+    print("Min:", min_missing,'%')
+    print("Mean:", mean_missing,'%')
+    return min_missing, max_missing
+
+
+def find_all_integer_columns(df):
+    """
+    Returns an array of all colums that contain only integers or null values
+    """
+    integer_columns = df.applymap(lambda x: int(x)==x if pd.notnull(x) else x).prod().values.astype(bool)
+    return df.columns[integer_columns].values
+
+
+
+
+
+
+
+

Functions

+
+
+def dropColumnHalf(df) +
+
+

Removes columns where the number of missig values is 50% or more

+
+ +Expand source code + +
def dropColumnHalf(df):
+    """
+    Removes columns where the number of missig values is 50% or more
+    """
+    df.dropna(thresh=len(df.index)/2, axis=1, inplace=True)
+
+
+
+def fill_missing_with_column(df, into, fro) +
+
+

Merges one column into the other filling null values of the into colun and removing the fro column

+
+ +Expand source code + +
def fill_missing_with_column(df, into, fro):
+    """
+    Merges one column into the other filling null values of the into colun and removing the fro column
+    """
+    df[into] = df[into].combine_first(df[fro])
+    df.drop([fro], axis=1, inplace = True)
+
+
+
+def find_all_integer_columns(df) +
+
+

Returns an array of all colums that contain only integers or null values

+
+ +Expand source code + +
def find_all_integer_columns(df):
+    """
+    Returns an array of all colums that contain only integers or null values
+    """
+    integer_columns = df.applymap(lambda x: int(x)==x if pd.notnull(x) else x).prod().values.astype(bool)
+    return df.columns[integer_columns].values
+
+
+
+def impute_df(df, verbose=0, **kwargs) +
+
+

Imputes a df and returns a dataframe with the original and imputed values

+
+ +Expand source code + +
def impute_df(df,verbose=0, **kwargs):
+    """
+    Imputes a df and returns a dataframe with the original and imputed values
+    """
+    imp = IterativeImputer(verbose=verbose, **kwargs)
+    imp.fit_transform(df)
+    imputed_df = imp.transform(df)
+    return pd.DataFrame(imputed_df, columns=df.columns,index=df.index)
+
+
+
+def print_missing_percentages(df) +
+
+

Max, min and mean number of missing values for the columns

+
+ +Expand source code + +
def print_missing_percentages(df):
+    """
+    Max, min and mean number of missing values for the columns
+    """
+    percent_missing = df.isnull().sum() * 100 / len(df)
+    max_missing = percent_missing.max()
+    min_missing = percent_missing.min()
+    mean_missing = percent_missing.mean()
+    print("Max, min and mean number of missing values for the columns")
+    print("Max:", max_missing,'%')
+    print("Min:", min_missing,'%')
+    print("Mean:", mean_missing,'%')
+    return min_missing, max_missing
+
+
+
+
+
+
+
+ +
+ + + \ No newline at end of file diff --git a/documentation/WaterSecurity/unlabeled_preprocessing/index.html b/documentation/WaterSecurity/unlabeled_preprocessing/index.html new file mode 100644 index 0000000..2e19913 --- /dev/null +++ b/documentation/WaterSecurity/unlabeled_preprocessing/index.html @@ -0,0 +1,65 @@ + + + + + + +WaterSecurity.unlabeled_preprocessing API documentation + + + + + + + + + + + +
+ + +
+ + + \ No newline at end of file diff --git a/documentation/WaterSecurity/utils/geo.html b/documentation/WaterSecurity/utils/geo.html new file mode 100644 index 0000000..917fb00 --- /dev/null +++ b/documentation/WaterSecurity/utils/geo.html @@ -0,0 +1,470 @@ + + + + + + +WaterSecurity.utils.geo API documentation + + + + + + + + + + + +
+
+
+

Module WaterSecurity.utils.geo

+
+
+
+ +Expand source code + +
from math import sqrt
+import requests
+
+import xml.etree.ElementTree as ET
+from typing import TypedDict
+import haversine as hs
+
+TWO_TO_THREE_LETTER_CODE = {
+    "AF": "AFG",
+    "AX": "ALA",
+    "AL": "ALB",
+    "DZ": "DZA",
+    "AS": "ASM",
+    "AD": "AND",
+    "AO": "AGO",
+    "AI": "AIA",
+    "AQ": "ATA",
+    "AG": "ATG",
+    "AR": "ARG",
+    "AM": "ARM",
+    "AW": "ABW",
+    "AU": "AUS",
+    "AT": "AUT",
+    "AZ": "AZE",
+    "BS": "BHS",
+    "BH": "BHR",
+    "BD": "BGD",
+    "BB": "BRB",
+    "BY": "BLR",
+    "BE": "BEL",
+    "BZ": "BLZ",
+    "BJ": "BEN",
+    "BM": "BMU",
+    "BT": "BTN",
+    "BO": "BOL",
+    "BA": "BIH",
+    "BW": "BWA",
+    "BV": "BVT",
+    "BR": "BRA",
+    "IO": "IOT",
+    "BN": "BRN",
+    "BG": "BGR",
+    "BF": "BFA",
+    "BI": "BDI",
+    "KH": "KHM",
+    "CM": "CMR",
+    "CA": "CAN",
+    "CV": "CPV",
+    "KY": "CYM",
+    "CF": "CAF",
+    "TD": "TCD",
+    "CL": "CHL",
+    "CN": "CHN",
+    "CX": "CXR",
+    "CC": "CCK",
+    "CO": "COL",
+    "KM": "COM",
+    "CG": "COG",
+    "CD": "COD",
+    "CK": "COK",
+    "CR": "CRI",
+    "CI": "CIV",
+    "HR": "HRV",
+    "CU": "CUB",
+    "CY": "CYP",
+    "CZ": "CZE",
+    "DK": "DNK",
+    "DJ": "DJI",
+    "DM": "DMA",
+    "DO": "DOM",
+    "EC": "ECU",
+    "EG": "EGY",
+    "SV": "SLV",
+    "GQ": "GNQ",
+    "ER": "ERI",
+    "EE": "EST",
+    "ET": "ETH",
+    "FK": "FLK",
+    "FO": "FRO",
+    "FJ": "FJI",
+    "FI": "FIN",
+    "FR": "FRA",
+    "GF": "GUF",
+    "PF": "PYF",
+    "TF": "ATF",
+    "GA": "GAB",
+    "GM": "GMB",
+    "GE": "GEO",
+    "DE": "DEU",
+    "GH": "GHA",
+    "GI": "GIB",
+    "GR": "GRC",
+    "GL": "GRL",
+    "GD": "GRD",
+    "GP": "GLP",
+    "GU": "GUM",
+    "GT": "GTM",
+    "GG": "GGY",
+    "GN": "GIN",
+    "GW": "GNB",
+    "GY": "GUY",
+    "HT": "HTI",
+    "HM": "HMD",
+    "VA": "VAT",
+    "HN": "HND",
+    "HK": "HKG",
+    "HU": "HUN",
+    "IS": "ISL",
+    "IN": "IND",
+    "ID": "IDN",
+    "IR": "IRN",
+    "IQ": "IRQ",
+    "IE": "IRL",
+    "IM": "IMN",
+    "IL": "ISR",
+    "IT": "ITA",
+    "JM": "JAM",
+    "JP": "JPN",
+    "JE": "JEY",
+    "JO": "JOR",
+    "KZ": "KAZ",
+    "KE": "KEN",
+    "KI": "KIR",
+    "KP": "PRK",
+    "KR": "KOR",
+    "KW": "KWT",
+    "KG": "KGZ",
+    "LA": "LAO",
+    "LV": "LVA",
+    "LB": "LBN",
+    "LS": "LSO",
+    "LR": "LBR",
+    "LY": "LBY",
+    "LI": "LIE",
+    "LT": "LTU",
+    "LU": "LUX",
+    "MO": "MAC",
+    "MK": "MKD",
+    "MG": "MDG",
+    "MW": "MWI",
+    "MY": "MYS",
+    "MV": "MDV",
+    "ML": "MLI",
+    "MT": "MLT",
+    "MH": "MHL",
+    "MQ": "MTQ",
+    "MR": "MRT",
+    "MU": "MUS",
+    "YT": "MYT",
+    "MX": "MEX",
+    "FM": "FSM",
+    "MD": "MDA",
+    "MC": "MCO",
+    "MN": "MNG",
+    "ME": "MNE",
+    "MS": "MSR",
+    "MA": "MAR",
+    "MZ": "MOZ",
+    "MM": "MMR",
+    "NA": "NAM",
+    "NR": "NRU",
+    "NP": "NPL",
+    "NL": "NLD",
+    "AN": "ANT",
+    "NC": "NCL",
+    "NZ": "NZL",
+    "NI": "NIC",
+    "NE": "NER",
+    "NG": "NGA",
+    "NU": "NIU",
+    "NF": "NFK",
+    "MP": "MNP",
+    "NO": "NOR",
+    "OM": "OMN",
+    "PK": "PAK",
+    "PW": "PLW",
+    "PS": "PSE",
+    "PA": "PAN",
+    "PG": "PNG",
+    "PY": "PRY",
+    "PE": "PER",
+    "PH": "PHL",
+    "PN": "PCN",
+    "PL": "POL",
+    "PT": "PRT",
+    "PR": "PRI",
+    "QA": "QAT",
+    "RE": "REU",
+    "RO": "ROU",
+    "RU": "RUS",
+    "RW": "RWA",
+    "BL": "BLM",
+    "SH": "SHN",
+    "KN": "KNA",
+    "LC": "LCA",
+    "MF": "MAF",
+    "PM": "SPM",
+    "VC": "VCT",
+    "WS": "WSM",
+    "SM": "SMR",
+    "ST": "STP",
+    "SA": "SAU",
+    "SN": "SEN",
+    "RS": "SRB",
+    "SC": "SYC",
+    "SL": "SLE",
+    "SG": "SGP",
+    "SK": "SVK",
+    "SI": "SVN",
+    "SB": "SLB",
+    "SO": "SOM",
+    "ZA": "ZAF",
+    "GS": "SGS",
+    "ES": "ESP",
+    "LK": "LKA",
+    "SD": "SDN",
+    "SR": "SUR",
+    "SJ": "SJM",
+    "SZ": "SWZ",
+    "SE": "SWE",
+    "CH": "CHE",
+    "SY": "SYR",
+    "TW": "TWN",
+    "TJ": "TJK",
+    "TZ": "TZA",
+    "TH": "THA",
+    "TL": "TLS",
+    "TG": "TGO",
+    "TK": "TKL",
+    "TO": "TON",
+    "TT": "TTO",
+    "TN": "TUN",
+    "TR": "TUR",
+    "TM": "TKM",
+    "TC": "TCA",
+    "TV": "TUV",
+    "UG": "UGA",
+    "UA": "UKR",
+    "AE": "ARE",
+    "GB": "GBR",
+    "US": "USA",
+    "UM": "UMI",
+    "UY": "URY",
+    "UZ": "UZB",
+    "VU": "VUT",
+    "VE": "VEN",
+    "VN": "VNM",
+    "VG": "VGB",
+    "VI": "VIR",
+    "WF": "WLF",
+    "EH": "ESH",
+    "YE": "YEM",
+    "ZM": "ZMB",
+    "ZW": "ZWE",
+}
+
+
+class PlaceInfo(TypedDict):
+    city: str
+    country: str
+    code: str
+
+
+def get_place(latitude: float, longitude: float) -> PlaceInfo:
+    """
+    Returns city, country and country 3-letter code, given latitude and longitude
+    Raises if the supplied coordinates cannot be matched to a specific country (eg if those refer to sea area)
+    """
+    req = requests.get(
+        f"http://api.geonames.org/findNearbyPlaceName?lat={latitude}&lng={longitude}&cities=cities15000&username=vaslem"
+    )
+    tree = ET.fromstring(req.text)
+    geoname = tree.find("geoname")
+    try:
+        city = geoname.find("toponymName").text
+        country = geoname.find("countryName").text
+        code = geoname.find("countryCode").text
+        return {
+            "city": city,
+            "country": country,
+            "code": TWO_TO_THREE_LETTER_CODE[code],
+        }
+    except AttributeError:
+        raise
+
+
+def is_close(loc1, loc2, thres: float = 3) -> bool:
+    """
+    Accepts 2 points defined by 2 coordinates (iterables of size 2) and based on a distance threshold (in km),
+    returns whether those points are close or not to each other
+    """
+    return hs.haversine(loc1, loc2) < thres
+
+
+
+
+
+
+
+

Functions

+
+
+def get_place(latitude: float, longitude: float) ‑> PlaceInfo +
+
+

Returns city, country and country 3-letter code, given latitude and longitude +Raises if the supplied coordinates cannot be matched to a specific country (eg if those refer to sea area)

+
+ +Expand source code + +
def get_place(latitude: float, longitude: float) -> PlaceInfo:
+    """
+    Returns city, country and country 3-letter code, given latitude and longitude
+    Raises if the supplied coordinates cannot be matched to a specific country (eg if those refer to sea area)
+    """
+    req = requests.get(
+        f"http://api.geonames.org/findNearbyPlaceName?lat={latitude}&lng={longitude}&cities=cities15000&username=vaslem"
+    )
+    tree = ET.fromstring(req.text)
+    geoname = tree.find("geoname")
+    try:
+        city = geoname.find("toponymName").text
+        country = geoname.find("countryName").text
+        code = geoname.find("countryCode").text
+        return {
+            "city": city,
+            "country": country,
+            "code": TWO_TO_THREE_LETTER_CODE[code],
+        }
+    except AttributeError:
+        raise
+
+
+
+def is_close(loc1, loc2, thres: float = 3) ‑> bool +
+
+

Accepts 2 points defined by 2 coordinates (iterables of size 2) and based on a distance threshold (in km), +returns whether those points are close or not to each other

+
+ +Expand source code + +
def is_close(loc1, loc2, thres: float = 3) -> bool:
+    """
+    Accepts 2 points defined by 2 coordinates (iterables of size 2) and based on a distance threshold (in km),
+    returns whether those points are close or not to each other
+    """
+    return hs.haversine(loc1, loc2) < thres
+
+
+
+
+
+

Classes

+
+
+class PlaceInfo +(*args, **kwargs) +
+
+

dict() -> new empty dictionary +dict(mapping) -> new dictionary initialized from a mapping object's +(key, value) pairs +dict(iterable) -> new dictionary initialized as if via: +d = {} +for k, v in iterable: +d[k] = v +dict(**kwargs) -> new dictionary initialized with the name=value pairs +in the keyword argument list. +For example: +dict(one=1, two=2)

+
+ +Expand source code + +
class PlaceInfo(TypedDict):
+    city: str
+    country: str
+    code: str
+
+

Ancestors

+
    +
  • builtins.dict
  • +
+

Class variables

+
+
var city : str
+
+
+
+
var code : str
+
+
+
+
var country : str
+
+
+
+
+
+
+
+
+ +
+ + + \ No newline at end of file diff --git a/documentation/WaterSecurity/utils/index.html b/documentation/WaterSecurity/utils/index.html new file mode 100644 index 0000000..fa88845 --- /dev/null +++ b/documentation/WaterSecurity/utils/index.html @@ -0,0 +1,70 @@ + + + + + + +WaterSecurity.utils API documentation + + + + + + + + + + + +
+ + +
+ + + \ No newline at end of file diff --git a/documentation/WaterSecurity/utils/nlp.html b/documentation/WaterSecurity/utils/nlp.html new file mode 100644 index 0000000..61358c8 --- /dev/null +++ b/documentation/WaterSecurity/utils/nlp.html @@ -0,0 +1,287 @@ + + + + + + +WaterSecurity.utils.nlp API documentation + + + + + + + + + + + +
+
+
+

Module WaterSecurity.utils.nlp

+
+
+
+ +Expand source code + +
import numpy as np
+import spacy
+
+try:
+    nlp = spacy.load("en_core_web_md")
+except:
+    spacy.cli.download("en_core_web_md")
+    nlp = spacy.load("en_core_web_md")
+
+from sklearn.base import BaseEstimator, TransformerMixin
+
+
+class SimilarityAnalysis(BaseEstimator, TransformerMixin):
+    """
+    Creates similarity matrix to the provided pandas series. Can be fitted to a specific data.
+    The computed non empty spacy vectors will then be used as reference to compare with another
+    dataset.
+    """
+
+    def __init__(self):
+        self.similarity_vectors = None
+
+    def fit(self, description):
+        """
+        Creates an sxs matrix
+        """
+        ret = description.apply(lambda x: nlp(".".join(x)))
+        self.similarity_vectors = [x for x in ret if x]
+        return self
+
+    def transform(self, description):
+        """
+        Produces a nxs matrix
+        """
+        ret = description.apply(lambda x: nlp(".".join(x)))
+        ret = np.vstack(
+            ret.apply(
+                lambda x: [
+                    (x.similarity(y) if x else np.nan) for y in self.similarity_vectors
+                ]
+            )
+        )
+        return ret
+
+    def fit_transform(self, description):
+        """
+        Produces a nxn matrix
+        """
+        ret = description.apply(lambda x: nlp(".".join(x)))
+        self.similarity_vectors = [x for x in ret if x]
+        ret = ret.apply(
+            lambda x: [
+                (x.similarity(y) if x else np.nan) for y in self.similarity_vectors
+            ]
+        )
+        ret = np.vstack(ret)
+        return ret
+
+
+def create_sim_vector(description):
+    return SimilarityAnalysis().fit_transform(description)
+
+
+
+
+
+
+
+

Functions

+
+
+def create_sim_vector(description) +
+
+
+
+ +Expand source code + +
def create_sim_vector(description):
+    return SimilarityAnalysis().fit_transform(description)
+
+
+
+
+
+

Classes

+
+
+class SimilarityAnalysis +
+
+

Creates similarity matrix to the provided pandas series. Can be fitted to a specific data. +The computed non empty spacy vectors will then be used as reference to compare with another +dataset.

+
+ +Expand source code + +
class SimilarityAnalysis(BaseEstimator, TransformerMixin):
+    """
+    Creates similarity matrix to the provided pandas series. Can be fitted to a specific data.
+    The computed non empty spacy vectors will then be used as reference to compare with another
+    dataset.
+    """
+
+    def __init__(self):
+        self.similarity_vectors = None
+
+    def fit(self, description):
+        """
+        Creates an sxs matrix
+        """
+        ret = description.apply(lambda x: nlp(".".join(x)))
+        self.similarity_vectors = [x for x in ret if x]
+        return self
+
+    def transform(self, description):
+        """
+        Produces a nxs matrix
+        """
+        ret = description.apply(lambda x: nlp(".".join(x)))
+        ret = np.vstack(
+            ret.apply(
+                lambda x: [
+                    (x.similarity(y) if x else np.nan) for y in self.similarity_vectors
+                ]
+            )
+        )
+        return ret
+
+    def fit_transform(self, description):
+        """
+        Produces a nxn matrix
+        """
+        ret = description.apply(lambda x: nlp(".".join(x)))
+        self.similarity_vectors = [x for x in ret if x]
+        ret = ret.apply(
+            lambda x: [
+                (x.similarity(y) if x else np.nan) for y in self.similarity_vectors
+            ]
+        )
+        ret = np.vstack(ret)
+        return ret
+
+

Ancestors

+
    +
  • sklearn.base.BaseEstimator
  • +
  • sklearn.base.TransformerMixin
  • +
+

Methods

+
+
+def fit(self, description) +
+
+

Creates an sxs matrix

+
+ +Expand source code + +
def fit(self, description):
+    """
+    Creates an sxs matrix
+    """
+    ret = description.apply(lambda x: nlp(".".join(x)))
+    self.similarity_vectors = [x for x in ret if x]
+    return self
+
+
+
+def fit_transform(self, description) +
+
+

Produces a nxn matrix

+
+ +Expand source code + +
def fit_transform(self, description):
+    """
+    Produces a nxn matrix
+    """
+    ret = description.apply(lambda x: nlp(".".join(x)))
+    self.similarity_vectors = [x for x in ret if x]
+    ret = ret.apply(
+        lambda x: [
+            (x.similarity(y) if x else np.nan) for y in self.similarity_vectors
+        ]
+    )
+    ret = np.vstack(ret)
+    return ret
+
+
+
+def transform(self, description) +
+
+

Produces a nxs matrix

+
+ +Expand source code + +
def transform(self, description):
+    """
+    Produces a nxs matrix
+    """
+    ret = description.apply(lambda x: nlp(".".join(x)))
+    ret = np.vstack(
+        ret.apply(
+            lambda x: [
+                (x.similarity(y) if x else np.nan) for y in self.similarity_vectors
+            ]
+        )
+    )
+    return ret
+
+
+
+
+
+
+
+ +
+ + + \ No newline at end of file diff --git a/generate_documentation.py b/generate_documentation.py index 1d6a142..b242e07 100644 --- a/generate_documentation.py +++ b/generate_documentation.py @@ -2,7 +2,10 @@ import os context = pdoc.Context() -modules = pdoc.Module(".", context=context, skip_errors=True) +with open(".docignore","r") as rf: + ignore_strings = rf.read().splitlines() + +modules = pdoc.Module(".", context=context, skip_errors=True, docfilter=lambda x: x.name not in ignore_strings) pdoc.link_inheritance(context) @@ -18,4 +21,5 @@ def recursive_htmls(mod): fname = f"documentation/{'/'.join(module_name.split('.'))}.html" os.makedirs(os.path.dirname(fname), exist_ok=True) with open(fname,"w", encoding="utf-8") as f: - f.writelines(html) \ No newline at end of file + f.writelines(html) + From c04a6d7b8b20345c49ad095f97a9d58df930d28c Mon Sep 17 00:00:00 2001 From: Joachim Bache-Mathiesen Date: Wed, 19 May 2021 19:45:27 +0200 Subject: [PATCH 4/6] Remove changes to prep_hdro --- unlabeled_preprocessing/prep_hdro_v2.ipynb | 2358 +++++++++----------- 1 file changed, 1072 insertions(+), 1286 deletions(-) diff --git a/unlabeled_preprocessing/prep_hdro_v2.ipynb b/unlabeled_preprocessing/prep_hdro_v2.ipynb index 6cf9b35..820f22f 100644 --- a/unlabeled_preprocessing/prep_hdro_v2.ipynb +++ b/unlabeled_preprocessing/prep_hdro_v2.ipynb @@ -7,9 +7,16 @@ "outputs": [ { "output_type": "stream", - "name": "stderr", + "name": "stdout", "text": [ - "..\\data\\unlabeled\\raw\\__init__.py:41: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.\n aquastat_eah = pd.read_csv(aquastat_eah_path, skipfooter=8)\n..\\data\\unlabeled\\raw\\__init__.py:42: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.\n aquastat_wr = pd.read_csv(aquastat_wr_path, skipfooter=8)\n..\\data\\unlabeled\\raw\\__init__.py:43: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.\n aquastat_wu = pd.read_csv(aquastat_wu_path, skipfooter=8)\n" + "Something went wrong loading the Economic Fitness Dataset [Errno 2] File b'../data/unlabeled/raw/Economic_Fitness_CSV\\\\Country.csv' does not exist: b'../data/unlabeled/raw/Economic_Fitness_CSV\\\\Country.csv'\n", + "Something went wrong loading the Education Dataset [Errno 2] File b'../data/unlabeled/raw/Edstats_csv/EdStatsCountry.csv' does not exist: b'../data/unlabeled/raw/Edstats_csv/EdStatsCountry.csv'\n", + "../data/unlabeled/raw/__init__.py:41: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.\n", + " aquastat_eah = pd.read_csv(aquastat_eah_path, skipfooter=8)\n", + "../data/unlabeled/raw/__init__.py:42: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.\n", + " aquastat_wr = pd.read_csv(aquastat_wr_path, skipfooter=8)\n", + "../data/unlabeled/raw/__init__.py:43: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.\n", + " aquastat_wu = pd.read_csv(aquastat_wu_path, skipfooter=8)\n" ] } ], @@ -31,7 +38,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 2, "metadata": { "tags": [] }, @@ -51,7 +58,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 3, "metadata": { "tags": [] }, @@ -309,10 +316,10 @@ "\n", "[195 rows x 98 columns]" ], - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Population with at least some secondary education (% ages 25 and older)Population with at least some secondary education, female (% ages 25 and older)Population with at least some secondary education, male (% ages 25 and older)Mean years of schooling, female (years)Mean years of schooling, male (years)Share of seats in parliament (% held by women)Adolescent birth rate (births per 1,000 women ages 15-19)Vulnerable employment (% of total employment)Total population (millions)Urban population (%)...Gross enrolment ratio, pre-primary (% of preschool-age children)Percentage of primary schools with access to the internetPercentage of secondary schools with access to the internetGross enrolment ratio, tertiary (% of tertiary school-age population)Share of graduates in science, technology, engineering and mathematics programmes at tertiary level, female (%)Share of graduates in science, technology, engineering and mathematics programmes at tertiary level, male (%)Share of graduates from science, technology, engineering and mathematics programmes in tertiary education who are female (%)Share of graduates from science, technology, engineering and mathematics programmes in tertiary education who are male (%)Primary school teachers trained to teach (%)Pupil-teacher ratio, primary school (pupils per teacher)
AFG26.08013.22036.9201.9486.00627.24468.95779.72638.04225.8...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AGO30.23223.13338.0564.0236.35930.000150.52665.99531.82566.2...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ALB93.17493.70092.4979.70210.61429.50819.64252.8522.88161.2...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AND72.32771.48473.32710.43910.56446.429NaNNaN0.07788.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ARG57.15859.16154.82811.12310.72939.87762.78221.80544.78192.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
..................................................................
WSM74.94279.12771.583NaNNaN10.00023.88629.9830.19718.1...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
YEM28.02019.92036.9182.8805.1460.97160.35245.62729.16237.3...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ZAF75.47874.97778.20710.03110.29145.33367.90810.29858.55866.9...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ZMB44.44038.48854.0686.2838.17617.964120.11278.13417.86144.1...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ZWE64.93559.79270.7838.0668.92334.57186.13564.73914.64532.2...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
\n

195 rows × 98 columns

\n
" + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Population with at least some secondary education (% ages 25 and older)Population with at least some secondary education, female (% ages 25 and older)Population with at least some secondary education, male (% ages 25 and older)Mean years of schooling, female (years)Mean years of schooling, male (years)Share of seats in parliament (% held by women)Adolescent birth rate (births per 1,000 women ages 15-19)Vulnerable employment (% of total employment)Total population (millions)Urban population (%)...Gross enrolment ratio, pre-primary (% of preschool-age children)Percentage of primary schools with access to the internetPercentage of secondary schools with access to the internetGross enrolment ratio, tertiary (% of tertiary school-age population)Share of graduates in science, technology, engineering and mathematics programmes at tertiary level, female (%)Share of graduates in science, technology, engineering and mathematics programmes at tertiary level, male (%)Share of graduates from science, technology, engineering and mathematics programmes in tertiary education who are female (%)Share of graduates from science, technology, engineering and mathematics programmes in tertiary education who are male (%)Primary school teachers trained to teach (%)Pupil-teacher ratio, primary school (pupils per teacher)
AFG26.08013.22036.9201.9486.00627.24468.95779.72638.04225.8...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AGO30.23223.13338.0564.0236.35930.000150.52665.99531.82566.2...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ALB93.17493.70092.4979.70210.61429.50819.64252.8522.88161.2...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AND72.32771.48473.32710.43910.56446.429NaNNaN0.07788.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ARG57.15859.16154.82811.12310.72939.87762.78221.80544.78192.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
..................................................................
WSM74.94279.12771.583NaNNaN10.00023.88629.9830.19718.1...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
YEM28.02019.92036.9182.8805.1460.97160.35245.62729.16237.3...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ZAF75.47874.97778.20710.03110.29145.33367.90810.29858.55866.9...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ZMB44.44038.48854.0686.2838.17617.964120.11278.13417.86144.1...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ZWE64.93559.79270.7838.0668.92334.57186.13564.73914.64532.2...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
\n

195 rows × 98 columns

\n
" }, "metadata": {}, - "execution_count": 6 + "execution_count": 3 } ], "source": [ @@ -331,7 +338,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -349,7 +356,7 @@ ] }, "metadata": {}, - "execution_count": 7 + "execution_count": 4 } ], "source": [ @@ -365,7 +372,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -381,14 +388,14 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 6, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "Max, min and mean number of missing values for the columns\nMax: 49.743589743589745 %\nMin: 0.0 %\nMean: 10.616150019135095 %\n" + "Max, min and mean number of missing values for the columns\nMax: 49.743589743589745 %\nMin: 0.0 %\nMean: 10.616150019135096 %\n" ] } ], @@ -398,7 +405,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -567,10 +574,10 @@ "\n", "[8 rows x 67 columns]" ], - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Population with at least some secondary education (% ages 25 and older)Population with at least some secondary education, female (% ages 25 and older)Population with at least some secondary education, male (% ages 25 and older)Mean years of schooling, female (years)Mean years of schooling, male (years)Share of seats in parliament (% held by women)Adolescent birth rate (births per 1,000 women ages 15-19)Vulnerable employment (% of total employment)Total population (millions)Urban population (%)...Gender Development Index (GDI)Estimated gross national income per capita, female (2017 PPP $)Estimated gross national income per capita, male (2017 PPP $)Human Development Index (HDI), femaleHuman Development Index (HDI), maleInequality-adjusted income indexOverall loss in HDI due to inequality (%)Inequality in income (%)Coefficient of human inequalityInequality-adjusted HDI (IHDI)
count175.000000167.000000167.000000174.000000174.000000193.000000185.000000180.000000195.000000195.000000...167.000000178.000000178.000000167.000000167.000000156.000000152.000000156.000000152.000000152.000000
mean61.06807461.73601265.8235878.4800179.13340222.98129548.30934638.25801139.39142659.257436...0.93899414440.99851124458.3313540.7026830.7421860.54506419.38914523.40138519.0025990.595250
std29.61079829.28405026.3953583.4213322.80298411.82878440.52883427.774415146.48585523.231038...0.07455915359.93598623943.4826280.1658670.1431940.1727899.9487189.7440049.7773240.190002
min0.0000001.7380009.0000001.0700002.2560000.1000000.2830000.1440000.01100013.200000...0.488000186.041000640.1050000.2700000.4320000.1760004.4440008.5000004.4240000.232000
25%37.29650036.92500045.3565005.8500006.73375014.76500013.17700012.5382502.08100041.200000...0.9085002925.6142506275.9337500.5770000.6215000.40475010.79225016.60300010.5940000.431500
50%64.82800068.06700070.6820009.1110009.25250021.09400040.53600032.5335008.77200060.000000...0.9650008399.44250016951.3570000.7300000.7600000.52750017.93450021.77950017.5260000.604000
75%89.14500087.99050090.91650011.23050011.55100030.00000070.50400063.34550028.56250078.000000...0.98600022583.77950035488.4760000.8315000.8485000.69175027.61525028.62500027.0125000.767250
max100.000000100.000000100.00000013.88200014.43100055.660000186.53800094.5810001433.784000100.000000...1.03600071387.276000107833.0290000.9490000.9650000.85800045.30700056.99600044.1670000.899000
\n

8 rows × 67 columns

\n
" + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Population with at least some secondary education (% ages 25 and older)Population with at least some secondary education, female (% ages 25 and older)Population with at least some secondary education, male (% ages 25 and older)Mean years of schooling, female (years)Mean years of schooling, male (years)Share of seats in parliament (% held by women)Adolescent birth rate (births per 1,000 women ages 15-19)Vulnerable employment (% of total employment)Total population (millions)Urban population (%)...Gender Development Index (GDI)Estimated gross national income per capita, female (2017 PPP $)Estimated gross national income per capita, male (2017 PPP $)Human Development Index (HDI), femaleHuman Development Index (HDI), maleInequality-adjusted income indexOverall loss in HDI due to inequality (%)Inequality in income (%)Coefficient of human inequalityInequality-adjusted HDI (IHDI)
count175.000000167.000000167.000000174.000000174.000000193.000000185.000000180.000000195.000000195.000000...167.000000178.000000178.000000167.000000167.000000156.000000152.000000156.000000152.000000152.000000
mean61.06807461.73601265.8235878.4800179.13340222.98129548.30934638.25801139.39142659.257436...0.93899414440.99851124458.3313540.7026830.7421860.54506419.38914523.40138519.0025990.595250
std29.61079829.28405026.3953583.4213322.80298411.82878440.52883427.774415146.48585523.231038...0.07455915359.93598623943.4826280.1658670.1431940.1727899.9487189.7440049.7773240.190002
min0.0000001.7380009.0000001.0700002.2560000.1000000.2830000.1440000.01100013.200000...0.488000186.041000640.1050000.2700000.4320000.1760004.4440008.5000004.4240000.232000
25%37.29650036.92500045.3565005.8500006.73375014.76500013.17700012.5382502.08100041.200000...0.9085002925.6142506275.9337500.5770000.6215000.40475010.79225016.60300010.5940000.431500
50%64.82800068.06700070.6820009.1110009.25250021.09400040.53600032.5335008.77200060.000000...0.9650008399.44250016951.3570000.7300000.7600000.52750017.93450021.77950017.5260000.604000
75%89.14500087.99050090.91650011.23050011.55100030.00000070.50400063.34550028.56250078.000000...0.98600022583.77950035488.4760000.8315000.8485000.69175027.61525028.62500027.0125000.767250
max100.000000100.000000100.00000013.88200014.43100055.660000186.53800094.5810001433.784000100.000000...1.03600071387.276000107833.0290000.9490000.9650000.85800045.30700056.99600044.1670000.899000
\n

8 rows × 67 columns

\n
" }, "metadata": {}, - "execution_count": 10 + "execution_count": 7 } ], "source": [ @@ -589,7 +596,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -659,13 +666,22 @@ ] }, "metadata": {}, - "execution_count": 12 + "execution_count": 8 } ], "source": [ + "# Column values are shown\n", + "\n", "df_inicator_values.columns.values" ] }, + { + "source": [ + "## Initial Correlation Matrix" + ], + "cell_type": "markdown", + "metadata": {} + }, { "cell_type": "code", "execution_count": 13, @@ -700,16 +716,23 @@ "sns.heatmap(corr, vmin=-1, vmax=1, center=0, xticklabels=range(size), yticklabels=range(size),cmap='mako')" ] }, + { + "source": [ + "## Division of the columns" + ], + "cell_type": "markdown", + "metadata": {} + }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 9, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "['Population with at least some secondary education (% ages 25 and older)', 'Population with at least some secondary education, female (% ages 25 and older)', 'Population with at least some secondary education, male (% ages 25 and older)', 'Share of seats in parliament (% held by women)', 'Vulnerable employment (% of total employment)', 'Urban population (%)', 'Labour force participation rate (% ages 15 and older), female', 'Labour force participation rate (% ages 15 and older), male', 'Remittances, inflows (% of GDP)', 'Foreign direct investment, net inflows (% of GDP)', 'Infants lacking immunization, measles (% of one-year-olds)', 'Infants lacking immunization, DTP (% of one-year-olds)', 'Gross fixed capital formation (% of GDP)', 'Inequality in education (%)', 'Inequality in life expectancy (%)', 'Unemployment, youth (% ages 15?24)', 'Private capital flows (% of GDP)', 'Exports and imports (% of GDP)', 'Unemployment, total (% of labour force)', 'Youth not in school or employment (% ages 15-24)', 'Labour force participation rate (% ages 15 and older)', 'Employment to population ratio (% ages 15 and older)', 'Employment in agriculture (% of total employment)', 'Employment in services (% of total employment)', 'Working poor at PPP$3.20 a day (% of total employment)', 'Share of employment in nonagriculture, female (% of total employment in nonagriculture)', 'Gross capital formation (% of GDP)', 'Overall loss in HDI due to inequality (%)', 'Inequality in income (%)'] \n 29\n['Gross domestic product (GDP), total (2017 PPP $ billions)', 'GDP per capita (2017 PPP $)', 'Gross national income (GNI) per capita (constant 2017 PPP$)', 'Estimated gross national income per capita, female (2017 PPP $)', 'Estimated gross national income per capita, male (2017 PPP $)'] \n 5\n['Gender Inequality Index (GII)', 'Inequality-adjusted education index', 'Inequality-adjusted life expectancy index', 'Life expectancy index', 'Income index', 'Education index', 'Human Development Index (HDI)', 'Gender Development Index (GDI)', 'Human Development Index (HDI), female', 'Human Development Index (HDI), male', 'Inequality-adjusted income index'] \n 11\n['Mean years of schooling, female (years)', 'Mean years of schooling, male (years)', 'Life expectancy at birth (years)', 'Expected years of schooling (years)', 'Mean years of schooling (years)', 'Life expectancy at birth, female (years)', 'Life expectancy at birth, male (years)', 'Expected years of schooling, female (years)', 'Expected years of schooling, male (years)'] \n 9\n['Adolescent birth rate (births per 1,000 women ages 15-19)', 'Total population (millions)', 'Sex ratio at birth (male to female births)', 'Population ages 15?64 (millions)', 'Young age (0-14) dependency ratio (per 100 people ages 15-64)', 'Old-age (65 and older) dependency ratio (per 100 people ages 15-64)', 'Population ages 65 and older (millions)', 'Population under age 5 (millions)', 'HDI rank', 'Total unemployment rate (female to male ratio)', 'Youth unemployment rate (female to male ratio)', 'Coefficient of human inequality', 'Inequality-adjusted HDI (IHDI)'] \n 13\n67\n" + "['Population with at least some secondary education (% ages 25 and older)', 'Population with at least some secondary education, female (% ages 25 and older)', 'Population with at least some secondary education, male (% ages 25 and older)', 'Share of seats in parliament (% held by women)', 'Vulnerable employment (% of total employment)', 'Urban population (%)', 'Labour force participation rate (% ages 15 and older), female', 'Labour force participation rate (% ages 15 and older), male', 'Remittances, inflows (% of GDP)', 'Foreign direct investment, net inflows (% of GDP)', 'Infants lacking immunization, measles (% of one-year-olds)', 'Infants lacking immunization, DTP (% of one-year-olds)', 'Gross fixed capital formation (% of GDP)', 'Inequality in education (%)', 'Inequality in life expectancy (%)', 'Unemployment, youth (% ages 15?24)', 'Private capital flows (% of GDP)', 'Exports and imports (% of GDP)', 'Unemployment, total (% of labour force)', 'Youth not in school or employment (% ages 15-24)', 'Labour force participation rate (% ages 15 and older)', 'Employment to population ratio (% ages 15 and older)', 'Employment in agriculture (% of total employment)', 'Employment in services (% of total employment)', 'Working poor at PPP$3.20 a day (% of total employment)', 'Share of employment in nonagriculture, female (% of total employment in nonagriculture)', 'Gross capital formation (% of GDP)', 'Overall loss in HDI due to inequality (%)', 'Inequality in income (%)'] \n 29\n['Gross domestic product (GDP), total (2017 PPP $ billions)', 'GDP per capita (2017 PPP $)', 'Gross national income (GNI) per capita (constant 2017 PPP$)', 'Estimated gross national income per capita, female (2017 PPP $)', 'Estimated gross national income per capita, male (2017 PPP $)'] \n 5\n['Gender Inequality Index (GII)', 'Inequality-adjusted education index', 'Inequality-adjusted life expectancy index', 'Life expectancy index', 'Income index', 'Education index', 'Human Development Index (HDI)', 'Gender Development Index (GDI)', 'Human Development Index (HDI), female', 'Human Development Index (HDI), male', 'Inequality-adjusted income index'] \n 11\n['Mean years of schooling, female (years)', 'Mean years of schooling, male (years)', 'Life expectancy at birth (years)', 'Expected years of schooling (years)', 'Mean years of schooling (years)', 'Life expectancy at birth, female (years)', 'Life expectancy at birth, male (years)', 'Expected years of schooling, female (years)', 'Expected years of schooling, male (years)'] \n 9\n['Total population (millions)', 'Population ages 15?64 (millions)', 'Population ages 65 and older (millions)', 'Population under age 5 (millions)'] \n 4\n['Adolescent birth rate (births per 1,000 women ages 15-19)', 'Sex ratio at birth (male to female births)', 'Young age (0-14) dependency ratio (per 100 people ages 15-64)', 'Old-age (65 and older) dependency ratio (per 100 people ages 15-64)', 'HDI rank', 'Total unemployment rate (female to male ratio)', 'Youth unemployment rate (female to male ratio)', 'Coefficient of human inequality', 'Inequality-adjusted HDI (IHDI)'] \n 9\n" ] } ], @@ -718,6 +741,7 @@ "money_columns = []\n", "index_columns = []\n", "year_columns = []\n", + "millions_columns = []\n", "rest = []\n", "\n", "for column in df_inicator_values.columns.values:\n", @@ -729,6 +753,8 @@ " year_columns.append(column)\n", " elif 'index' in column.lower():\n", " index_columns.append(column)\n", + " elif 'millions' in column.lower():\n", + " millions_columns.append(column)\n", " else:\n", " rest.append(column)\n", "\n", @@ -736,9 +762,8 @@ "print(money_columns,'\\n',len(money_columns))\n", "print(index_columns,'\\n',len(index_columns))\n", "print(year_columns,'\\n',len(year_columns))\n", - "print(rest,'\\n',len(rest))\n", - "\n", - "print(len(percentage_columns)+len(money_columns)+len(index_columns)+len(year_columns)+len(rest))" + "print(millions_columns,'\\n',len(millions_columns))\n", + "print(rest,'\\n',len(rest))" ] }, { @@ -750,7 +775,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -758,19 +783,20 @@ "split_df2 = df_inicator_values[money_columns]\n", "split_df3 = df_inicator_values[index_columns]\n", "split_df4 = df_inicator_values[year_columns]\n", - "split_df5 = df_inicator_values[rest]" + "split_df5 = df_inicator_values[millions_columns]\n", + "split_df6 = df_inicator_values[rest]" ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 11, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "- Dataframe 1 -\nMax, min and mean number of missing values for the columns\nMax: 49.743589743589745 %\nMin: 0.0 %\nMean: 14.624226348364278 %\n- Dataframe 2 -\nMax, min and mean number of missing values for the columns\nMax: 8.717948717948717 %\nMin: 2.051282051282051 %\nMean: 6.153846153846153 %\n- Dataframe 3 -\nMax, min and mean number of missing values for the columns\nMax: 20.0 %\nMin: 2.051282051282051 %\nMean: 9.790209790209792 %\n- Dataframe 4 -\nMax, min and mean number of missing values for the columns\nMax: 10.76923076923077 %\nMin: 1.0256410256410255 %\nMean: 5.584045584045584 %\n- Dataframe 5 -\nMax, min and mean number of missing values for the columns\nMax: 22.05128205128205 %\nMin: 0.0 %\nMean: 7.57396449704142 %\n" + "- Dataframe 1 -\nMax, min and mean number of missing values for the columns\nMax: 49.743589743589745 %\nMin: 0.0 %\nMean: 14.624226348364274 %\n- Dataframe 2 -\nMax, min and mean number of missing values for the columns\nMax: 8.717948717948717 %\nMin: 2.051282051282051 %\nMean: 6.153846153846153 %\n- Dataframe 3 -\nMax, min and mean number of missing values for the columns\nMax: 20.0 %\nMin: 2.051282051282051 %\nMean: 9.790209790209792 %\n- Dataframe 4 -\nMax, min and mean number of missing values for the columns\nMax: 10.76923076923077 %\nMin: 1.0256410256410255 %\nMean: 5.584045584045585 %\n- Dataframe 5 -\nMax, min and mean number of missing values for the columns\nMax: 5.128205128205129 %\nMin: 0.0 %\nMean: 3.8461538461538467 %\n- Dataframe 6 -\nMax, min and mean number of missing values for the columns\nMax: 22.05128205128205 %\nMin: 3.076923076923077 %\nMean: 9.230769230769232 %\n" ] } ], @@ -784,7 +810,9 @@ "print('- Dataframe 4 -')\n", "min4, max4 = print_missing_percentages(split_df4)\n", "print('- Dataframe 5 -')\n", - "min5, max5 = print_missing_percentages(split_df5)" + "min5, max5 = print_missing_percentages(split_df5)\n", + "print('- Dataframe 6 -')\n", + "min6, max6 = print_missing_percentages(split_df6)" ] }, { @@ -797,7 +825,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -805,174 +833,125 @@ "name": "stdout", "text": [ "[IterativeImputer] Completing matrix with shape (195, 29)\n", - "[IterativeImputer] Ending imputation round 1/49, elapsed time 0.08\n", - "[IterativeImputer] Change: 228.09157262466636, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 2/49, elapsed time 0.15\n", - "[IterativeImputer] Change: 62.25538442972473, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 3/49, elapsed time 0.21\n", - "[IterativeImputer] Change: 42.97964424882681, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 4/49, elapsed time 0.27\n", - "[IterativeImputer] Change: 32.49599901077046, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 5/49, elapsed time 0.40\n", - "[IterativeImputer] Change: 24.095208515105927, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 6/49, elapsed time 0.46\n", - "[IterativeImputer] Change: 31.682426801495314, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 7/49, elapsed time 0.52\n", - "[IterativeImputer] Change: 140.975818147823, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 8/49, elapsed time 0.57\n", - "[IterativeImputer] Change: 39.46695219020222, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 9/49, elapsed time 0.62\n", - "[IterativeImputer] Change: 49.53774118145801, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 10/49, elapsed time 0.67\n", - "[IterativeImputer] Change: 44.68154513428162, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 11/49, elapsed time 0.72\n", - "[IterativeImputer] Change: 46.60916297395449, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 12/49, elapsed time 0.78\n", - "[IterativeImputer] Change: 21.86554010415628, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 13/49, elapsed time 0.83\n", - "[IterativeImputer] Change: 25.92892647183729, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 14/49, elapsed time 0.88\n", - "[IterativeImputer] Change: 18.83927866098054, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 15/49, elapsed time 0.94\n", - "[IterativeImputer] Change: 38.405696393605794, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 16/49, elapsed time 0.99\n", - "[IterativeImputer] Change: 38.25297377918183, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 17/49, elapsed time 1.04\n", - "[IterativeImputer] Change: 41.19811600250341, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 18/49, elapsed time 1.11\n", - "[IterativeImputer] Change: 34.112333701182216, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 19/49, elapsed time 1.16\n", - "[IterativeImputer] Change: 5.287239305308968, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 20/49, elapsed time 1.21\n", - "[IterativeImputer] Change: 9.819564256199563, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 21/49, elapsed time 1.26\n", - "[IterativeImputer] Change: 19.412604471395234, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 22/49, elapsed time 1.31\n", - "[IterativeImputer] Change: 39.00936641411021, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 23/49, elapsed time 1.36\n", - "[IterativeImputer] Change: 21.32069071919966, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 24/49, elapsed time 1.42\n", - "[IterativeImputer] Change: 27.607026109939916, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 25/49, elapsed time 1.46\n", - "[IterativeImputer] Change: 12.932035632308278, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 26/49, elapsed time 1.52\n", - "[IterativeImputer] Change: 20.500731676727007, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 27/49, elapsed time 1.56\n", - "[IterativeImputer] Change: 37.90038155709468, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 28/49, elapsed time 1.62\n", - "[IterativeImputer] Change: 23.402932009174002, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 29/49, elapsed time 1.67\n", - "[IterativeImputer] Change: 37.483562456385734, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 30/49, elapsed time 1.73\n", - "[IterativeImputer] Change: 38.620880987628844, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 31/49, elapsed time 1.78\n", - "[IterativeImputer] Change: 34.235210757797404, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 32/49, elapsed time 1.83\n", - "[IterativeImputer] Change: 5.958748778584713, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 33/49, elapsed time 1.88\n", - "[IterativeImputer] Change: 12.587404647069434, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 34/49, elapsed time 1.93\n", - "[IterativeImputer] Change: 19.321006684253774, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 35/49, elapsed time 1.98\n", - "[IterativeImputer] Change: 23.179317411983668, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 36/49, elapsed time 2.03\n", - "[IterativeImputer] Change: 16.391282472541278, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 37/49, elapsed time 2.08\n", - "[IterativeImputer] Change: 16.142877556306736, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 38/49, elapsed time 2.13\n", - "[IterativeImputer] Change: 8.395072354352404, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 39/49, elapsed time 2.18\n", - "[IterativeImputer] Change: 6.103784872152183, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 40/49, elapsed time 2.23\n", - "[IterativeImputer] Change: 4.99694813675092, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 41/49, elapsed time 2.27\n", - "[IterativeImputer] Change: 4.166011730288048, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 42/49, elapsed time 2.32\n", - "[IterativeImputer] Change: 3.547339840851814, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 43/49, elapsed time 2.37\n", - "[IterativeImputer] Change: 3.076150838166326, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 44/49, elapsed time 2.43\n", - "[IterativeImputer] Change: 2.704813693700327, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 45/49, elapsed time 2.47\n", - "[IterativeImputer] Change: 2.4026926256614516, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 46/49, elapsed time 2.51\n", - "[IterativeImputer] Change: 2.1506562406006946, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 47/49, elapsed time 2.56\n", - "[IterativeImputer] Change: 1.93535948311116, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 48/49, elapsed time 2.61\n", - "[IterativeImputer] Change: 1.7485725296176398, scaled tolerance: 0.381517 \n", - "[IterativeImputer] Ending imputation round 49/49, elapsed time 2.66\n", - "[IterativeImputer] Change: 1.5846246034457572, scaled tolerance: 0.381517 \n", + "[IterativeImputer] Ending imputation round 1/49, elapsed time 0.22\n", + "[IterativeImputer] Ending imputation round 2/49, elapsed time 0.30\n", + "[IterativeImputer] Ending imputation round 3/49, elapsed time 0.42\n", + "[IterativeImputer] Ending imputation round 4/49, elapsed time 0.49\n", + "[IterativeImputer] Ending imputation round 5/49, elapsed time 0.56\n", + "[IterativeImputer] Ending imputation round 6/49, elapsed time 0.63\n", + "[IterativeImputer] Ending imputation round 7/49, elapsed time 0.73\n", + "[IterativeImputer] Ending imputation round 8/49, elapsed time 0.81\n", + "[IterativeImputer] Ending imputation round 9/49, elapsed time 0.92\n", + "[IterativeImputer] Ending imputation round 10/49, elapsed time 0.97\n", + "[IterativeImputer] Ending imputation round 11/49, elapsed time 1.03\n", + "[IterativeImputer] Ending imputation round 12/49, elapsed time 1.08\n", + "[IterativeImputer] Ending imputation round 13/49, elapsed time 1.13\n", + "[IterativeImputer] Ending imputation round 14/49, elapsed time 1.21\n", + "[IterativeImputer] Ending imputation round 15/49, elapsed time 1.30\n", + "[IterativeImputer] Ending imputation round 16/49, elapsed time 1.41\n", + "[IterativeImputer] Ending imputation round 17/49, elapsed time 1.50\n", + "[IterativeImputer] Ending imputation round 18/49, elapsed time 1.60\n", + "[IterativeImputer] Ending imputation round 19/49, elapsed time 1.69\n", + "[IterativeImputer] Ending imputation round 20/49, elapsed time 1.75\n", + "[IterativeImputer] Ending imputation round 21/49, elapsed time 1.81\n", + "[IterativeImputer] Ending imputation round 22/49, elapsed time 1.86\n", + "[IterativeImputer] Ending imputation round 23/49, elapsed time 1.92\n", + "[IterativeImputer] Ending imputation round 24/49, elapsed time 1.98\n", + "[IterativeImputer] Ending imputation round 25/49, elapsed time 2.06\n", + "[IterativeImputer] Ending imputation round 26/49, elapsed time 2.18\n", + "[IterativeImputer] Ending imputation round 27/49, elapsed time 2.26\n", + "[IterativeImputer] Ending imputation round 28/49, elapsed time 2.35\n", + "[IterativeImputer] Ending imputation round 29/49, elapsed time 2.43\n", + "[IterativeImputer] Ending imputation round 30/49, elapsed time 2.50\n", + "[IterativeImputer] Ending imputation round 31/49, elapsed time 2.57\n", + "[IterativeImputer] Ending imputation round 32/49, elapsed time 2.63\n", + "[IterativeImputer] Ending imputation round 33/49, elapsed time 2.71\n", + "[IterativeImputer] Ending imputation round 34/49, elapsed time 2.77\n", + "[IterativeImputer] Ending imputation round 35/49, elapsed time 2.90\n", + "[IterativeImputer] Ending imputation round 36/49, elapsed time 2.97\n", + "[IterativeImputer] Ending imputation round 37/49, elapsed time 3.09\n", + "[IterativeImputer] Ending imputation round 38/49, elapsed time 3.16\n", + "[IterativeImputer] Ending imputation round 39/49, elapsed time 3.22\n", + "[IterativeImputer] Ending imputation round 40/49, elapsed time 3.27\n", + "[IterativeImputer] Ending imputation round 41/49, elapsed time 3.32\n", + "[IterativeImputer] Ending imputation round 42/49, elapsed time 3.37\n", + "[IterativeImputer] Ending imputation round 43/49, elapsed time 3.44\n", + "[IterativeImputer] Ending imputation round 44/49, elapsed time 3.51\n", + "[IterativeImputer] Ending imputation round 45/49, elapsed time 3.61\n", + "[IterativeImputer] Ending imputation round 46/49, elapsed time 3.68\n", + "[IterativeImputer] Ending imputation round 47/49, elapsed time 3.75\n", + "[IterativeImputer] Ending imputation round 48/49, elapsed time 3.80\n", + "[IterativeImputer] Ending imputation round 49/49, elapsed time 3.86\n", "[IterativeImputer] Completing matrix with shape (195, 29)\n", "[IterativeImputer] Ending imputation round 1/49, elapsed time 0.00\n", "[IterativeImputer] Ending imputation round 2/49, elapsed time 0.01\n", "[IterativeImputer] Ending imputation round 3/49, elapsed time 0.01\n", - "[IterativeImputer] Ending imputation round 4/49, elapsed time 0.02\n", + "[IterativeImputer] Ending imputation round 4/49, elapsed time 0.01\n", "[IterativeImputer] Ending imputation round 5/49, elapsed time 0.02\n", "[IterativeImputer] Ending imputation round 6/49, elapsed time 0.02\n", - "[IterativeImputer] Ending imputation round 7/49, elapsed time 0.03\n", + "[IterativeImputer] Ending imputation round 7/49, elapsed time 0.02\n", "[IterativeImputer] Ending imputation round 8/49, elapsed time 0.03\n", - "[IterativeImputer] Ending imputation round 9/49, elapsed time 0.04\n", - "[IterativeImputer] Ending imputation round 10/49, elapsed time 0.04\n", + "[IterativeImputer] Ending imputation round 9/49, elapsed time 0.03\n", + "[IterativeImputer] Ending imputation round 10/49, elapsed time 0.03\n", "[IterativeImputer] Ending imputation round 11/49, elapsed time 0.04\n", - "[IterativeImputer] Ending imputation round 12/49, elapsed time 0.05\n", - "[IterativeImputer] Ending imputation round 13/49, elapsed time 0.05\n", + "[IterativeImputer] Ending imputation round 12/49, elapsed time 0.04\n", + "[IterativeImputer] Ending imputation round 13/49, elapsed time 0.04\n", "[IterativeImputer] Ending imputation round 14/49, elapsed time 0.05\n", - "[IterativeImputer] Ending imputation round 15/49, elapsed time 0.06\n", - "[IterativeImputer] Ending imputation round 16/49, elapsed time 0.06\n", - "[IterativeImputer] Ending imputation round 17/49, elapsed time 0.07\n", - "[IterativeImputer] Ending imputation round 18/49, elapsed time 0.07\n", + "[IterativeImputer] Ending imputation round 15/49, elapsed time 0.05\n", + "[IterativeImputer] Ending imputation round 16/49, elapsed time 0.05\n", + "[IterativeImputer] Ending imputation round 17/49, elapsed time 0.06\n", + "[IterativeImputer] Ending imputation round 18/49, elapsed time 0.06\n", "[IterativeImputer] Ending imputation round 19/49, elapsed time 0.07\n", - "[IterativeImputer] Ending imputation round 20/49, elapsed time 0.08\n", - "[IterativeImputer] Ending imputation round 21/49, elapsed time 0.08\n", - "[IterativeImputer] Ending imputation round 22/49, elapsed time 0.09\n", - "[IterativeImputer] Ending imputation round 23/49, elapsed time 0.09\n", - "[IterativeImputer] Ending imputation round 24/49, elapsed time 0.10\n", - "[IterativeImputer] Ending imputation round 25/49, elapsed time 0.10\n", - "[IterativeImputer] Ending imputation round 26/49, elapsed time 0.10\n", - "[IterativeImputer] Ending imputation round 27/49, elapsed time 0.11\n", - "[IterativeImputer] Ending imputation round 28/49, elapsed time 0.11\n", - "[IterativeImputer] Ending imputation round 29/49, elapsed time 0.12\n", - "[IterativeImputer] Ending imputation round 30/49, elapsed time 0.12\n", - "[IterativeImputer] Ending imputation round 31/49, elapsed time 0.12\n", - "C:\\Users\\joach\\.conda\\envs\\wsenv\\lib\\site-packages\\sklearn\\impute\\_iterative.py:685: ConvergenceWarning: [IterativeImputer] Early stopping criterion not reached.\n", - " warnings.warn(\"[IterativeImputer] Early stopping criterion not\"\n", - "[IterativeImputer] Ending imputation round 32/49, elapsed time 0.13\n", - "[IterativeImputer] Ending imputation round 33/49, elapsed time 0.13\n", - "[IterativeImputer] Ending imputation round 34/49, elapsed time 0.14\n", - "[IterativeImputer] Ending imputation round 35/49, elapsed time 0.14\n", - "[IterativeImputer] Ending imputation round 36/49, elapsed time 0.15\n", - "[IterativeImputer] Ending imputation round 37/49, elapsed time 0.15\n", - "[IterativeImputer] Ending imputation round 38/49, elapsed time 0.15\n", - "[IterativeImputer] Ending imputation round 39/49, elapsed time 0.16\n", - "[IterativeImputer] Ending imputation round 40/49, elapsed time 0.16\n", - "[IterativeImputer] Ending imputation round 41/49, elapsed time 0.17\n", - "[IterativeImputer] Ending imputation round 42/49, elapsed time 0.17\n", - "[IterativeImputer] Ending imputation round 43/49, elapsed time 0.18\n", - "[IterativeImputer] Ending imputation round 44/49, elapsed time 0.18\n", - "[IterativeImputer] Ending imputation round 45/49, elapsed time 0.19\n", - "[IterativeImputer] Ending imputation round 46/49, elapsed time 0.19\n", - "[IterativeImputer] Ending imputation round 47/49, elapsed time 0.20\n", - "[IterativeImputer] Ending imputation round 48/49, elapsed time 0.20\n", - "[IterativeImputer] Ending imputation round 49/49, elapsed time 0.21\n" + "[IterativeImputer] Ending imputation round 20/49, elapsed time 0.07\n", + "[IterativeImputer] Ending imputation round 21/49, elapsed time 0.07\n", + "[IterativeImputer] Ending imputation round 22/49, elapsed time 0.08\n", + "[IterativeImputer] Ending imputation round 23/49, elapsed time 0.08\n", + "[IterativeImputer] Ending imputation round 24/49, elapsed time 0.08\n", + "[IterativeImputer] Ending imputation round 25/49, elapsed time 0.09\n", + "[IterativeImputer] Ending imputation round 26/49, elapsed time 0.09\n", + "[IterativeImputer] Ending imputation round 27/49, elapsed time 0.09\n", + "[IterativeImputer] Ending imputation round 28/49, elapsed time 0.10\n", + "[IterativeImputer] Ending imputation round 29/49, elapsed time 0.10\n", + "[IterativeImputer] Ending imputation round 30/49, elapsed time 0.10\n", + "[IterativeImputer] Ending imputation round 31/49, elapsed time 0.11\n", + "[IterativeImputer] Ending imputation round 32/49, elapsed time 0.11\n", + "[IterativeImputer] Ending imputation round 33/49, elapsed time 0.11\n", + "[IterativeImputer] Ending imputation round 34/49, elapsed time 0.11\n", + "[IterativeImputer] Ending imputation round 35/49, elapsed time 0.12\n", + "[IterativeImputer] Ending imputation round 36/49, elapsed time 0.12\n", + "[IterativeImputer] Ending imputation round 37/49, elapsed time 0.12\n", + "[IterativeImputer] Ending imputation round 38/49, elapsed time 0.13\n", + "[IterativeImputer] Ending imputation round 39/49, elapsed time 0.13\n", + "[IterativeImputer] Ending imputation round 40/49, elapsed time 0.13\n", + "[IterativeImputer] Ending imputation round 41/49, elapsed time 0.14\n", + "[IterativeImputer] Ending imputation round 42/49, elapsed time 0.14\n", + "[IterativeImputer] Ending imputation round 43/49, elapsed time 0.14\n", + "[IterativeImputer] Ending imputation round 44/49, elapsed time 0.15\n", + "[IterativeImputer] Ending imputation round 45/49, elapsed time 0.15\n", + "[IterativeImputer] Ending imputation round 46/49, elapsed time 0.15\n", + "[IterativeImputer] Ending imputation round 47/49, elapsed time 0.16\n", + "[IterativeImputer] Ending imputation round 48/49, elapsed time 0.16\n", + "[IterativeImputer] Ending imputation round 49/49, elapsed time 0.16\n", + "/opt/anaconda3/lib/python3.7/site-packages/sklearn/impute/_iterative.py:603: ConvergenceWarning: [IterativeImputer] Early stopping criterion not reached.\n", + " \" reached.\", ConvergenceWarning)\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ - "" + "" ] }, "metadata": {}, - "execution_count": 17 + "execution_count": 12 }, { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\r\n\r\n\r\n \r\n \r\n \r\n \r\n 2021-05-12T09:28:25.208277\r\n image/svg+xml\r\n \r\n \r\n Matplotlib v3.4.1, https://matplotlib.org/\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", - "image/png": "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\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" }, "metadata": { "needs_background": "light" @@ -980,6 +959,9 @@ } ], "source": [ + "if max1 < 10:\n", + " max1 = 10\n", + "\n", "idf1 = impute_df(split_df1, max_iter= int(max1), verbose=2)\n", "size = idf1.shape[1]\n", "corr = idf1.corr()\n", @@ -989,7 +971,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -997,51 +979,47 @@ "name": "stdout", "text": [ "[IterativeImputer] Completing matrix with shape (195, 5)\n", - "[IterativeImputer] Ending imputation round 1/8, elapsed time 0.01\n", - "[IterativeImputer] Change: 457858.9943114285, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 2/8, elapsed time 0.02\n", - "[IterativeImputer] Change: 123566.60351871609, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 3/8, elapsed time 0.03\n", - "[IterativeImputer] Change: 66082.79555085694, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 4/8, elapsed time 0.05\n", - "[IterativeImputer] Change: 31356.06832177031, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 5/8, elapsed time 0.06\n", - "[IterativeImputer] Change: 13275.540026738847, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 6/8, elapsed time 0.07\n", - "[IterativeImputer] Change: 5607.778352352506, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 7/8, elapsed time 0.08\n", - "[IterativeImputer] Change: 4637.325683098177, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 8/8, elapsed time 0.09\n", - "[IterativeImputer] Change: 4069.896702134858, scaled tolerance: 131.03159 \n", + "[IterativeImputer] Ending imputation round 1/10, elapsed time 0.08\n", + "[IterativeImputer] Ending imputation round 2/10, elapsed time 0.10\n", + "[IterativeImputer] Ending imputation round 3/10, elapsed time 0.11\n", + "[IterativeImputer] Ending imputation round 4/10, elapsed time 0.14\n", + "[IterativeImputer] Ending imputation round 5/10, elapsed time 0.15\n", + "[IterativeImputer] Ending imputation round 6/10, elapsed time 0.16\n", + "[IterativeImputer] Ending imputation round 7/10, elapsed time 0.17\n", + "[IterativeImputer] Ending imputation round 8/10, elapsed time 0.18\n", + "[IterativeImputer] Ending imputation round 9/10, elapsed time 0.21\n", + "[IterativeImputer] Ending imputation round 10/10, elapsed time 0.22\n", "[IterativeImputer] Completing matrix with shape (195, 5)\n", - "[IterativeImputer] Ending imputation round 1/8, elapsed time 0.00\n", - "[IterativeImputer] Ending imputation round 2/8, elapsed time 0.00\n", - "[IterativeImputer] Ending imputation round 3/8, elapsed time 0.00\n", - "[IterativeImputer] Ending imputation round 4/8, elapsed time 0.01\n", - "[IterativeImputer] Ending imputation round 5/8, elapsed time 0.01\n", - "[IterativeImputer] Ending imputation round 6/8, elapsed time 0.01\n", - "[IterativeImputer] Ending imputation round 7/8, elapsed time 0.01\n", - "[IterativeImputer] Ending imputation round 8/8, elapsed time 0.01\n", - "C:\\Users\\joach\\.conda\\envs\\wsenv\\lib\\site-packages\\sklearn\\impute\\_iterative.py:685: ConvergenceWarning: [IterativeImputer] Early stopping criterion not reached.\n", - " warnings.warn(\"[IterativeImputer] Early stopping criterion not\"\n" + "[IterativeImputer] Ending imputation round 1/10, elapsed time 0.00\n", + "[IterativeImputer] Ending imputation round 2/10, elapsed time 0.00\n", + "[IterativeImputer] Ending imputation round 3/10, elapsed time 0.00\n", + "[IterativeImputer] Ending imputation round 4/10, elapsed time 0.00\n", + "[IterativeImputer] Ending imputation round 5/10, elapsed time 0.01\n", + "[IterativeImputer] Ending imputation round 6/10, elapsed time 0.01\n", + "[IterativeImputer] Ending imputation round 7/10, elapsed time 0.01\n", + "[IterativeImputer] Ending imputation round 8/10, elapsed time 0.02\n", + "[IterativeImputer] Ending imputation round 9/10, elapsed time 0.02\n", + "[IterativeImputer] Ending imputation round 10/10, elapsed time 0.02\n", + "/opt/anaconda3/lib/python3.7/site-packages/sklearn/impute/_iterative.py:603: ConvergenceWarning: [IterativeImputer] Early stopping criterion not reached.\n", + " \" reached.\", ConvergenceWarning)\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ - "" + "" ] }, "metadata": {}, - "execution_count": 18 + "execution_count": 13 }, { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\r\n\r\n\r\n \r\n \r\n \r\n \r\n 2021-05-12T09:28:25.919090\r\n image/svg+xml\r\n \r\n \r\n Matplotlib v3.4.1, https://matplotlib.org/\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", - "image/png": "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\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" }, "metadata": { "needs_background": "light" @@ -1049,6 +1027,9 @@ } ], "source": [ + "if max2 < 10:\n", + " max2 = 10\n", + "\n", "idf2 = impute_df(split_df2, max_iter= int(max2), verbose=2)\n", "size = idf2.shape[1]\n", "corr = idf2.corr()\n", @@ -1058,7 +1039,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -1066,55 +1047,35 @@ "name": "stdout", "text": [ "[IterativeImputer] Completing matrix with shape (195, 11)\n", - "[IterativeImputer] Ending imputation round 1/20, elapsed time 0.02\n", - "[IterativeImputer] Change: 1.3057475071151101, scaled tolerance: 0.001036 \n", - "[IterativeImputer] Ending imputation round 2/20, elapsed time 0.04\n", - "[IterativeImputer] Change: 0.2431361335536576, scaled tolerance: 0.001036 \n", - "[IterativeImputer] Ending imputation round 3/20, elapsed time 0.06\n", - "[IterativeImputer] Change: 0.050910966788451084, scaled tolerance: 0.001036 \n", - "[IterativeImputer] Ending imputation round 4/20, elapsed time 0.08\n", - "[IterativeImputer] Change: 0.024727577272021295, scaled tolerance: 0.001036 \n", - "[IterativeImputer] Ending imputation round 5/20, elapsed time 0.10\n", - "[IterativeImputer] Change: 0.01669938231479373, scaled tolerance: 0.001036 \n", - "[IterativeImputer] Ending imputation round 6/20, elapsed time 0.12\n", - "[IterativeImputer] Change: 0.014436526598200827, scaled tolerance: 0.001036 \n", - "[IterativeImputer] Ending imputation round 7/20, elapsed time 0.14\n", - "[IterativeImputer] Change: 0.013328878116682485, scaled tolerance: 0.001036 \n", - "[IterativeImputer] Ending imputation round 8/20, elapsed time 0.16\n", - "[IterativeImputer] Change: 0.012628774076243077, scaled tolerance: 0.001036 \n", - "[IterativeImputer] Ending imputation round 9/20, elapsed time 0.17\n", - "[IterativeImputer] Change: 0.012053990511959045, scaled tolerance: 0.001036 \n", - "[IterativeImputer] Ending imputation round 10/20, elapsed time 0.19\n", - "[IterativeImputer] Change: 0.011528761105839724, scaled tolerance: 0.001036 \n", - "[IterativeImputer] Ending imputation round 11/20, elapsed time 0.21\n", - "[IterativeImputer] Change: 0.011028826842162887, scaled tolerance: 0.001036 \n", - "[IterativeImputer] Ending imputation round 12/20, elapsed time 0.23\n", - "[IterativeImputer] Change: 0.010551696384536902, scaled tolerance: 0.001036 \n", - "[IterativeImputer] Ending imputation round 13/20, elapsed time 0.25\n", - "[IterativeImputer] Change: 0.010132923628465185, scaled tolerance: 0.001036 \n", - "[IterativeImputer] Ending imputation round 14/20, elapsed time 0.26\n", - "[IterativeImputer] Change: 0.009943115736268826, scaled tolerance: 0.001036 \n", - "[IterativeImputer] Ending imputation round 15/20, elapsed time 0.28\n", - "[IterativeImputer] Change: 0.009758788813657215, scaled tolerance: 0.001036 \n", - "[IterativeImputer] Ending imputation round 16/20, elapsed time 0.30\n", - "[IterativeImputer] Change: 0.00957549042259187, scaled tolerance: 0.001036 \n", - "[IterativeImputer] Ending imputation round 17/20, elapsed time 0.31\n", - "[IterativeImputer] Change: 0.009397405580395923, scaled tolerance: 0.001036 \n", - "[IterativeImputer] Ending imputation round 18/20, elapsed time 0.34\n", - "[IterativeImputer] Change: 0.009222955401797739, scaled tolerance: 0.001036 \n", - "[IterativeImputer] Ending imputation round 19/20, elapsed time 0.36\n", - "[IterativeImputer] Change: 0.009052194265333768, scaled tolerance: 0.001036 \n", - "[IterativeImputer] Ending imputation round 20/20, elapsed time 0.38\n", - "[IterativeImputer] Change: 0.008884981830621363, scaled tolerance: 0.001036 \n", + "[IterativeImputer] Ending imputation round 1/20, elapsed time 0.09\n", + "[IterativeImputer] Ending imputation round 2/20, elapsed time 0.18\n", + "[IterativeImputer] Ending imputation round 3/20, elapsed time 0.20\n", + "[IterativeImputer] Ending imputation round 4/20, elapsed time 0.22\n", + "[IterativeImputer] Ending imputation round 5/20, elapsed time 0.24\n", + "[IterativeImputer] Ending imputation round 6/20, elapsed time 0.26\n", + "[IterativeImputer] Ending imputation round 7/20, elapsed time 0.29\n", + "[IterativeImputer] Ending imputation round 8/20, elapsed time 0.37\n", + "[IterativeImputer] Ending imputation round 9/20, elapsed time 0.39\n", + "[IterativeImputer] Ending imputation round 10/20, elapsed time 0.41\n", + "[IterativeImputer] Ending imputation round 11/20, elapsed time 0.43\n", + "[IterativeImputer] Ending imputation round 12/20, elapsed time 0.45\n", + "[IterativeImputer] Ending imputation round 13/20, elapsed time 0.47\n", + "[IterativeImputer] Ending imputation round 14/20, elapsed time 0.49\n", + "[IterativeImputer] Ending imputation round 15/20, elapsed time 0.54\n", + "[IterativeImputer] Ending imputation round 16/20, elapsed time 0.59\n", + "[IterativeImputer] Ending imputation round 17/20, elapsed time 0.62\n", + "[IterativeImputer] Ending imputation round 18/20, elapsed time 0.64\n", + "[IterativeImputer] Ending imputation round 19/20, elapsed time 0.66\n", + "[IterativeImputer] Ending imputation round 20/20, elapsed time 0.68\n", "[IterativeImputer] Completing matrix with shape (195, 11)\n", "[IterativeImputer] Ending imputation round 1/20, elapsed time 0.00\n", - "[IterativeImputer] Ending imputation round 2/20, elapsed time 0.00\n", - "[IterativeImputer] Ending imputation round 3/20, elapsed time 0.00\n", - "[IterativeImputer] Ending imputation round 4/20, elapsed time 0.00\n", + "[IterativeImputer] Ending imputation round 2/20, elapsed time 0.01\n", + "[IterativeImputer] Ending imputation round 3/20, elapsed time 0.01\n", + "[IterativeImputer] Ending imputation round 4/20, elapsed time 0.01\n", "[IterativeImputer] Ending imputation round 5/20, elapsed time 0.01\n", "[IterativeImputer] Ending imputation round 6/20, elapsed time 0.01\n", "[IterativeImputer] Ending imputation round 7/20, elapsed time 0.01\n", - "[IterativeImputer] Ending imputation round 8/20, elapsed time 0.01\n", + "[IterativeImputer] Ending imputation round 8/20, elapsed time 0.02\n", "[IterativeImputer] Ending imputation round 9/20, elapsed time 0.02\n", "[IterativeImputer] Ending imputation round 10/20, elapsed time 0.02\n", "[IterativeImputer] Ending imputation round 11/20, elapsed time 0.02\n", @@ -1124,29 +1085,29 @@ "[IterativeImputer] Ending imputation round 15/20, elapsed time 0.03\n", "[IterativeImputer] Ending imputation round 16/20, elapsed time 0.03\n", "[IterativeImputer] Ending imputation round 17/20, elapsed time 0.03\n", - "[IterativeImputer] Ending imputation round 18/20, elapsed time 0.04\n", + "[IterativeImputer] Ending imputation round 18/20, elapsed time 0.03\n", "[IterativeImputer] Ending imputation round 19/20, elapsed time 0.04\n", "[IterativeImputer] Ending imputation round 20/20, elapsed time 0.04\n", - "C:\\Users\\joach\\.conda\\envs\\wsenv\\lib\\site-packages\\sklearn\\impute\\_iterative.py:685: ConvergenceWarning: [IterativeImputer] Early stopping criterion not reached.\n", - " warnings.warn(\"[IterativeImputer] Early stopping criterion not\"\n" + "/opt/anaconda3/lib/python3.7/site-packages/sklearn/impute/_iterative.py:603: ConvergenceWarning: [IterativeImputer] Early stopping criterion not reached.\n", + " \" reached.\", ConvergenceWarning)\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ - "" + "" ] }, "metadata": {}, - "execution_count": 19 + "execution_count": 14 }, { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\r\n\r\n\r\n \r\n \r\n \r\n \r\n 2021-05-12T09:28:26.720961\r\n image/svg+xml\r\n \r\n \r\n Matplotlib v3.4.1, https://matplotlib.org/\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzUAAANSCAYAAABcHeAOAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Z1A+gAAAACXBIWXMAAAsTAAALEwEAmpwYAAA0dUlEQVR4nO3dfbRld1kn+O9TNwnhRXkJEjFBicvYis0IGIPddqPyZuh2CG0jBuw2Omi5RmnfprvBYY2O2PYKM93SzhrpthoD2NK8BV+i0iLyZjsopGgDIQEkRoSEQJRE0CQk1L3P/FEnrEtZdW8Vte/e9bv381nrrDpn733Oec6+pLjfep79O9XdAQAAGNW+pQsAAAA4GUINAAAwNKEGAAAYmlADAAAMTagBAACGJtQAAABDE2oAAIATUlWXV9UtVfXeY+yvqvp/qur6qnpPVT1m075Lq+qDq9ulU9Qj1AAAACfqZUku2mL/U5Kcv7rtT/Ifk6SqHpTkp5I8NsmFSX6qqh54ssUINQAAwAnp7t9PcusWh1yc5Jf7sD9K8oCqemiSb03yxu6+tbtvS/LGbB2OjstpJ/sC27r2db3j73GKefGdX7l0CbM747RauoTZ3X7XxtIlzG59Y8/955wzT99b//Zz//usLV3C7F78W3cvXcLsfvDbzli6hNndfWjv/Z1996G993f2DzzmkWP8QnKK/35cf/fpP5DD3ZV7HOjuAyf4Muck+cimxzeuth1r+0nZ+VADAAAMYxVgTjTELGpv/RMkAAAwh5uSPGzT43NX2461/aQINQAAwNSuTPLdq1XQviHJJ7v75iRvSPLkqnrgaoGAJ6+2nRTjZwAAMKNeX1+6hC0dz4VJVfXKJN+c5MFVdWMOr2h2epJ0939K8vok/yjJ9UnuSPK9q323VtXPJLlq9VIv6O6tFhw4LkINAABwQrr7mdvs7yQ/dIx9lye5fMp6jJ8BAABD06kBAIA5rR9auoJdR6cGAAAYmlADAAAMzfgZAADMqDdO7fGz41n97FSjUwMAAAxNqAEAAIZm/AwAAOZ0in/55oh0agAAgKEJNQAAwNCMnwEAwIzal29OTqcGAAAYmlADAAAMTagBAACG5poaAACYk2tqJqdTAwAADE2oAQAAhmb8DAAAZtQbxs+mplMDAAAMTagBAACGZvwMAADmtL6+dAW7jk4NAAAwNKEGAAAYmvEzAACYUfvyzcnp1AAAAEMTagAAgKEZPwMAgDkZP5ucTg0AADA0oQYAABia8TMAAJhRb/jyzaltG2qq6quSXJzknNWmm5Jc2d3v28nCAAAAjseW42dV9dwkr0pSSd65ulWSV1bV87Z43v6qOlhVBw+89o1T1gsAAPA5tuvUPDvJ13T3ZzZvrKqfS3JtksuO9qTuPpDkQJLk2tf1yZcJAABwdNuFmo0kX5Lkz4/Y/tDVPgAA4AS0JZ0nt12o+dEkb6qqDyb5yGrblyb5iiTP2cG6AAAAjsuWoaa7f6eqvjLJhfnchQKu6m7LNgAAAIvbdvWz7t5I8kcz1AIAALuf8bPJ+fJNAABgaEINAAAwtG3HzwAAgOn0hkvTp6ZTAwAADE2oAQAAhmb8DAAA5mT1s8np1AAAAEMTagAAgKEZPwMAgBm18bPJ6dQAAABDE2oAAIChCTUAAMDQXFMDAABzck3N5HRqAACAoQk1AADA0IyfAQDAjHpjfekSdh2dGgAAYGhCDQAAMDTjZwAAMCern01OpwYAABiaUAMAAAzN+BkAAMyo161+NjWdGgAAYGhCDQAAMDTjZwAAMKO2+tnkdGoAAIChCTUAAMDQjJ8BAMCcNoyfTU2nBgAAGJpQAwAADE2oAQAAhuaaGgAAmFGvry9dwq6z46HmxXd+5U6/xSnnB+/9J0uXMLu/eftvLl3C7NZv+8ulS5jd2gMfvHQJs7vvBU9euoRZrX/8lqVLmN2F73zF0iXM7ryv/66lS5hd3/3ppUuY3V0ffv/SJczvMS9bugIWYvwMAAAYmvEzAACYk/GzyenUAAAAQxNqAACAoRk/AwCAGfX6oaVL2HV0agAAgKEJNQAAwNCMnwEAwJysfjY5nRoAAGBoQg0AADA042cAADCjNn42OZ0aAABgaEINAAAwNKEGAAAYmmtqAABgRr3hmpqp6dQAAABDE2oAAIChGT8DAIA5WdJ5cjo1AADA0IQaAABgaMbPAABgRm38bHI6NQAAwNCEGgAAYGjGzwAAYEa9vrF0CSetqi5K8vNJ1pK8pLsvO2L/i5J8y+rhfZI8pLsfsNq3nuSa1b4Pd/dTT7YeoQYAADhuVbWW5BeSPCnJjUmuqqoru/u6e47p7h/bdPy/SPLoTS9xZ3c/asqajJ8BAAAn4sIk13f3Dd19d5JXJbl4i+OfmeSVO1mQTg0AAMzpFB8/q6r9SfZv2nSguw9senxOko9senxjksce47W+LMl5Sd68afOZVXUwyaEkl3X3r59szUINAADwWasAc2DbA4/PJUmu6O7N61h/WXffVFVfnuTNVXVNd//pybyJ8TMAAOBE3JTkYZsen7vadjSX5IjRs+6+afXnDUnems+93ubzItQAAAAn4qok51fVeVV1Rg4HlyuPPKiqvirJA5P84aZtD6yqe63uPzjJNya57sjnnijjZwAAMKNeX9/+oFNYdx+qquckeUMOL+l8eXdfW1UvSHKwu+8JOJckeVV396anf3WSX6yqjRxusFy2edW0z5dQAwAAnJDufn2S1x+x7SePePx/HuV5b0/yyKnrMX4GAAAMTacGAABm1Ou9/UGcEJ0aAABgaJ93qKmq752yEAAAgM/HyXRqfvpYO6pqf1UdrKqDf/CrV5zEWwAAwO7S6xun9G1EW15TU1XvOdauJGcf63mbv4X0xQevMTQIAADsmO0WCjg7ybcmue2I7ZXk7TtSEQAAwAnYLtT8VpL7dffVR+6oqrfuREEAALCbjTridSrbMtR097O32Pes6csBAAA4MZZ0BgAAhubLNwEAYEa9YR2tqenUAAAAQxNqAACAoRk/AwCAGfW68bOp6dQAAABDE2oAAIChCTUAAMDQXFMDAAAz6vWlK9h9dGoAAIChCTUAAMDQjJ8BAMCMLOk8PZ0aAABgaEINAAAwNONnAAAwo42NpSvYfXRqAACAoQk1AADA0IyfAQDAjHz55vR0agAAgKEJNQAAwNCMnwEAwIyMn01PpwYAABiaUAMAAAxNqAEAAIbmmhoAAJjRxsbSFew+OjUAAMDQhBoAAGBoxs8AAGBGlnSenk4NAAAwNKEGAAAYmvEzAACY0cZGLV3CrqNTAwAADG3HOzVnnLb3kujfvP03ly5hdvf7+//z0iXMrtf33lV+d/7xm5YuYXZ3vudtS5cwq9PPOX/pEmb30Y/ee+kSZvelt39y6RJmt+/M+y5dwuz2nXGvpUuA2Rg/AwCAGfnyzekZPwMAAIYm1AAAAEMzfgYAADPy5ZvT06kBAACGJtQAAABDM34GAAAz8uWb09OpAQAAhibUAAAAQxNqAACAobmmBgAAZrRhSefJ6dQAAABDE2oAAIChGT8DAIAZWdJ5ejo1AADA0IQaAABgaMbPAABgRm38bHI6NQAAwNCEGgAAYGjGzwAAYEYbG0tXsPvo1AAAAEMTagAAgKEZPwMAgBn58s3p6dQAAABDE2oAAIChCTUAAMDQXFMDAAAzck3N9HRqAACAoQk1AADA0IyfAQDAjNaNn01OpwYAABiaUAMAAAzN+BkAAMzI6mfT06kBAACGtm2oqaqvqqonVNX9jth+0c6VBQAAcHy2DDVV9cNJfiPJv0jy3qq6eNPuf7uThQEAwG600XVK30a0Xafm+5N8XXc/Lck3J/k/qupHVvuO+Ymran9VHayqg7//utdOUigAAMDRbLdQwL7u/psk6e4PVdU3J7miqr4sW4Sa7j6Q5ECSvOTq9/Y0pQIAAPxt24Waj1fVo7r76iTp7r+pqm9LcnmSR+50cQAAsNtsbCxdwe6z3fjZdyf52OYN3X2ou787yeN2rCoAAIDjtGWnprtv3GLf/zd9OQAAACfG99QAAABD2+6aGgAAYELrgy6bfCrTqQEAAIYm1AAAAEMzfgYAADPa2DB+NjWdGgAAYGhCDQAAMDTjZwAAMCOrn01PpwYAABiaUAMAAAxNqAEAgBltdJ3St+NRVRdV1Qeq6vqqet5R9n9PVf1FVV29un3fpn2XVtUHV7dLpzinrqkBAACOW1WtJfmFJE9KcmOSq6rqyu6+7ohDX93dzzniuQ9K8lNJLkjSSd61eu5tJ1OTTg0AAHAiLkxyfXff0N13J3lVkouP87nfmuSN3X3rKsi8MclFJ1uQTg0AAMzoVF/9rKr2J9m/adOB7j6w6fE5ST6y6fGNSR57lJf6p1X1uCR/kuTHuvsjx3juOSdbs1ADAAB81irAHNj2wK39ZpJXdvddVfUDSV6e5PEnXdwxGD8DAABOxE1JHrbp8bmrbZ/V3Z/o7rtWD1+S5OuO97mfD50aAACY0XovXcFJuyrJ+VV1Xg4HkkuSPGvzAVX10O6+efXwqUnet7r/hiT/tqoeuHr85CQ/cbIFCTUAAMBx6+5DVfWcHA4oa0ku7+5rq+oFSQ5295VJfriqnprkUJJbk3zP6rm3VtXP5HAwSpIXdPetJ1uTUAMAAJyQ7n59ktcfse0nN93/iRyjA9Pdlye5fMp6XFMDAAAMTacGAABmtHGKL+k8Ip0aAABgaEINAAAwNONnAAAwo3XjZ5PTqQEAAIYm1AAAAEMzfgYAADNa76Ur2H10agAAgKEJNQAAwNCMnwEAwIzWY/WzqenUAAAAQxNqAACAoe34+Nntd23s9FucctZv+8ulS5hdr68vXcLsam1t6RJmt377p5YuYX577H/ba2fdvnQJs/vru/feJHZ/eu/9nPfebyPJxh78OY/C6mfT06kBAACGJtQAAABDE2oAAICh7b1BYgAAWNDeulpzHjo1AADA0IQaAABgaMbPAABgRsbPpqdTAwAADE2oAQAAhmb8DAAAZrSeWrqEXUenBgAAGJpQAwAADM34GQAAzGi9e+kSdh2dGgAAYGhCDQAAMDTjZwAAMCNfvjk9nRoAAGBoQg0AADA042cAADAj42fT06kBAACGJtQAAABDE2oAAIChuaYGAABm5Jqa6enUAAAAQxNqAACAoRk/AwCAGa2nly5h19GpAQAAhibUAAAAQzN+BgAAM7L62fR0agAAgKEJNQAAwNCMnwEAwIzW2+pnU9OpAQAAhibUAAAAQ9t2/KyqLkzS3X1VVT0iyUVJ3t/dr9/x6gAAYJex+tn0tgw1VfVTSZ6S5LSqemOSxyZ5S5LnVdWju/tnZ6gRAADgmLYbP3t6km9M8rgkP5Tkad39M0m+Ncl3HutJVbW/qg5W1cG3//oVkxULAABwpO3Gzw5193qSO6rqT7v7U0nS3XdW1caxntTdB5IcSJKff8d7LO8AAADsmO1Czd1VdZ/uviPJ192zsarun+SYoQYAADi69fg3/6ltF2oe1913JUl3bw4xpye5dMeqAgAAOE5bhpp7As1Rtv9lkr/ckYoAAABOwLZLOgMAANMxfjY9X74JAAAMTagBAACGZvwMAABmtL50AbuQTg0AADA0oQYAABia8TMAAJjRelv9bGo6NQAAwNCEGgAAYGjGzwAAYEa+fHN6OjUAAMDQhBoAAGBoQg0AADA019QAAMCMXFMzPZ0aAABgaEINAAAwNONnAAAwo402fjY1nRoAAGBoQg0AADA042cAADAjq59NT6cGAAAYmlADAAAMzfgZAADMyPjZ9HRqAACAoQk1AADA0IyfAQDAjNZ9+ebkdGoAAIChCTUAAMDQjJ8BAMCMrH42PZ0aAABgaEINAAAwNKEGAAAY2o5fU7O+sfdmBtce+OClS5jdnX/8pqVLmN367Z9auoTZfcE3PX3pEmZ357vftnQJszrtrC9ZuoTZPfg+dy9dwuxOe8jDli5hdnX6mUuXMLu1+95/6RI4hg1LOk9OpwYAABiaUAMAAAzNks4AADAjSzpPT6cGAAAYmlADAAAMTagBAIAZradP6dvxqKqLquoDVXV9VT3vKPt/vKquq6r3VNWbqurLNu1br6qrV7crpzinrqkBAACOW1WtJfmFJE9KcmOSq6rqyu6+btNhf5zkgu6+o6r+1yT/V5LvXO27s7sfNWVNOjUAAMCJuDDJ9d19Q3ffneRVSS7efEB3v6W771g9/KMk5+5kQTo1AAAwo1P9yzeran+S/Zs2HejuA5sen5PkI5se35jksVu85LOT/LdNj8+sqoNJDiW5rLt//eQqFmoAAIBNVgHmwLYHHoeq+mdJLkjyTZs2f1l331RVX57kzVV1TXf/6cm8j/EzAADgRNyU5GGbHp+72vY5quqJSZ6f5Kndfdc927v7ptWfNyR5a5JHn2xBOjUAADCjXfDlm1clOb+qzsvhMHNJkmdtPqCqHp3kF5Nc1N23bNr+wCR3dPddVfXgJN+Yw4sInBShBgAAOG7dfaiqnpPkDUnWklze3ddW1QuSHOzuK5P830nul+S1VZUkH+7upyb56iS/WFUbOTw1dtkRq6Z9XoQaAADghHT365O8/ohtP7np/hOP8by3J3nk1PW4pgYAABiaTg0AAMxo/RRf0nlEOjUAAMDQhBoAAGBoxs8AAGBGG+Mv6XzK0akBAACGJtQAAABDM34GAAAzsvrZ9HRqAACAoQk1AADA0IyfAQDAjDaMn01OpwYAABiaUAMAAAzN+BkAAMxo3ZdvTk6nBgAAGJpQAwAADM34GQAAzGijN5YuYdfRqQEAAIYm1AAAAEMTagAAgKGd8DU1VfXL3f3dO1EMAADsdhuWdJ7clqGmqq48clOSb6mqByRJdz91h+oCAAA4LtuNn52b5FNJfi7Jv1/d/nrT/aOqqv1VdbCqDv7hr18xVa0AAAB/y3bjZxck+ZEkz0/yr7r76qq6s7vfttWTuvtAkgNJ8nN/+G79NQAAWFlvvx5PbctQ090bSV5UVa9d/fnx7Z4DAAAwp+MKKN19Y5LvqKp/nMPjaAAAAKeEE+q6dPdvJ/ntHaoFAAB2PaufTc/31AAAAEMTagAAgKG56B8AAGa0YfWzyenUAAAAQxNqAACAoRk/AwCAGW0sXcAupFMDAAAMTagBAACGJtQAAABDc00NAADMyJLO09OpAQAAhibUAAAAQzN+BgAAM9qI8bOp6dQAAABDE2oAAIChGT8DAIAZWf1sejo1AADA0IQaAABgaMbPAABgRlY/m55ODQAAMDShBgAAGJrxMwAAmJHxs+np1AAAAEMTagAAgKEJNQAAwNBcUwMAADPacEnN5HRqAACAoQk1AADA0IyfAQDAjCzpPD2dGgAAYGhCDQAAMDTjZwAAMCPjZ9Pb8VBz5ul7rxl03wuevHQJs7vzPW9buoT5ra8vXcHs7nz33vs53/trv2npEma1/qlbly5hdmc95K6lS5hdnX7m0iXMb/3Q0hXM7u4Pv2/pEmbnX+v3rr2XOAAAgF1FoAUAgBm16bPJ6dQAAABDE2oAAIChGT8DAIAZWf1sejo1AADA0IQaAABgaMbPAABgRobPpqdTAwAADE2oAQAAhibUAAAAQ3NNDQAAzMiSztPTqQEAAIYm1AAAAEMzfgYAADMyfDY9nRoAAGBoQg0AADA042cAADAj42fT06kBAACGJtQAAABDM34GAAAz8uWb09OpAQAAhibUAAAAQzN+BgAAMzJ8Nj2dGgAAYGhCDQAAMDShBgAAGJpragAAYEauqZmeTg0AADA0oQYAABia8TMAAJiR8bPp6dQAAABDE2oAAIChCTUAADCjPsVvx6OqLqqqD1TV9VX1vKPsv1dVvXq1/x1V9fBN+35itf0DVfWtx/mWWzqhUFNV/6CqfryqnjzFmwMAAGOpqrUkv5DkKUkekeSZVfWIIw57dpLbuvsrkrwoyQtXz31EkkuSfE2Si5K8ePV6J2XLUFNV79x0//uT/L9JviDJTx0tkQEAALvehUmu7+4buvvuJK9KcvERx1yc5OWr+1ckeUJV1Wr7q7r7ru7+syTXr17vpGzXqTl90/39SZ7U3T+d5MlJvutYT6qq/VV1sKoO/sGvXnGyNQIAADPZ/Lv86rb/iEPOSfKRTY9vXG076jHdfSjJJ5OcdZzPPWHbLem8r6oemMPhp7r7L1aF3V5Vh471pO4+kORAkrz44DVWrQMAgEFs/l1+FNuFmvsneVeSStJV9dDuvrmq7rfaBgAA7C03JXnYpsfnrrYd7Zgbq+q0HM4VnzjO556wLcfPuvvh3f3l3X3e6s+bV7s2kvyTk31zAADYe+oUv23rqiTnV9V5VXVGDl/4f+URx1yZ5NLV/acneXN392r7JavV0c5Lcn6Sd+YkbdepOaruviPJn53smwMAAGPp7kNV9Zwkb0iyluTy7r62ql6Q5GB3X5nkl5L8l6q6PsmtORx8sjruNUmuS3IoyQ919/rJ1vR5hRoAAGDv6u7XJ3n9Edt+ctP9Tyf5jmM892eT/OyU9Qg1AAAwK5emT+2EvnwTAADgVCPUAAAAQxNqAACAobmmBgAAZuWamqnp1AAAAEMTagAAgKEZPwMAgDmZPpucTg0AADA0oQYAABia8TMAAJiVvsLUnFEAAGBoQg0AADA042cAADCjsvzZ5HRqAACAoQk1AADA0IyfAQDAnMr42dR0agAAgKEJNQAAwNCEGgAAYGiuqQEAgBlZ0nl6OjUAAMDQhBoAAGBoxs8AAGBW+gpTc0YBAIChCTUAAMDQjJ8BAMCMqqx+NjWdGgAAYGhCDQAAMDTjZwAAMKfSV5iaMwoAAAxtxzs197/P2k6/xSln/eO3LF3C7E4/5/ylS5jd2lm3L13C7E4760uWLmF265+6dekSZrX2hQ9auoTZfebTe++C3X33vf/SJcyu1vbe7yN78f+b2buMnwEAwIzKsNTknFEAAGBoQg0AADA0oQYAABiaa2oAAGBGVXtvgZKdplMDAAAMTagBAACGZvwMAADmVPoKU3NGAQCAoQk1AADA0IyfAQDAjMr42eScUQAAYGhCDQAAMDTjZwAAMKPSV5icMwoAAAxNqAEAAIZm/AwAAGZk9bPpOaMAAMDQhBoAAGBoxs8AAGBGVWtLl7Dr6NQAAABDE2oAAIChCTUAAMDQXFMDAAAzsqTz9JxRAABgaEINAAAwNONnAAAwI+Nn03NGAQCAoQk1AADA0IyfAQDAjKrWli5h19GpAQAAhibUAAAAQzN+BgAAM7L62fScUQAAYGhbhpqqemxVfeHq/r2r6qer6jer6oVVdf95SgQAADi27cbPLk/ytav7P5/kjiQvTPKEJC9N8u07VxoAAOw+Vj+b3nbjZ/u6+9Dq/gXd/aPd/Qfd/dNJvvxYT6qq/VV1sKoOvvk1r5msWAAAgCNtF2reW1Xfu7r/7qq6IEmq6iuTfOZYT+ruA919QXdf8PhnPGOiUgEAAP627ULN9yX5pqr60ySPSPKHVXVDkv+82gcAALCoLa+p6e5PJvme1WIB562Ov7G7Pz5HcQAAsNu4pmZ6x/U9Nd39qSTv3uFaAAAATpjvqQEAAIZ2XJ0aAABgGvtKX2FqzigAADA0oQYAABia8TMAAJiR1c+mp1MDAAAMTagBAACGZvwMAABmZPxsejo1AADA0IQaAABgaMbPAABgRsbPpqdTAwAADE2oAQAAhmb8DAAAZlT7jJ9NTacGAAAYmlADAAAMTagBAACG5poaAACY0T5LOk9OpwYAABiaUAMAAAzN+BkAAMyodvn4WVU9KMmrkzw8yYeSPKO7bzvimEcl+Y9JvjDJepKf7e5Xr/a9LMk3Jfnk6vDv6e6rt3pPnRoAAGBKz0vypu4+P8mbVo+PdEeS7+7ur0lyUZL/UFUP2LT/X3X3o1a3q7d7Q6EGAACY0sVJXr66//IkTzvygO7+k+7+4Or+R5PckuSLPt83NH4GAAAzOtXHz6pqf5L9mzYd6O4DJ/ASZ3f3zav7H0ty9jbvd2GSM5L86abNP1tVP5lVp6e779rqNYQaAADgs1YBZssQU1W/l+SLj7Lr+Ue8VldVb/E6D03yX5Jc2t0bq80/kcNh6IxVHc9N8oKt6hFqAACAE9LdTzzWvqr6eFU9tLtvXoWWW45x3Bcm+e0kz+/uP9r02vd0ee6qqpcm+Zfb1SPUAADAjKp2/a/gVya5NMllqz9/48gDquqMJL+W5Je7+4oj9t0TiCqHr8d573ZvaKEAAABgSpcleVJVfTDJE1ePU1UXVNVLVsc8I8njknxPVV29uj1qte8VVXVNkmuSPDjJv9nuDXd9TAQAAObT3Z9I8oSjbD+Y5PtW938lya8c4/mPP9H3FGoAAGBG+07x1c9GZPwMAAAYmlADAAAMbcfHz178W3fv9Fucci585yuWLmF2H/3ovZcuYXZ/fffem9588H323n/PZz1ky+/62nU+8+lauoTZPeKFz126hNl9/BdfuHQJs/vgu+61dAmz+/DtZy5dwuyedfW2K/+yS+2938oAAGBBtc81NVMzfgYAAAxNqAEAAIZm/AwAAGZU5VfwqenUAAAAQxNqAACAoel9AQDAjKqsfjY1nRoAAGBoQg0AADA042cAADAjq59NT6cGAAAYmlADAAAMTe8LAABmtM/qZ5PTqQEAAIYm1AAAAEMTagAAgKG5pgYAAGZU+/wKPjWdGgAAYGhCDQAAMDS9LwAAmFGVX8GnplMDAAAMTagBAACGpvcFAAAzqlpbuoRdR6cGAAAYmlADAAAMzfgZAADMyOpn09OpAQAAhibUAAAAQ9P7AgCAGdU+v4JPTacGAAAYmlADAAAMTe8LAABmZPWz6enUAAAAQxNqAACAoQk1AADA0LYc6KuqH07ya939kZnqAQCA3c01NZPbrlPzM0neUVX/vap+sKq+6HhetKr2V9XBqjr4sXe87uSrBAAAOIbtQs0NSc7N4XDzdUmuq6rfqapLq+oLjvWk7j7Q3Rd09wVf/Nh/OmG5AAAAn2u73ld390aS303yu1V1epKnJHlmkn+X5Lg6NwAAwGG1z/jZ1LY7o7X5QXd/JsmVSa6sqvvsWFUAAADHabvxs+881o7uvmPiWgAAAE7Ylp2a7v6TuQoBAIC9oKx+NjnfUwMAAAxNqAEAAIam9wUAAHOy+tnkdGoAAIChCTUAAMDQ9L4AAGBOtbZ0BbuOTg0AADA0oQYAABiaUAMAAAzNNTUAADCjsqTz5HRqAACAoQk1AADA0PS+AABgTuVX8Knp1AAAAEMTagAAgKHpfQEAwIza6meT06kBAACGJtQAAABD0/sCAIA57VtbuoJdR6cGAAAYmlADAAAMzfgZAADMyfjZ5HRqAACAoQk1AADA0IyfAQDAjNr42eR0agAAgKEJNQAAwNCEGgAAYGiuqQEAgBm5pmZ6OjUAAMDQhBoAAGBoOz5+9oPfdsZOv8Up57yv/66lS5jdl97+yaVLmF1/+valS5jdaQ952NIlzK5OP3PpEma17773X7qE2X38F1+4dAmzO/sHnrt0CbP7oj34d/bX3/jBpUvgWIyfTU6nBgAAGJpQAwAADM3qZwAAMKPep68wNWcUAAAYmlADAAAMzfgZAADMyJdvTk+nBgAAGJpQAwAADM34GQAAzGhjTV9has4oAAAwNKEGAAAYmlADAAAMzTU1AAAwo96nrzA1ZxQAABiaUAMAAAzN+BkAAMxot4+fVdWDkrw6ycOTfCjJM7r7tqMct57kmtXDD3f3U1fbz0vyqiRnJXlXkn/e3Xdv9Z67+4wCAABze16SN3X3+UnetHp8NHd296NWt6du2v7CJC/q7q9IcluSZ2/3hkINAAAwpYuTvHx1/+VJnna8T6yqSvL4JFecyPONnwEAwIw2TvHxs6ran2T/pk0HuvvACbzE2d198+r+x5KcfYzjzqyqg0kOJbmsu389h0fO/qq7D62OuTHJOdu9oVADAAB81irAbBliqur3knzxUXY9/4jX6qrqY7zMl3X3TVX15UneXFXXJPnk51OzUAMAAJyQ7n7isfZV1cer6qHdfXNVPTTJLcd4jZtWf95QVW9N8ugkr0vygKo6bdWtOTfJTdvVc2r3vgAAYJfptX2n9G0CVya5dHX/0iS/ceQBVfXAqrrX6v6Dk3xjkuu6u5O8JcnTt3r+kYQaAABgSpcleVJVfTDJE1ePU1UXVNVLVsd8dZKDVfXuHA4xl3X3dat9z03y41V1fQ5fY/NL272h8TMAAGAy3f2JJE84yvaDSb5vdf/tSR55jOffkOTCE3lPoQYAAGbU+2rpEnYd42cAAMDQhBoAAGBoQg0AADA019QAAMCMNtZcUzM1nRoAAGBoQg0AADA042cAADAjSzpPT6cGAAAYmlADAAAMzfgZAADMyPjZ9LYMNVV1RpJLkny0u3+vqp6V5O8neV+SA939mRlqBAAAOKbtxs9emuQfJ/mRqvovSb4jyTuSfH2SlxzrSVW1v6oOVtXBN7/mNZMVCwAAcKTtxs8e2d3/U1WdluSmJF/S3etV9StJ3n2sJ3X3gSQHkuQV113Xk1ULAACD67WlK9h9tuvU7FuNoH1Bkvskuf9q+72SnL6ThQEAAByP7To1v5Tk/UnWkjw/yWur6oYk35DkVTtcGwAAwLa2DDXd/aKqevXq/ker6peTPDHJf+7ud85RIAAA7CZWP5vetks6d/dHN93/qyRX7GRBAAAAJ8KXbwIAAEPz5ZsAADAnbYXJOaUAAMDQhBoAAGBoQg0AADA019QAAMCc1pYuYPfRqQEAAIYm1AAAAEMzfgYAAHPSVpicUwoAAAxNqAEAAIZm/AwAAOakrTA5pxQAABiaUAMAAAzN+BkAAMyotBUm55QCAABDE2oAAIChGT8DAIAZ1b5euoRdR6cGAAAYmlADAAAMTagBAACG5poaAACYkSWdp+eUAgAAQxNqAACAoRk/AwCAGe1bW7qC3UenBgAAGJpQAwAADM34GQAAzGiftsLknFIAAGBoQg0AADA042cAADCj2tdLl7Dr6NQAAABD2/FOzd2HNnb6LU45ffenly5hdvvOvO/SJcxu7/0vO6nTz1y6hPmtH1q6glnV2t778oQPvuteS5cwuy/69O1LlzC7vfj/U2tfeNbSJcBsjJ8BAMCMrH42PacUAAAYmlADAAAMzfgZAADMyPjZ9JxSAABgaEINAAAwNKEGAAAYmmtqAABgRq6pmZ5TCgAADE2oAQAAhmb8DAAAZmT8bHpOKQAAMDShBgAAGJrxMwAAmJHxs+k5pQAAwNCEGgAAYGjGzwAAYEZr+3rpEnYdnRoAAGBoQg0AADA042cAADAjq59NzykFAACGJtQAAABDE2oAAIChuaYGAABm5Jqa6TmlAADA0IQaAABgaMbPAABgRmvaCpNzSgEAgKEJNQAAwNCMnwEAwIz21dIV7D46NQAAwNCEGgAAYGjGzwAAYEZWP5ueUwoAAAxt205NVX15km9P8rAk60n+JMl/7e5P7XBtAAAA29qyU1NVP5zkPyU5M8nXJ7lXDoebP6qqb97p4gAAYLfZt+/Uvo1ou7K/P8lTuvvfJHlikq/p7ucnuSjJi471pKraX1UHq+rgW6947XTVAgAAHOF4Fgo4LYfHzu6V5H5J0t0frqrTj/WE7j6Q5ECSvPQ97+0J6gQAADiq7ULNS5JcVVXvSPIPk7wwSarqi5LcusO1AQAAbGvLUNPdP19Vv5fkq5P8++5+/2r7XyR53Az1AQDArmJJ5+ltO37W3dcmuXaGWgAAAE6YnAgAAAzteBYKAAAAJrLbx8+q6kFJXp3k4Uk+lOQZ3X3bEcd8Sz53NeWvSnJJd/96Vb0syTcl+eRq3/d099VbvecuP6UAAMDMnpfkTd19fpI3rR5/ju5+S3c/qrsfleTxSe5I8rubDvlX9+zfLtAkQg0AADCti5O8fHX/5Umets3xT0/y37r7js/3DYUaAACY0dq+U/tWVfur6uCm2/4T/Ihnd/fNq/sfS3L2NsdfkuSVR2z72ap6T1W9qKrutd0buqYGAAD4rO4+kOTAVsesvvbli4+y6/lHvFZXVW/xOg9N8sgkb9i0+SdyOAydsarjuUlesFU9Qg0AAHBCuvuJx9pXVR+vqod2982r0HLLFi/1jCS/1t2f2fTa93R57qqqlyb5l9vVY/wMAABmtG/fqX2bwJVJLl3dvzTJb2xx7DNzxOjZKgilqiqHr8d573ZvKNQAAABTuizJk6rqg0meuHqcqrqgql5yz0FV9fAkD0vytiOe/4qquibJNUkenOTfbPeGxs8AAIDJdPcnkjzhKNsPJvm+TY8/lOScoxz3+BN9T6EGAABmtFZLV7D7GD8DAACGJtQAAABDM34GAAAzWtNWmJxTCgAADE2oAQAAhibUAAAAQ3NNDQAAzMg1NdNzSgEAgKEJNQAAwNCMnwEAwIxO21dLl7Dr6NQAAABDE2oAAIChGT8DAIAZWf1sek4pAAAwNKEGAAAYmvEzAACY0ZrFzyanUwMAAAxNqAEAAIZm/AwAAGZk9bPpOaUAAMDQhBoAAGBoOz5+dveh3um3OOXc9eH3L13C7Padca+lS5jdxqdvX7qE2a3d9/5LlzC7uz/8vqVLmNXp55y/dAmz+/DtZy5dwuy+/sYPLl3C7Na+8KylS5jdaQ952NIlwGxcUwMAADNyTc30nFIAAGBoQg0AADA042cAADCjtX21dAm7jk4NAAAwNKEGAAAYmvEzAACYkdXPpueUAgAAQxNqAACAoRk/AwCAGa1Z/GxyOjUAAMDQhBoAAGBoxs8AAGBGvnxzejo1AADA0IQaAABgaMbPAABgRr58c3pOKQAAMDShBgAAGJpQAwAADM01NQAAMCNLOk9PpwYAABiaUAMAAAzN+BkAAMzIks7Tc0oBAIChCTUAAMDQjJ8BAMCM9pXVz6amUwMAAAxNqAEAAIZm/AwAAGZk9bPpOaUAAMDQhBoAAGBoxs8AAGBGa/usfjY1nRoAAGBoQg0AADA0oQYAABiaa2oAAGBGlnSe3pantKruX1WXVdX7q+rWqvpEVb1vte0BWzxvf1UdrKqD//1Xr5i8aAAAgHtslxNfk+S2JN/c3Q/q7rOSfMtq22uO9aTuPtDdF3T3Bf/w258+XbUAAABH2G787OHd/cLNG7r7Y0leWFX/y86VBQAAu5Mlnae3Xafmz6vqX1fV2fdsqKqzq+q5ST6ys6UBAABsb7tQ851JzkryttU1NbcmeWuSByX5jh2uDQAAYFtbjp91921Jnru6fY6q+t4kL92hugAAYFcyfja9k1lQ7qcnqwIAAODztGWnpqrec6xdSc4+xj4AAIDZbLf62dlJvjWHl3DerJK8fUcqAgCAXcyXb05vu1DzW0nu191XH7mjqt66EwUBAACciO0WCnj2FvueNX05AAAAJ2a7Tg0AADChfVY/m5yJPgAAYGhCDQAAMDShBgAAGJpragAAYEZrrqmZnE4NAAAwNKEGAAAYmvEzAACY0Zq2wuScUgAAYGhCDQAAMDTjZwAAMCOrn01PpwYAABiaUAMAAAzN+BkAAMxon/GzyenUAAAAQxNqAACAoRk/AwCAGfnyzek5pQAAwNCEGgAAYGjGzwAAYEa+fHN6OjUAAMDQhBoAAGBoQg0AADA0oQYAAGa0tq9O6dvJqqrvqKprq2qjqi7Y4riLquoDVXV9VT1v0/bzquodq+2vrqoztntPoQYAAJjSe5N8e5LfP9YBVbWW5BeSPCXJI5I8s6oesdr9wiQv6u6vSHJbkmdv94ZCDQAAMJnufl93f2Cbwy5Mcn1339Dddyd5VZKLq6qSPD7JFavjXp7kadu9544v6fwDj3nkYmvWVdX+7j4w+xs/5mWzv+U9FvvMC9lrnzfxmee21Lr3fs7zedbV/3Lut/wsP+fdb6993mRvfuYT9fgv/opTek3nqtqfZP+mTQd24Gd6TpKPbHp8Y5LHJjkryV9196FN28/Z7sV2e6dm//aH7Dp77TPvtc+b+Mx7hc+8N/jMu99e+7zJ3vzMu0p3H+juCzbd/lagqarfq6r3HuV28RI1+/JNAADghHT3E0/yJW5K8rBNj89dbftEkgdU1Wmrbs0927e02zs1AADAqeeqJOevVjo7I8klSa7s7k7yliRPXx13aZLf2O7Fdnuo2YvznHvtM++1z5v4zHuFz7w3+My73177vMne/MxsUlX/pKpuTPL3kvx2Vb1htf1Lqur1SbLqwjwnyRuSvC/Ja7r72tVLPDfJj1fV9Tl8jc0vbfueh8MQAADAmHZ7pwYAANjlhBoAAGBouzLUVNVFVfWBqrq+qp63dD07raour6pbquq9S9cyl6p6WFW9paquq6prq+pHlq5pp1XVmVX1zqp69+oz//TSNc2hqtaq6o+r6reWrmUuVfWhqrqmqq6uqoNL17PTquoBVXVFVb2/qt5XVX9v6Zp2UlX9ndXP9p7bp6rqR5eua6dV1Y+t/u56b1W9sqrOXLqmnVZVP7L6vNfu1p/x0X4HqaoHVdUbq+qDqz8fuGSN7A27LtRU1VqSX0jylCSPSPLMqnrEslXtuJcluWjpImZ2KMn/1t2PSPINSX5oD/yc70ry+O7+2iSPSnJRVX3DsiXN4kdy+ALCveZbuvtR3X3B0oXM4OeT/E53f1WSr80u/3l39wdWP9tHJfm6JHck+bVlq9pZVXVOkh9OckF3/90kazm80tGuVVV/N8n35/C3pn9tkm+rqq9Ytqod8bL87d9BnpfkTd19fpI3rR7Djtp1oSaH//K4vrtv6O67k7wqySJfAjSX7v79JLcuXcecuvvm7v4fq/t/ncO/BG37bbMj68P+ZvXw9NVtV6/0UVXnJvnHSV6ydC3sjKq6f5LHZbWyTXff3d1/tWhR83pCkj/t7j9fupAZnJbk3lV1WpL7JPnowvXstK9O8o7uvmO1ytPbknz7wjVN7hi/g1yc5OWr+y9P8rQ5a2Jv2o2h5pwkH9n0+Mbs8l9297qqeniSRyd5x8Kl7LjVKNbVSW5J8sbu3u2f+T8k+ddJNhauY26d5Her6l1Vtdu/mfu8JH+R5KWrMcOXVNV9ly5qRpckeeXSRey07r4pyb9L8uEkNyf5ZHf/7rJV7bj3JvmHVXVWVd0nyT/K537R4G52dnffvLr/sSRnL1kMe8NuDDXsIVV1vySvS/Kj3f2ppevZad29vhpZOTfJhavxhl2pqr4tyS3d/a6la1nAP+jux+TwGO0PVdXjli5oB52W5DFJ/mN3PzrJ7dkjoyqrL5t7apLXLl3LTltdU3FxDofYL0ly36r6Z8tWtbO6+31JXpjkd5P8TpKrk6wvWdMSVl+kuKunCjg17MZQc1M+919Czl1tY5epqtNzONC8ort/del65rQaz3lLdve1VN+Y5KlV9aEcHiN9fFX9yrIlzWP1r9rp7lty+FqLC5etaEfdmOTGTV3HK3I45OwFT0nyP7r740sXMoMnJvmz7v6L7v5Mkl9N8vcXrmnHdfcvdffXdffjktyW5E+WrmkmH6+qhybJ6s9bFq6HPWA3hpqrkpxfVeet/hXskiRXLlwTE6uqyuEZ/Pd1988tXc8cquqLquoBq/v3TvKkJO9ftKgd1N0/0d3ndvfDc/i/4zd3967+l90kqar7VtUX3HM/yZNzeIxlV+rujyX5SFX9ndWmJyS5bsGS5vTM7IHRs5UPJ/mGqrrP6u/vJ2SXLwiRJFX1kNWfX5rD19P812Urms2VSS5d3b80yW8sWAt7xGlLFzC17j5UVc9J8oYcXl3l8u6+duGydlRVvTLJNyd5cFXdmOSnuvuXlq1qx31jkn+e5JrVNSZJ8r939+uXK2nHPTTJy1cr/O1L8pru3jPLHO8hZyf5tcO/9+W0JP+1u39n2ZJ23L9I8orVP0TdkOR7F65nx60C65OS/MDStcyhu99RVVck+R85vHrlHyc5sGxVs3hdVZ2V5DNJfmg3LoJxtN9BklyW5DVV9ewkf57kGctVyF5Rh0cdAQAAxrQbx88AAIA9RKgBAACGJtQAAABDE2oAAIChCTUAAMDQhBoAAGBoQg0AADC0/x8OGy9OUujuvgAAAABJRU5ErkJggg==\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" }, "metadata": { "needs_background": "light" @@ -1154,6 +1115,9 @@ } ], "source": [ + "if max3 < 10:\n", + " max3 = 10\n", + "\n", "idf3 = impute_df(split_df3, max_iter= int(max3), verbose=2)\n", "size = idf3.shape[1]\n", "corr = idf3.corr()\n", @@ -1163,7 +1127,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -1171,26 +1135,16 @@ "name": "stdout", "text": [ "[IterativeImputer] Completing matrix with shape (195, 9)\n", - "[IterativeImputer] Ending imputation round 1/10, elapsed time 0.02\n", - "[IterativeImputer] Change: 24.70630011052294, scaled tolerance: 0.087747 \n", - "[IterativeImputer] Ending imputation round 2/10, elapsed time 0.04\n", - "[IterativeImputer] Change: 3.081030825722686, scaled tolerance: 0.087747 \n", - "[IterativeImputer] Ending imputation round 3/10, elapsed time 0.05\n", - "[IterativeImputer] Change: 1.7974084139622217, scaled tolerance: 0.087747 \n", - "[IterativeImputer] Ending imputation round 4/10, elapsed time 0.07\n", - "[IterativeImputer] Change: 1.2013063098503434, scaled tolerance: 0.087747 \n", - "[IterativeImputer] Ending imputation round 5/10, elapsed time 0.08\n", - "[IterativeImputer] Change: 0.8709381898134296, scaled tolerance: 0.087747 \n", - "[IterativeImputer] Ending imputation round 6/10, elapsed time 0.09\n", - "[IterativeImputer] Change: 0.6848017337664789, scaled tolerance: 0.087747 \n", - "[IterativeImputer] Ending imputation round 7/10, elapsed time 0.10\n", - "[IterativeImputer] Change: 0.5789561706855952, scaled tolerance: 0.087747 \n", - "[IterativeImputer] Ending imputation round 8/10, elapsed time 0.11\n", - "[IterativeImputer] Change: 0.5398675991534301, scaled tolerance: 0.087747 \n", - "[IterativeImputer] Ending imputation round 9/10, elapsed time 0.12\n", - "[IterativeImputer] Change: 0.5228675076225393, scaled tolerance: 0.087747 \n", - "[IterativeImputer] Ending imputation round 10/10, elapsed time 0.13\n", - "[IterativeImputer] Change: 0.5054232450128762, scaled tolerance: 0.087747 \n", + "[IterativeImputer] Ending imputation round 1/10, elapsed time 0.06\n", + "[IterativeImputer] Ending imputation round 2/10, elapsed time 0.08\n", + "[IterativeImputer] Ending imputation round 3/10, elapsed time 0.09\n", + "[IterativeImputer] Ending imputation round 4/10, elapsed time 0.11\n", + "[IterativeImputer] Ending imputation round 5/10, elapsed time 0.12\n", + "[IterativeImputer] Ending imputation round 6/10, elapsed time 0.13\n", + "[IterativeImputer] Ending imputation round 7/10, elapsed time 0.14\n", + "[IterativeImputer] Ending imputation round 8/10, elapsed time 0.15\n", + "[IterativeImputer] Ending imputation round 9/10, elapsed time 0.16\n", + "[IterativeImputer] Ending imputation round 10/10, elapsed time 0.18\n", "[IterativeImputer] Completing matrix with shape (195, 9)\n", "[IterativeImputer] Ending imputation round 1/10, elapsed time 0.00\n", "[IterativeImputer] Ending imputation round 2/10, elapsed time 0.00\n", @@ -1202,26 +1156,26 @@ "[IterativeImputer] Ending imputation round 8/10, elapsed time 0.01\n", "[IterativeImputer] Ending imputation round 9/10, elapsed time 0.01\n", "[IterativeImputer] Ending imputation round 10/10, elapsed time 0.01\n", - "C:\\Users\\joach\\.conda\\envs\\wsenv\\lib\\site-packages\\sklearn\\impute\\_iterative.py:685: ConvergenceWarning: [IterativeImputer] Early stopping criterion not reached.\n", - " warnings.warn(\"[IterativeImputer] Early stopping criterion not\"\n" + "/opt/anaconda3/lib/python3.7/site-packages/sklearn/impute/_iterative.py:603: ConvergenceWarning: [IterativeImputer] Early stopping criterion not reached.\n", + " \" reached.\", ConvergenceWarning)\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ - "" + "" ] }, "metadata": {}, - "execution_count": 20 + "execution_count": 15 }, { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\r\n\r\n\r\n \r\n \r\n \r\n \r\n 2021-05-12T09:28:27.310512\r\n image/svg+xml\r\n \r\n \r\n Matplotlib v3.4.1, https://matplotlib.org/\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", - "image/png": "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\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" }, "metadata": { "needs_background": "light" @@ -1229,6 +1183,9 @@ } ], "source": [ + "if max4 < 10:\n", + " max4 = 10\n", + "\n", "idf4 = impute_df(split_df4, max_iter= int(max4), verbose=2)\n", "size = idf4.shape[1]\n", "corr = idf4.corr()\n", @@ -1238,101 +1195,32 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 16, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "[IterativeImputer] Completing matrix with shape (195, 13)\n", - "[IterativeImputer] Ending imputation round 1/22, elapsed time 0.03\n", - "[IterativeImputer] Change: 87.8605447830152, scaled tolerance: 1.4337840000000002 \n", - "[IterativeImputer] Ending imputation round 2/22, elapsed time 0.05\n", - "[IterativeImputer] Change: 28.586268171421256, scaled tolerance: 1.4337840000000002 \n", - "[IterativeImputer] Ending imputation round 3/22, elapsed time 0.07\n", - "[IterativeImputer] Change: 11.593324359484521, scaled tolerance: 1.4337840000000002 \n", - "[IterativeImputer] Ending imputation round 4/22, elapsed time 0.10\n", - "[IterativeImputer] Change: 5.237507958945714, scaled tolerance: 1.4337840000000002 \n", - "[IterativeImputer] Ending imputation round 5/22, elapsed time 0.12\n", - "[IterativeImputer] Change: 3.9889516059898855, scaled tolerance: 1.4337840000000002 \n", - "[IterativeImputer] Ending imputation round 6/22, elapsed time 0.13\n", - "[IterativeImputer] Change: 4.3327704567826295, scaled tolerance: 1.4337840000000002 \n", - "[IterativeImputer] Ending imputation round 7/22, elapsed time 0.15\n", - "[IterativeImputer] Change: 4.743884302961482, scaled tolerance: 1.4337840000000002 \n", - "[IterativeImputer] Ending imputation round 8/22, elapsed time 0.16\n", - "[IterativeImputer] Change: 4.9041296773902205, scaled tolerance: 1.4337840000000002 \n", - "[IterativeImputer] Ending imputation round 9/22, elapsed time 0.18\n", - "[IterativeImputer] Change: 4.8867183949047215, scaled tolerance: 1.4337840000000002 \n", - "[IterativeImputer] Ending imputation round 10/22, elapsed time 0.20\n", - "[IterativeImputer] Change: 4.74618090912474, scaled tolerance: 1.4337840000000002 \n", - "[IterativeImputer] Ending imputation round 11/22, elapsed time 0.22\n", - "[IterativeImputer] Change: 4.597447396969357, scaled tolerance: 1.4337840000000002 \n", - "[IterativeImputer] Ending imputation round 12/22, elapsed time 0.24\n", - "[IterativeImputer] Change: 4.383379000147137, scaled tolerance: 1.4337840000000002 \n", - "[IterativeImputer] Ending imputation round 13/22, elapsed time 0.25\n", - "[IterativeImputer] Change: 4.120519036033551, scaled tolerance: 1.4337840000000002 \n", - "[IterativeImputer] Ending imputation round 14/22, elapsed time 0.27\n", - "[IterativeImputer] Change: 3.829399094168947, scaled tolerance: 1.4337840000000002 \n", - "[IterativeImputer] Ending imputation round 15/22, elapsed time 0.28\n", - "[IterativeImputer] Change: 3.5249997877409696, scaled tolerance: 1.4337840000000002 \n", - "[IterativeImputer] Ending imputation round 16/22, elapsed time 0.30\n", - "[IterativeImputer] Change: 3.218127903389302, scaled tolerance: 1.4337840000000002 \n", - "[IterativeImputer] Ending imputation round 17/22, elapsed time 0.32\n", - "[IterativeImputer] Change: 2.9164496052546856, scaled tolerance: 1.4337840000000002 \n", - "[IterativeImputer] Ending imputation round 18/22, elapsed time 0.34\n", - "[IterativeImputer] Change: 2.625268955987952, scaled tolerance: 1.4337840000000002 \n", - "[IterativeImputer] Ending imputation round 19/22, elapsed time 0.36\n", - "[IterativeImputer] Change: 2.3497527779462066, scaled tolerance: 1.4337840000000002 \n", - "[IterativeImputer] Ending imputation round 20/22, elapsed time 0.38\n", - "[IterativeImputer] Change: 2.0912457219816023, scaled tolerance: 1.4337840000000002 \n", - "[IterativeImputer] Ending imputation round 21/22, elapsed time 0.39\n", - "[IterativeImputer] Change: 1.8498070813863305, scaled tolerance: 1.4337840000000002 \n", - "[IterativeImputer] Ending imputation round 22/22, elapsed time 0.41\n", - "[IterativeImputer] Change: 1.6257610843838977, scaled tolerance: 1.4337840000000002 \n", - "[IterativeImputer] Completing matrix with shape (195, 13)\n", - "[IterativeImputer] Ending imputation round 1/22, elapsed time 0.00\n", - "[IterativeImputer] Ending imputation round 2/22, elapsed time 0.00\n", - "[IterativeImputer] Ending imputation round 3/22, elapsed time 0.00\n", - "[IterativeImputer] Ending imputation round 4/22, elapsed time 0.01\n", - "[IterativeImputer] Ending imputation round 5/22, elapsed time 0.01\n", - "[IterativeImputer] Ending imputation round 6/22, elapsed time 0.01\n", - "[IterativeImputer] Ending imputation round 7/22, elapsed time 0.01\n", - "[IterativeImputer] Ending imputation round 8/22, elapsed time 0.02\n", - "[IterativeImputer] Ending imputation round 9/22, elapsed time 0.02\n", - "[IterativeImputer] Ending imputation round 10/22, elapsed time 0.02\n", - "[IterativeImputer] Ending imputation round 11/22, elapsed time 0.02\n", - "[IterativeImputer] Ending imputation round 12/22, elapsed time 0.02\n", - "[IterativeImputer] Ending imputation round 13/22, elapsed time 0.02\n", - "[IterativeImputer] Ending imputation round 14/22, elapsed time 0.03\n", - "[IterativeImputer] Ending imputation round 15/22, elapsed time 0.03\n", - "[IterativeImputer] Ending imputation round 16/22, elapsed time 0.03\n", - "[IterativeImputer] Ending imputation round 17/22, elapsed time 0.04\n", - "[IterativeImputer] Ending imputation round 18/22, elapsed time 0.04\n", - "[IterativeImputer] Ending imputation round 19/22, elapsed time 0.04\n", - "[IterativeImputer] Ending imputation round 20/22, elapsed time 0.04\n", - "[IterativeImputer] Ending imputation round 21/22, elapsed time 0.04\n", - "[IterativeImputer] Ending imputation round 22/22, elapsed time 0.05\n", - "C:\\Users\\joach\\.conda\\envs\\wsenv\\lib\\site-packages\\sklearn\\impute\\_iterative.py:685: ConvergenceWarning: [IterativeImputer] Early stopping criterion not reached.\n", - " warnings.warn(\"[IterativeImputer] Early stopping criterion not\"\n" + "[IterativeImputer] Completing matrix with shape (195, 4)\n[IterativeImputer] Ending imputation round 1/10, elapsed time 0.03\n[IterativeImputer] Ending imputation round 2/10, elapsed time 0.04\n[IterativeImputer] Ending imputation round 3/10, elapsed time 0.04\n[IterativeImputer] Ending imputation round 4/10, elapsed time 0.04\n[IterativeImputer] Ending imputation round 5/10, elapsed time 0.05\n[IterativeImputer] Ending imputation round 6/10, elapsed time 0.05\n[IterativeImputer] Ending imputation round 7/10, elapsed time 0.06\n[IterativeImputer] Ending imputation round 8/10, elapsed time 0.08\n[IterativeImputer] Early stopping criterion reached.\n[IterativeImputer] Completing matrix with shape (195, 4)\n[IterativeImputer] Ending imputation round 1/8, elapsed time 0.00\n[IterativeImputer] Ending imputation round 2/8, elapsed time 0.00\n[IterativeImputer] Ending imputation round 3/8, elapsed time 0.00\n[IterativeImputer] Ending imputation round 4/8, elapsed time 0.00\n[IterativeImputer] Ending imputation round 5/8, elapsed time 0.00\n[IterativeImputer] Ending imputation round 6/8, elapsed time 0.00\n[IterativeImputer] Ending imputation round 7/8, elapsed time 0.00\n[IterativeImputer] Ending imputation round 8/8, elapsed time 0.00\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ - "" + "" ] }, "metadata": {}, - "execution_count": 21 + "execution_count": 16 }, { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\r\n\r\n\r\n \r\n \r\n \r\n \r\n 2021-05-12T09:28:28.158122\r\n image/svg+xml\r\n \r\n \r\n Matplotlib v3.4.1, https://matplotlib.org/\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", - "image/png": "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\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" }, "metadata": { "needs_background": "light" @@ -1340,6 +1228,9 @@ } ], "source": [ + "if max5 < 10:\n", + " max5 = 10\n", + "\n", "idf5 = impute_df(split_df5, max_iter= int(max5), verbose=2)\n", "size = idf5.shape[1]\n", "corr = idf5.corr()\n", @@ -1347,171 +1238,132 @@ "sns.heatmap(corr, vmin=-1, vmax=1, center=0, xticklabels=range(size), yticklabels=range(size))" ] }, - { - "source": [ - "# Imputation of the whole dataset " - ], - "cell_type": "markdown", - "metadata": {} - }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 17, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "24.0\n" + "[IterativeImputer] Completing matrix with shape (195, 9)\n", + "[IterativeImputer] Ending imputation round 1/22, elapsed time 0.12\n", + "[IterativeImputer] Ending imputation round 2/22, elapsed time 0.14\n", + "[IterativeImputer] Ending imputation round 3/22, elapsed time 0.15\n", + "[IterativeImputer] Ending imputation round 4/22, elapsed time 0.16\n", + "[IterativeImputer] Ending imputation round 5/22, elapsed time 0.17\n", + "[IterativeImputer] Ending imputation round 6/22, elapsed time 0.18\n", + "[IterativeImputer] Ending imputation round 7/22, elapsed time 0.20\n", + "[IterativeImputer] Early stopping criterion reached.\n", + "[IterativeImputer] Completing matrix with shape (195, 9)\n", + "[IterativeImputer] Ending imputation round 1/7, elapsed time 0.00\n", + "[IterativeImputer] Ending imputation round 2/7, elapsed time 0.01\n", + "[IterativeImputer] Ending imputation round 3/7, elapsed time 0.01\n", + "[IterativeImputer] Ending imputation round 4/7, elapsed time 0.01\n", + "[IterativeImputer] Ending imputation round 5/7, elapsed time 0.01\n", + "[IterativeImputer] Ending imputation round 6/7, elapsed time 0.01\n", + "[IterativeImputer] Ending imputation round 7/7, elapsed time 0.02\n" ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 17 + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } } ], "source": [ - "iter_number = (max_missing + min_missing) // 2\n", - "print(iter_number)" + "if max6 < 10:\n", + " max6 = 10\n", + "\n", + "idf6 = impute_df(split_df6, max_iter= int(max6), verbose=2)\n", + "size = idf6.shape[1]\n", + "corr = idf6.corr()\n", + "plt.subplots(figsize=(20,20))\n", + "sns.heatmap(corr, vmin=-1, vmax=1, center=0, xticklabels=range(size), yticklabels=range(size))" ] }, + { + "source": [ + "## Dataframe is merged and displayed below" + ], + "cell_type": "markdown", + "metadata": {} + }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 18, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "[IterativeImputer] Completing matrix with shape (195, 67)\n", - "[IterativeImputer] Ending imputation round 1/24, elapsed time 0.62\n", - "[IterativeImputer] Change: 373997.8709645349, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 2/24, elapsed time 1.24\n", - "[IterativeImputer] Change: 29511.1061871246, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 3/24, elapsed time 1.85\n", - "[IterativeImputer] Change: 17873.188347295738, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 4/24, elapsed time 2.47\n", - "[IterativeImputer] Change: 11459.888077535514, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 5/24, elapsed time 3.09\n", - "[IterativeImputer] Change: 5390.9739547168065, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 6/24, elapsed time 3.71\n", - "[IterativeImputer] Change: 3757.0867210105503, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 7/24, elapsed time 4.34\n", - "[IterativeImputer] Change: 3514.840674151647, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 8/24, elapsed time 4.96\n", - "[IterativeImputer] Change: 3272.008783191113, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 9/24, elapsed time 5.59\n", - "[IterativeImputer] Change: 3038.1248408404294, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 10/24, elapsed time 6.21\n", - "[IterativeImputer] Change: 2816.9578324964855, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 11/24, elapsed time 6.86\n", - "[IterativeImputer] Change: 2609.6887758823086, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 12/24, elapsed time 7.53\n", - "[IterativeImputer] Change: 2416.3188696420248, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 13/24, elapsed time 8.14\n", - "[IterativeImputer] Change: 2236.3250712345057, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 14/24, elapsed time 8.77\n", - "[IterativeImputer] Change: 2069.007986775061, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 15/24, elapsed time 9.40\n", - "[IterativeImputer] Change: 2002.417721664179, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 16/24, elapsed time 10.03\n", - "[IterativeImputer] Change: 1982.0451872189394, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 17/24, elapsed time 10.66\n", - "[IterativeImputer] Change: 1961.971235914504, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 18/24, elapsed time 11.30\n", - "[IterativeImputer] Change: 1942.2299581335687, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 19/24, elapsed time 11.93\n", - "[IterativeImputer] Change: 1922.8595087315427, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 20/24, elapsed time 12.56\n", - "[IterativeImputer] Change: 1903.8819537004383, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 21/24, elapsed time 13.19\n", - "[IterativeImputer] Change: 1885.3076371898812, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 22/24, elapsed time 13.83\n", - "[IterativeImputer] Change: 1867.1381917331032, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 23/24, elapsed time 14.46\n", - "[IterativeImputer] Change: 1849.3691382747977, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Ending imputation round 24/24, elapsed time 15.09\n", - "[IterativeImputer] Change: 1831.9916662386954, scaled tolerance: 131.03159 \n", - "[IterativeImputer] Completing matrix with shape (195, 67)\n", - "[IterativeImputer] Ending imputation round 1/24, elapsed time 0.01\n", - "[IterativeImputer] Ending imputation round 2/24, elapsed time 0.02\n", - "[IterativeImputer] Ending imputation round 3/24, elapsed time 0.03\n", - "[IterativeImputer] Ending imputation round 4/24, elapsed time 0.05\n", - "[IterativeImputer] Ending imputation round 5/24, elapsed time 0.06\n", - "[IterativeImputer] Ending imputation round 6/24, elapsed time 0.07\n", - "[IterativeImputer] Ending imputation round 7/24, elapsed time 0.08\n", - "[IterativeImputer] Ending imputation round 8/24, elapsed time 0.09\n", - "[IterativeImputer] Ending imputation round 9/24, elapsed time 0.10\n", - "[IterativeImputer] Ending imputation round 10/24, elapsed time 0.11\n", - "[IterativeImputer] Ending imputation round 11/24, elapsed time 0.12\n", - "[IterativeImputer] Ending imputation round 12/24, elapsed time 0.13\n", - "[IterativeImputer] Ending imputation round 13/24, elapsed time 0.14\n", - "[IterativeImputer] Ending imputation round 14/24, elapsed time 0.16\n", - "[IterativeImputer] Ending imputation round 15/24, elapsed time 0.17\n", - "[IterativeImputer] Ending imputation round 16/24, elapsed time 0.18\n", - "C:\\Users\\joach\\.conda\\envs\\wsenv\\lib\\site-packages\\sklearn\\impute\\_iterative.py:685: ConvergenceWarning: [IterativeImputer] Early stopping criterion not reached.\n", - " warnings.warn(\"[IterativeImputer] Early stopping criterion not\"\n", - "[IterativeImputer] Ending imputation round 17/24, elapsed time 0.19\n", - "[IterativeImputer] Ending imputation round 18/24, elapsed time 0.21\n", - "[IterativeImputer] Ending imputation round 19/24, elapsed time 0.22\n", - "[IterativeImputer] Ending imputation round 20/24, elapsed time 0.23\n", - "[IterativeImputer] Ending imputation round 21/24, elapsed time 0.24\n", - "[IterativeImputer] Ending imputation round 22/24, elapsed time 0.25\n", - "[IterativeImputer] Ending imputation round 23/24, elapsed time 0.26\n", - "[IterativeImputer] Ending imputation round 24/24, elapsed time 0.27\n" + "(195, 34)\n(195, 45)\n(195, 54)\n(195, 58)\n(195, 67)\n" ] - } - ], - "source": [ - "imputed_df = impute_df(df_inicator_values, max_iter=int(iter_number), verbose=2)" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ + }, { "output_type": "display_data", "data": { - "text/plain": " Population with at least some secondary education (% ages 25 and older) \\\nAFG 26.080 \nAGO 30.232 \nALB 93.174 \nAND 72.327 \nARG 57.158 \n.. ... \nWSM 74.942 \nYEM 28.020 \nZAF 75.478 \nZMB 44.440 \nZWE 64.935 \n\n Population with at least some secondary education, female (% ages 25 and older) \\\nAFG 13.220 \nAGO 23.133 \nALB 93.700 \nAND 71.484 \nARG 59.161 \n.. ... \nWSM 79.127 \nYEM 19.920 \nZAF 74.977 \nZMB 38.488 \nZWE 59.792 \n\n Population with at least some secondary education, male (% ages 25 and older) \\\nAFG 36.920 \nAGO 38.056 \nALB 92.497 \nAND 73.327 \nARG 54.828 \n.. ... \nWSM 71.583 \nYEM 36.918 \nZAF 78.207 \nZMB 54.068 \nZWE 70.783 \n\n Mean years of schooling, female (years) \\\nAFG 1.94800 \nAGO 4.02300 \nALB 9.70200 \nAND 10.43900 \nARG 11.12300 \n.. ... \nWSM 11.16287 \nYEM 2.88000 \nZAF 10.03100 \nZMB 6.28300 \nZWE 8.06600 \n\n Mean years of schooling, male (years) \\\nAFG 6.006000 \nAGO 6.359000 \nALB 10.614000 \nAND 10.564000 \nARG 10.729000 \n.. ... \nWSM 10.415249 \nYEM 5.146000 \nZAF 10.291000 \nZMB 8.176000 \nZWE 8.923000 \n\n Share of seats in parliament (% held by women) \\\nAFG 27.244 \nAGO 30.000 \nALB 29.508 \nAND 46.429 \nARG 39.877 \n.. ... \nWSM 10.000 \nYEM 0.971 \nZAF 45.333 \nZMB 17.964 \nZWE 34.571 \n\n Adolescent birth rate (births per 1,000 women ages 15-19) \\\nAFG 68.957000 \nAGO 150.526000 \nALB 19.642000 \nAND 18.266334 \nARG 62.782000 \n.. ... \nWSM 23.886000 \nYEM 60.352000 \nZAF 67.908000 \nZMB 120.112000 \nZWE 86.135000 \n\n Vulnerable employment (% of total employment) \\\nAFG 79.726000 \nAGO 65.995000 \nALB 52.852000 \nAND 4.461035 \nARG 21.805000 \n.. ... \nWSM 29.983000 \nYEM 45.627000 \nZAF 10.298000 \nZMB 78.134000 \nZWE 64.739000 \n\n Total population (millions) Urban population (%) ... \\\nAFG 38.042 25.8 ... \nAGO 31.825 66.2 ... \nALB 2.881 61.2 ... \nAND 0.077 88.0 ... \nARG 44.781 92.0 ... \n.. ... ... ... \nWSM 0.197 18.1 ... \nYEM 29.162 37.3 ... \nZAF 58.558 66.9 ... \nZMB 17.861 44.1 ... \nZWE 14.645 32.2 ... \n\n Gender Development Index (GDI) \\\nAFG 0.659000 \nAGO 0.903000 \nALB 0.967000 \nAND 1.058332 \nARG 0.993000 \n.. ... \nWSM 0.949613 \nYEM 0.488000 \nZAF 0.986000 \nZMB 0.958000 \nZWE 0.931000 \n\n Estimated gross national income per capita, female (2017 PPP $) \\\nAFG 819.385000 \nAGO 5205.049000 \nALB 11004.455000 \nAND 43647.171247 \nARG 14872.167000 \n.. ... \nWSM 4054.375000 \nYEM 186.041000 \nZAF 9247.751000 \nZMB 3379.549000 \nZWE 2374.612000 \n\n Estimated gross national income per capita, male (2017 PPP $) \\\nAFG 3565.86500 \nAGO 7022.23100 \nALB 16884.66700 \nAND 66636.70046 \nARG 27825.75700 \n.. ... \nWSM 8410.10900 \nYEM 2980.03500 \nZAF 15094.54600 \nZMB 3270.42200 \nZWE 2984.89600 \n\n Human Development Index (HDI), female \\\nAFG 0.391000 \nAGO 0.552000 \nALB 0.780000 \nAND 0.888833 \nARG 0.835000 \n.. ... \nWSM 0.689133 \nYEM 0.270000 \nZAF 0.702000 \nZMB 0.569000 \nZWE 0.550000 \n\n Human Development Index (HDI), male Inequality-adjusted income index \\\nAFG 0.593000 0.590646 \nAGO 0.611000 0.442000 \nALB 0.807000 0.648000 \nAND 0.848604 0.657202 \nARG 0.840000 0.606000 \n.. ... ... \nWSM 0.723468 0.388513 \nYEM 0.553000 0.327000 \nZAF 0.712000 0.312000 \nZMB 0.593000 0.292000 \nZWE 0.590000 0.353000 \n\n Overall loss in HDI due to inequality (%) Inequality in income (%) \\\nAFG 19.599171 -14.312061 \nAGO 31.670000 28.900000 \nALB 10.943000 13.179000 \nAND 17.410515 36.120212 \nARG 13.728000 25.159000 \n.. ... ... \nWSM 18.988401 40.384439 \nYEM 31.702000 21.800000 \nZAF 33.992000 56.996000 \nZMB 31.336000 44.840000 \nZWE 22.767000 28.769000 \n\n Coefficient of human inequality Inequality-adjusted HDI (IHDI) \nAFG 19.795336 0.423465 \nAGO 31.733000 0.397000 \nALB 10.893000 0.708000 \nAND 16.938070 0.735618 \nARG 13.238000 0.729000 \n.. ... ... \nWSM 18.427962 0.575112 \nYEM 30.867000 0.321000 \nZAF 31.163000 0.468000 \nZMB 30.592000 0.401000 \nZWE 22.525000 0.441000 \n\n[195 rows x 67 columns]", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Population with at least some secondary education (% ages 25 and older)Population with at least some secondary education, female (% ages 25 and older)Population with at least some secondary education, male (% ages 25 and older)Mean years of schooling, female (years)Mean years of schooling, male (years)Share of seats in parliament (% held by women)Adolescent birth rate (births per 1,000 women ages 15-19)Vulnerable employment (% of total employment)Total population (millions)Urban population (%)...Gender Development Index (GDI)Estimated gross national income per capita, female (2017 PPP $)Estimated gross national income per capita, male (2017 PPP $)Human Development Index (HDI), femaleHuman Development Index (HDI), maleInequality-adjusted income indexOverall loss in HDI due to inequality (%)Inequality in income (%)Coefficient of human inequalityInequality-adjusted HDI (IHDI)
AFG26.08013.22036.9201.948006.00600027.24468.95700079.72600038.04225.8...0.659000819.3850003565.865000.3910000.5930000.59064619.599171-14.31206119.7953360.423465
AGO30.23223.13338.0564.023006.35900030.000150.52600065.99500031.82566.2...0.9030005205.0490007022.231000.5520000.6110000.44200031.67000028.90000031.7330000.397000
ALB93.17493.70092.4979.7020010.61400029.50819.64200052.8520002.88161.2...0.96700011004.45500016884.667000.7800000.8070000.64800010.94300013.17900010.8930000.708000
AND72.32771.48473.32710.4390010.56400046.42918.2663344.4610350.07788.0...1.05833243647.17124766636.700460.8888330.8486040.65720217.41051536.12021216.9380700.735618
ARG57.15859.16154.82811.1230010.72900039.87762.78200021.80500044.78192.0...0.99300014872.16700027825.757000.8350000.8400000.60600013.72800025.15900013.2380000.729000
..................................................................
WSM74.94279.12771.58311.1628710.41524910.00023.88600029.9830000.19718.1...0.9496134054.3750008410.109000.6891330.7234680.38851318.98840140.38443918.4279620.575112
YEM28.02019.92036.9182.880005.1460000.97160.35200045.62700029.16237.3...0.488000186.0410002980.035000.2700000.5530000.32700031.70200021.80000030.8670000.321000
ZAF75.47874.97778.20710.0310010.29100045.33367.90800010.29800058.55866.9...0.9860009247.75100015094.546000.7020000.7120000.31200033.99200056.99600031.1630000.468000
ZMB44.44038.48854.0686.283008.17600017.964120.11200078.13400017.86144.1...0.9580003379.5490003270.422000.5690000.5930000.29200031.33600044.84000030.5920000.401000
ZWE64.93559.79270.7838.066008.92300034.57186.13500064.73900014.64532.2...0.9310002374.6120002984.896000.5500000.5900000.35300022.76700028.76900022.5250000.441000
\n

195 rows × 67 columns

\n
" + "text/plain": " Population with at least some secondary education (% ages 25 and older) \\\nAFG 26.080 \nAGO 30.232 \nALB 93.174 \nAND 72.327 \nARG 57.158 \n.. ... \nWSM 74.942 \nYEM 28.020 \nZAF 75.478 \nZMB 44.440 \nZWE 64.935 \n\n Population with at least some secondary education, female (% ages 25 and older) \\\nAFG 13.220 \nAGO 23.133 \nALB 93.700 \nAND 71.484 \nARG 59.161 \n.. ... \nWSM 79.127 \nYEM 19.920 \nZAF 74.977 \nZMB 38.488 \nZWE 59.792 \n\n Population with at least some secondary education, male (% ages 25 and older) \\\nAFG 36.920 \nAGO 38.056 \nALB 92.497 \nAND 73.327 \nARG 54.828 \n.. ... \nWSM 71.583 \nYEM 36.918 \nZAF 78.207 \nZMB 54.068 \nZWE 70.783 \n\n Share of seats in parliament (% held by women) \\\nAFG 27.244 \nAGO 30.000 \nALB 29.508 \nAND 46.429 \nARG 39.877 \n.. ... \nWSM 10.000 \nYEM 0.971 \nZAF 45.333 \nZMB 17.964 \nZWE 34.571 \n\n Vulnerable employment (% of total employment) Urban population (%) \\\nAFG 79.72600 25.8 \nAGO 65.99500 66.2 \nALB 52.85200 61.2 \nAND 15.42884 88.0 \nARG 21.80500 92.0 \n.. ... ... \nWSM 29.98300 18.1 \nYEM 45.62700 37.3 \nZAF 10.29800 66.9 \nZMB 78.13400 44.1 \nZWE 64.73900 32.2 \n\n Labour force participation rate (% ages 15 and older), female \\\nAFG 21.595000 \nAGO 76.136000 \nALB 46.712000 \nAND 54.351364 \nARG 50.721000 \n.. ... \nWSM 31.104000 \nYEM 5.834000 \nZAF 49.610000 \nZMB 70.370000 \nZWE 78.106000 \n\n Labour force participation rate (% ages 15 and older), male \\\nAFG 74.658000 \nAGO 78.913000 \nALB 64.568000 \nAND 72.232983 \nARG 72.730000 \n.. ... \nWSM 55.456000 \nYEM 70.183000 \nZAF 62.749000 \nZMB 79.076000 \nZWE 88.993000 \n\n Remittances, inflows (% of GDP) \\\nAFG 4.542000 \nAGO 0.002000 \nALB 9.640000 \nAND 1.703573 \nARG 0.119000 \n.. ... \nWSM 17.254000 \nYEM 7.999177 \nZAF 0.253000 \nZMB 0.551000 \nZWE 8.068000 \n\n Foreign direct investment, net inflows (% of GDP) ... \\\nAFG 0.123000 ... \nAGO -4.331000 ... \nALB 7.912000 ... \nAND 3.286625 ... \nARG 1.389000 ... \n.. ... ... \nWSM 3.114609 ... \nYEM -4.382862 ... \nZAF 1.316000 ... \nZMB 2.087000 ... \nZWE 4.005312 ... \n\n Population under age 5 (millions) \\\nAFG 5.639000 \nAGO 5.670000 \nALB 0.169000 \nAND -7.122259 \nARG 3.742000 \n.. ... \nWSM 0.027000 \nYEM 4.099000 \nZAF 5.786000 \nZMB 2.902000 \nZWE 2.138000 \n\n Adolescent birth rate (births per 1,000 women ages 15-19) \\\nAFG 68.957000 \nAGO 150.526000 \nALB 19.642000 \nAND 14.976928 \nARG 62.782000 \n.. ... \nWSM 23.886000 \nYEM 60.352000 \nZAF 67.908000 \nZMB 120.112000 \nZWE 86.135000 \n\n Sex ratio at birth (male to female births) \\\nAFG 1.060000 \nAGO 1.030000 \nALB 1.090000 \nAND 1.058547 \nARG 1.040000 \n.. ... \nWSM 1.080000 \nYEM 1.050000 \nZAF 1.030000 \nZMB 1.030000 \nZWE 1.020000 \n\n Young age (0-14) dependency ratio (per 100 people ages 15-64) \\\nAFG 77.346000 \nAGO 91.097000 \nALB 25.439000 \nAND 25.017928 \nARG 38.334000 \n.. ... \nWSM 66.194000 \nYEM 67.773000 \nZAF 44.148000 \nZMB 83.229000 \nZWE 76.845000 \n\n Old-age (65 and older) dependency ratio (per 100 people ages 15-64) \\\nAFG 4.764000 \nAGO 4.297000 \nALB 20.764000 \nAND 21.992987 \nARG 17.523000 \n.. ... \nWSM 8.623000 \nYEM 5.015000 \nZAF 8.253000 \nZMB 3.960000 \nZWE 5.433000 \n\n HDI rank Total unemployment rate (female to male ratio) \\\nAFG 169.0 1.356000 \nAGO 148.0 1.016000 \nALB 69.0 0.903000 \nAND 36.0 1.788414 \nARG 46.0 1.222000 \n.. ... ... \nWSM 111.0 1.297000 \nYEM 179.0 2.088000 \nZAF 114.0 1.149000 \nZMB 146.0 1.147000 \nZWE 150.0 1.231000 \n\n Youth unemployment rate (female to male ratio) \\\nAFG 1.308000 \nAGO 0.906000 \nALB 0.799000 \nAND 1.412073 \nARG 1.291000 \n.. ... \nWSM 1.492000 \nYEM 1.467000 \nZAF 1.161000 \nZMB 1.079000 \nZWE 1.269000 \n\n Coefficient of human inequality Inequality-adjusted HDI (IHDI) \nAFG 29.772732 0.360280 \nAGO 31.733000 0.397000 \nALB 10.893000 0.708000 \nAND 10.066536 0.786988 \nARG 13.238000 0.729000 \n.. ... ... \nWSM 21.104700 0.551524 \nYEM 30.867000 0.321000 \nZAF 31.163000 0.468000 \nZMB 30.592000 0.401000 \nZWE 22.525000 0.441000 \n\n[195 rows x 67 columns]", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Population with at least some secondary education (% ages 25 and older)Population with at least some secondary education, female (% ages 25 and older)Population with at least some secondary education, male (% ages 25 and older)Share of seats in parliament (% held by women)Vulnerable employment (% of total employment)Urban population (%)Labour force participation rate (% ages 15 and older), femaleLabour force participation rate (% ages 15 and older), maleRemittances, inflows (% of GDP)Foreign direct investment, net inflows (% of GDP)...Population under age 5 (millions)Adolescent birth rate (births per 1,000 women ages 15-19)Sex ratio at birth (male to female births)Young age (0-14) dependency ratio (per 100 people ages 15-64)Old-age (65 and older) dependency ratio (per 100 people ages 15-64)HDI rankTotal unemployment rate (female to male ratio)Youth unemployment rate (female to male ratio)Coefficient of human inequalityInequality-adjusted HDI (IHDI)
AFG26.08013.22036.92027.24479.7260025.821.59500074.6580004.5420000.123000...5.63900068.9570001.06000077.3460004.764000169.01.3560001.30800029.7727320.360280
AGO30.23223.13338.05630.00065.9950066.276.13600078.9130000.002000-4.331000...5.670000150.5260001.03000091.0970004.297000148.01.0160000.90600031.7330000.397000
ALB93.17493.70092.49729.50852.8520061.246.71200064.5680009.6400007.912000...0.16900019.6420001.09000025.43900020.76400069.00.9030000.79900010.8930000.708000
AND72.32771.48473.32746.42915.4288488.054.35136472.2329831.7035733.286625...-7.12225914.9769281.05854725.01792821.99298736.01.7884141.41207310.0665360.786988
ARG57.15859.16154.82839.87721.8050092.050.72100072.7300000.1190001.389000...3.74200062.7820001.04000038.33400017.52300046.01.2220001.29100013.2380000.729000
..................................................................
WSM74.94279.12771.58310.00029.9830018.131.10400055.45600017.2540003.114609...0.02700023.8860001.08000066.1940008.623000111.01.2970001.49200021.1047000.551524
YEM28.02019.92036.9180.97145.6270037.35.83400070.1830007.999177-4.382862...4.09900060.3520001.05000067.7730005.015000179.02.0880001.46700030.8670000.321000
ZAF75.47874.97778.20745.33310.2980066.949.61000062.7490000.2530001.316000...5.78600067.9080001.03000044.1480008.253000114.01.1490001.16100031.1630000.468000
ZMB44.44038.48854.06817.96478.1340044.170.37000079.0760000.5510002.087000...2.902000120.1120001.03000083.2290003.960000146.01.1470001.07900030.5920000.401000
ZWE64.93559.79270.78334.57164.7390032.278.10600088.9930008.0680004.005312...2.13800086.1350001.02000076.8450005.433000150.01.2310001.26900022.5250000.441000
\n

195 rows × 67 columns

\n
" }, "metadata": {} } ], "source": [ - "display(imputed_df)" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "#scatter_matrix(imputed_df, figsize=(size, size)) Takes a lot of time to work, visualization is not that great. But it can stay, just in case" + "# 29 - 5 - 11 - 9 - 4 - 9\n", + "final_df = idf1.merge(idf2, left_index=True, right_index=True)\n", + "print(final_df.shape)\n", + "final_df = final_df.merge(idf3, left_index=True, right_index=True)\n", + "print(final_df.shape)\n", + "final_df = final_df.merge(idf4, left_index=True, right_index=True)\n", + "print(final_df.shape)\n", + "final_df = final_df.merge(idf5, left_index=True, right_index=True)\n", + "print(final_df.shape)\n", + "final_df = final_df.merge(idf6, left_index=True, right_index=True)\n", + "print(final_df.shape)\n", + "\n", + "display(final_df)" ] }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 19, "metadata": {}, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ - "" + "" ] }, "metadata": {}, - "execution_count": 26 + "execution_count": 19 }, { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\r\n\r\n\r\n \r\n \r\n \r\n \r\n 2021-05-12T09:28:44.813663\r\n image/svg+xml\r\n \r\n \r\n Matplotlib v3.4.1, https://matplotlib.org/\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", - "image/png": "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\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" }, "metadata": { "needs_background": "light" @@ -1519,130 +1371,64 @@ } ], "source": [ - "#sns.heatmap(corr, annot = True, vmin=-1, vmax=1, center= 0, fmt='.1g', cmap= 'coolwarm', linewidths=1, linecolor='black', square=True, yticklabels=False, xticklabels=False)\n", - "size = imputed_df.shape[1]\n", - "corr = imputed_df.corr()\n", + "size = final_df.shape[1]\n", + "corr = final_df.corr()\n", "plt.subplots(figsize=(20,20))\n", - "sns.heatmap(corr, vmin=-1, vmax=1, center=0, xticklabels=range(size), yticklabels=range(size),cmap='mako')" + "sns.heatmap(corr, vmin=-1, vmax=1, center=0, xticklabels=range(size), yticklabels=range(size))" ] }, { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "{0: 'Population with at least some secondary education (% ages 25 and older)', 1: 'Population with at least some secondary education, female (% ages 25 and older)', 2: 'Population with at least some secondary education, male (% ages 25 and older)', 3: 'Mean years of schooling, female (years)', 4: 'Mean years of schooling, male (years)', 5: 'Share of seats in parliament (% held by women)', 6: 'Adolescent birth rate (births per 1,000 women ages 15-19)', 7: 'Vulnerable employment (% of total employment)', 8: 'Total population (millions)', 9: 'Urban population (%)', 10: 'Labour force participation rate (% ages 15 and older), female', 11: 'Labour force participation rate (% ages 15 and older), male', 12: 'Sex ratio at birth (male to female births)', 13: 'Remittances, inflows (% of GDP)', 14: 'Foreign direct investment, net inflows (% of GDP)', 15: 'Population ages 15?64 (millions)', 16: 'Infants lacking immunization, measles (% of one-year-olds)', 17: 'Infants lacking immunization, DTP (% of one-year-olds)', 18: 'Gross fixed capital formation (% of GDP)', 19: 'Gender Inequality Index (GII)', 20: 'Life expectancy at birth (years)', 21: 'Expected years of schooling (years)', 22: 'Inequality-adjusted education index', 23: 'Inequality-adjusted life expectancy index', 24: 'Inequality in education (%)', 25: 'Inequality in life expectancy (%)', 26: 'Mean years of schooling (years)', 27: 'Life expectancy index', 28: 'Income index', 29: 'Education index', 30: 'Unemployment, youth (% ages 15?24)', 31: 'Private capital flows (% of GDP)', 32: 'Life expectancy at birth, female (years)', 33: 'Life expectancy at birth, male (years)', 34: 'Young age (0-14) dependency ratio (per 100 people ages 15-64)', 35: 'Old-age (65 and older) dependency ratio (per 100 people ages 15-64)', 36: 'Expected years of schooling, female (years)', 37: 'Expected years of schooling, male (years)', 38: 'Population ages 65 and older (millions)', 39: 'Population under age 5 (millions)', 40: 'Exports and imports (% of GDP)', 41: 'Human Development Index (HDI)', 42: 'Unemployment, total (% of labour force)', 43: 'HDI rank', 44: 'Youth not in school or employment (% ages 15-24)', 45: 'Labour force participation rate (% ages 15 and older)', 46: 'Employment to population ratio (% ages 15 and older)', 47: 'Employment in agriculture (% of total employment)', 48: 'Employment in services (% of total employment)', 49: 'Working poor at PPP$3.20 a day (% of total employment)', 50: 'Total unemployment rate (female to male ratio)', 51: 'Youth unemployment rate (female to male ratio)', 52: 'Share of employment in nonagriculture, female (% of total employment in nonagriculture)', 53: 'Gross capital formation (% of GDP)', 54: 'Gross domestic product (GDP), total (2017 PPP $ billions)', 55: 'GDP per capita (2017 PPP $)', 56: 'Gross national income (GNI) per capita (constant 2017 PPP$)', 57: 'Gender Development Index (GDI)', 58: 'Estimated gross national income per capita, female (2017 PPP $)', 59: 'Estimated gross national income per capita, male (2017 PPP $)', 60: 'Human Development Index (HDI), female', 61: 'Human Development Index (HDI), male', 62: 'Inequality-adjusted income index', 63: 'Overall loss in HDI due to inequality (%)', 64: 'Inequality in income (%)', 65: 'Coefficient of human inequality', 66: 'Inequality-adjusted HDI (IHDI)'}\n" - ] - } - ], "source": [ - "map_columns = {}\n", - "count = 0\n", - "for col in imputed_df.columns:\n", - " map_columns[count] = col\n", - " count += 1\n", - "\n", - "print(map_columns)\n", - "\n", - "#Makes it easier to check the correlations" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "[[ 26.08 13.22 36.92 ... -14.31206116 19.79533568\n 0.42346498]\n [ 30.232 23.133 38.056 ... 28.9 31.733\n 0.397 ]\n [ 93.174 93.7 92.497 ... 13.179 10.893\n 0.708 ]\n ...\n [ 75.478 74.977 78.207 ... 56.996 31.163\n 0.468 ]\n [ 44.44 38.488 54.068 ... 44.84 30.592\n 0.401 ]\n [ 64.935 59.792 70.783 ... 28.769 22.525\n 0.441 ]]\n" - ] - } + "## PCA of the Final Dataset" ], - "source": [ - "x = imputed_df.loc[:, imputed_df.columns].values\n", - "print(x)\n", - "x = StandardScaler().fit_transform(x)" - ] + "cell_type": "markdown", + "metadata": {} }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 20, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "(195, 67)\n(195, 67)\n" + "[[26.08 13.22 36.92 ... 1.308 29.77273216\n 0.36028022]\n [30.232 23.133 38.056 ... 0.906 31.733\n 0.397 ]\n [93.174 93.7 92.497 ... 0.799 10.893\n 0.708 ]\n ...\n [75.478 74.977 78.207 ... 1.161 31.163\n 0.468 ]\n [44.44 38.488 54.068 ... 1.079 30.592\n 0.401 ]\n [64.935 59.792 70.783 ... 1.269 22.525\n 0.441 ]]\n(195, 67)\n(195, 67)\n" ] } ], "source": [ - "print(imputed_df.shape)\n", + "x = final_df.loc[:, final_df.columns].values\n", + "print(x)\n", + "x = StandardScaler().fit_transform(x)\n", + "\n", + "print(final_df.shape)\n", "print(x.shape)" ] }, { "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": "array([[-1.213211 , -1.49949287, -0.95026927, ..., -3.68962647,\n 0.08912291, -0.98754125],\n [-1.06825946, -1.17214393, -0.90913571, ..., 0.45316976,\n 1.47092771, -1.13989063],\n [ 1.12912485, 1.15813273, 1.06212486, ..., -1.05402286,\n -0.94133748, 0.65042431],\n ...,\n [ 0.51133525, 0.53985833, 0.54469657, ..., 3.14676964,\n 1.40494925, -0.73116921],\n [-0.57224033, -0.66508825, -0.32935532, ..., 1.98135819,\n 1.33885503, -1.11686407],\n [ 0.14326588, 0.03841642, 0.27588008, ..., 0.44061062,\n 0.40508616, -0.88659848]])" - }, - "metadata": {} - } - ], - "source": [ - "display(x)" - ] - }, - { - "source": [ - "### We want to check if the mean of the normalized dataset is 0 and std is 1\n", - "### It looks like it" - ], - "cell_type": "markdown", - "metadata": {} - }, - { - "cell_type": "code", - "execution_count": 31, + "execution_count": 21, "metadata": {}, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ - "(-6.274693313304368e-17, 1.0)" + "(-1.713134035701734e-17, 1.0)" ] }, "metadata": {}, - "execution_count": 31 + "execution_count": 21 } ], "source": [ "np.mean(x), np.std(x)" ] }, - { - "source": [ - "### To show the normalized data" - ], - "cell_type": "markdown", - "metadata": {} - }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -1650,167 +1436,167 @@ "data": { "text/plain": [ " Population with at least some secondary education (% ages 25 and older) \\\n", - "0 -1.213211 \n", - "1 -1.068259 \n", - "2 1.129125 \n", - "3 0.401330 \n", - "4 -0.128239 \n", + "0 -1.242745 \n", + "1 -1.094493 \n", + "2 1.152920 \n", + "3 0.408555 \n", + "4 -0.133071 \n", "\n", " Population with at least some secondary education, female (% ages 25 and older) \\\n", - "0 -1.499493 \n", - "1 -1.172144 \n", - "2 1.158133 \n", - "3 0.424512 \n", - "4 0.017579 \n", + "0 -1.537407 \n", + "1 -1.202607 \n", + "2 1.180706 \n", + "3 0.430388 \n", + "4 0.014194 \n", "\n", " Population with at least some secondary education, male (% ages 25 and older) \\\n", - "0 -0.950269 \n", - "1 -0.909136 \n", - "2 1.062125 \n", - "3 0.367996 \n", - "4 -0.301836 \n", + "0 -0.972184 \n", + "1 -0.930083 \n", + "2 1.087538 \n", + "3 0.377085 \n", + "4 -0.308501 \n", "\n", - " Mean years of schooling, female (years) \\\n", - "0 -1.941779 \n", - "1 -1.318987 \n", - "2 0.385514 \n", - "3 0.606718 \n", - "4 0.812015 \n", + " Share of seats in parliament (% held by women) \\\n", + "0 0.366696 \n", + "1 0.601335 \n", + "2 0.559447 \n", + "3 2.000054 \n", + "4 1.442235 \n", "\n", - " Mean years of schooling, male (years) \\\n", - "0 -1.112677 \n", - "1 -0.984083 \n", - "2 0.565966 \n", - "3 0.547752 \n", - "4 0.607859 \n", + " Vulnerable employment (% of total employment) Urban population (%) \\\n", + "0 1.554740 -1.443911 \n", + "1 1.044887 0.299618 \n", + "2 0.556868 0.083835 \n", + "3 -0.832710 1.240433 \n", + "4 -0.595953 1.413060 \n", "\n", - " Share of seats in parliament (% held by women) \\\n", - "0 0.361897 \n", - "1 0.596509 \n", - "2 0.554626 \n", - "3 1.995072 \n", - "4 1.437315 \n", + " Labour force participation rate (% ages 15 and older), female \\\n", + "0 -2.035680 \n", + "1 1.612659 \n", + "2 -0.355562 \n", + "3 0.155448 \n", + "4 -0.087393 \n", "\n", - " Adolescent birth rate (births per 1,000 women ages 15-19) \\\n", - "0 0.532975 \n", - "1 2.562666 \n", - "2 -0.694136 \n", - "3 -0.728367 \n", - "4 0.379322 \n", + " Labour force participation rate (% ages 15 and older), male \\\n", + "0 0.233312 \n", + "1 0.733974 \n", + "2 -0.953924 \n", + "3 -0.052027 \n", + "4 0.006454 \n", + "\n", + " Remittances, inflows (% of GDP) \\\n", + "0 -0.027719 \n", + "1 -0.796618 \n", + "2 0.835683 \n", + "3 -0.508438 \n", + "4 -0.776802 \n", "\n", - " Vulnerable employment (% of total employment) Total population (millions) \\\n", - "0 1.556274 -0.009236 \n", - "1 1.051012 -0.051786 \n", - "2 0.567386 -0.249884 \n", - "3 -1.213266 -0.269075 \n", - "4 -0.575057 0.036887 \n", + " Foreign direct investment, net inflows (% of GDP) ... \\\n", + "0 -0.441756 ... \n", + "1 -0.915527 ... \n", + "2 0.386758 ... \n", + "3 -0.105242 ... \n", + "4 -0.307092 ... \n", "\n", - " Urban population (%) ... Gender Development Index (GDI) \\\n", - "0 -1.443911 ... -3.764694 \n", - "1 0.299618 ... -0.482479 \n", - "2 0.083835 ... 0.378430 \n", - "3 1.240433 ... 1.606995 \n", - "4 1.413060 ... 0.728174 \n", + " Population under age 5 (millions) \\\n", + "0 0.225085 \n", + "1 0.227833 \n", + "2 -0.259851 \n", + "3 -0.906248 \n", + "4 0.056909 \n", "\n", - " Estimated gross national income per capita, female (2017 PPP $) \\\n", - "0 -0.880471 \n", - "1 -0.605187 \n", - "2 -0.241164 \n", - "3 1.807789 \n", - "4 0.001609 \n", + " Adolescent birth rate (births per 1,000 women ages 15-19) \\\n", + "0 0.534851 \n", + "1 2.593772 \n", + "2 -0.709932 \n", + "3 -0.827685 \n", + "4 0.378985 \n", + "\n", + " Sex ratio at birth (male to female births) \\\n", + "0 0.462524 \n", + "1 -1.216161 \n", + "2 2.141209 \n", + "3 0.381230 \n", + "4 -0.656599 \n", "\n", - " Estimated gross national income per capita, male (2017 PPP $) \\\n", - "0 -0.858135 \n", - "1 -0.720907 \n", - "2 -0.329338 \n", - "3 1.645966 \n", - "4 0.105056 \n", + " Young age (0-14) dependency ratio (per 100 people ages 15-64) \\\n", + "0 1.513894 \n", + "1 2.161911 \n", + "2 -0.932226 \n", + "3 -0.952069 \n", + "4 -0.324548 \n", "\n", - " Human Development Index (HDI), female Human Development Index (HDI), male \\\n", - "0 -1.898855 -1.037358 \n", - "1 -0.901924 -0.907477 \n", - "2 0.509877 0.506782 \n", - "3 1.183786 0.806977 \n", - "4 0.850444 0.744897 \n", + " Old-age (65 and older) dependency ratio (per 100 people ages 15-64) \\\n", + "0 -0.950705 \n", + "1 -0.999777 \n", + "2 0.730564 \n", + "3 0.859705 \n", + "4 0.390002 \n", "\n", - " Inequality-adjusted income index \\\n", - "0 0.259496 \n", - "1 -0.644363 \n", - "2 0.608240 \n", - "3 0.664195 \n", - "4 0.352855 \n", + " HDI rank Total unemployment rate (female to male ratio) \\\n", + "0 1.364735 -0.115960 \n", + "1 0.976870 -0.308338 \n", + "2 -0.482239 -0.372276 \n", + "3 -1.091741 0.128707 \n", + "4 -0.907043 -0.191780 \n", "\n", - " Overall loss in HDI due to inequality (%) Inequality in income (%) \\\n", - "0 0.022060 -3.689626 \n", - "1 1.394523 0.453170 \n", - "2 -0.962154 -1.054023 \n", - "3 -0.226792 1.145381 \n", - "4 -0.645497 0.094515 \n", + " Youth unemployment rate (female to male ratio) \\\n", + "0 -0.049773 \n", + "1 -0.485075 \n", + "2 -0.600939 \n", + "3 0.062921 \n", + "4 -0.068182 \n", "\n", " Coefficient of human inequality Inequality-adjusted HDI (IHDI) \n", - "0 0.089123 -0.987541 \n", - "1 1.470928 -1.139891 \n", - "2 -0.941337 0.650424 \n", - "3 -0.241610 0.809411 \n", - "4 -0.669900 0.771314 \n", + "0 1.192044 -1.315801 \n", + "1 1.408239 -1.110134 \n", + "2 -0.890168 0.631779 \n", + "3 -0.981317 1.074191 \n", + "4 -0.631542 0.749400 \n", "\n", "[5 rows x 67 columns]" ], - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Population with at least some secondary education (% ages 25 and older)Population with at least some secondary education, female (% ages 25 and older)Population with at least some secondary education, male (% ages 25 and older)Mean years of schooling, female (years)Mean years of schooling, male (years)Share of seats in parliament (% held by women)Adolescent birth rate (births per 1,000 women ages 15-19)Vulnerable employment (% of total employment)Total population (millions)Urban population (%)...Gender Development Index (GDI)Estimated gross national income per capita, female (2017 PPP $)Estimated gross national income per capita, male (2017 PPP $)Human Development Index (HDI), femaleHuman Development Index (HDI), maleInequality-adjusted income indexOverall loss in HDI due to inequality (%)Inequality in income (%)Coefficient of human inequalityInequality-adjusted HDI (IHDI)
0-1.213211-1.499493-0.950269-1.941779-1.1126770.3618970.5329751.556274-0.009236-1.443911...-3.764694-0.880471-0.858135-1.898855-1.0373580.2594960.022060-3.6896260.089123-0.987541
1-1.068259-1.172144-0.909136-1.318987-0.9840830.5965092.5626661.051012-0.0517860.299618...-0.482479-0.605187-0.720907-0.901924-0.907477-0.6443631.3945230.4531701.470928-1.139891
21.1291251.1581331.0621250.3855140.5659660.554626-0.6941360.567386-0.2498840.083835...0.378430-0.241164-0.3293380.5098770.5067820.608240-0.962154-1.054023-0.9413370.650424
30.4013300.4245120.3679960.6067180.5477521.995072-0.728367-1.213266-0.2690751.240433...1.6069951.8077891.6459661.1837860.8069770.664195-0.2267921.145381-0.2416100.809411
4-0.1282390.017579-0.3018360.8120150.6078591.4373150.379322-0.5750570.0368871.413060...0.7281740.0016090.1050560.8504440.7448970.352855-0.6454970.094515-0.6699000.771314
\n

5 rows × 67 columns

\n
" + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Population with at least some secondary education (% ages 25 and older)Population with at least some secondary education, female (% ages 25 and older)Population with at least some secondary education, male (% ages 25 and older)Share of seats in parliament (% held by women)Vulnerable employment (% of total employment)Urban population (%)Labour force participation rate (% ages 15 and older), femaleLabour force participation rate (% ages 15 and older), maleRemittances, inflows (% of GDP)Foreign direct investment, net inflows (% of GDP)...Population under age 5 (millions)Adolescent birth rate (births per 1,000 women ages 15-19)Sex ratio at birth (male to female births)Young age (0-14) dependency ratio (per 100 people ages 15-64)Old-age (65 and older) dependency ratio (per 100 people ages 15-64)HDI rankTotal unemployment rate (female to male ratio)Youth unemployment rate (female to male ratio)Coefficient of human inequalityInequality-adjusted HDI (IHDI)
0-1.242745-1.537407-0.9721840.3666961.554740-1.443911-2.0356800.233312-0.027719-0.441756...0.2250850.5348510.4625241.513894-0.9507051.364735-0.115960-0.0497731.192044-1.315801
1-1.094493-1.202607-0.9300830.6013351.0448870.2996181.6126590.733974-0.796618-0.915527...0.2278332.593772-1.2161612.161911-0.9997770.976870-0.308338-0.4850751.408239-1.110134
21.1529201.1807061.0875380.5594470.5568680.083835-0.355562-0.9539240.8356830.386758...-0.259851-0.7099322.141209-0.9322260.730564-0.482239-0.372276-0.600939-0.8901680.631779
30.4085550.4303880.3770852.000054-0.8327101.2404330.155448-0.052027-0.508438-0.105242...-0.906248-0.8276850.381230-0.9520690.859705-1.0917410.1287070.062921-0.9813171.074191
4-0.1330710.014194-0.3085011.442235-0.5959531.413060-0.0873930.006454-0.776802-0.307092...0.0569090.378985-0.656599-0.3245480.390002-0.907043-0.191780-0.068182-0.6315420.749400
\n

5 rows × 67 columns

\n
" }, "metadata": {}, - "execution_count": 32 + "execution_count": 22 } ], "source": [ - "feat_cols = imputed_df.columns.values.tolist()\n", + "feat_cols = final_df.columns.values.tolist()\n", "#print(feat_cols)\n", - "normalized_imputed_df = pd.DataFrame(x, columns=feat_cols)\n", - "normalized_imputed_df.head()" + "normalized_final_df = pd.DataFrame(x, columns=feat_cols)\n", + "normalized_final_df.head()" ] }, - { - "source": [ - "### Now we start with the PCA Part" - ], - "cell_type": "markdown", - "metadata": {} - }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 23, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "['PC1', 'PC2', 'PC3']\n['49.70', '7.85', '7.20']\n" + "['PC1', 'PC2', 'PC3']\n['49.73', '7.93', '7.18']\n" ] } ], "source": [ "num_components = 3\n", - "pca_imputed = PCA(n_components=num_components)\n", - "pComponents_imputed = pca_imputed.fit_transform(x)\n", + "pca_final = PCA(n_components=num_components)\n", + "pComponents_final = pca_final.fit_transform(x)\n", "component_col = ['PC'+str(i+1) for i in range(num_components)]\n", "print(component_col)\n", "\n", - "percentage_list = [element * 100 for element in pca_imputed.explained_variance_ratio_]\n", + "percentage_list = [element * 100 for element in pca_final.explained_variance_ratio_]\n", "percentage_list = ['%.2f' % elem for elem in percentage_list]\n", "print(percentage_list)" ] }, - { - "source": [ - "### PC stands for principal components" - ], - "cell_type": "markdown", - "metadata": {} - }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -1825,61 +1611,61 @@ "data": { "text/plain": [ " PC1 PC2 PC3\n", - "0 7.815705 3.771093 -0.133255\n", - "1 7.339138 -2.606812 0.272919\n", - "2 -3.214204 2.176000 -0.611012\n", - "3 -5.807156 -1.477608 -0.284501\n", - "4 -3.974595 0.524419 -0.239346" + "0 8.660925 3.855080 -0.080563\n", + "1 7.369314 -2.616149 0.028787\n", + "2 -3.287324 2.085875 -0.449373\n", + "3 -5.811149 -0.738707 -0.166838\n", + "4 -3.917583 0.676241 -0.271113" ], - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
PC1PC2PC3
07.8157053.771093-0.133255
17.339138-2.6068120.272919
2-3.2142042.176000-0.611012
3-5.807156-1.477608-0.284501
4-3.9745950.524419-0.239346
\n
" + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
PC1PC2PC3
08.6609253.855080-0.080563
17.369314-2.6161490.028787
2-3.2873242.085875-0.449373
3-5.811149-0.738707-0.166838
4-3.9175830.676241-0.271113
\n
" }, "metadata": {}, - "execution_count": 34 + "execution_count": 24 } ], "source": [ - "pc_imputed_df = pd.DataFrame(data = pComponents_imputed, columns = component_col)\n", - "print(pc_imputed_df.shape)\n", - "pc_imputed_df.head()" + "pc_final_df = pd.DataFrame(data = pComponents_final, columns = component_col)\n", + "print(pc_final_df.shape)\n", + "pc_final_df.head()" ] }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 25, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "Explained variation percentage per principal component: ['49.70', '7.85', '7.20']\nTotal percentage of the explained data by 3 components is: 64.75\nPercentage of the information that is lost for using 3 components is: 35.25\n" + "Explained variation percentage per principal component: ['49.73', '7.93', '7.18']\nTotal percentage of the explained data by 3 components is: 64.84\nPercentage of the information that is lost for using 3 components is: 35.16\n" ] } ], "source": [ "print('Explained variation percentage per principal component: {}'.format(percentage_list))\n", - "total_explained_percentage = (sum(pca_imputed.explained_variance_ratio_)*100)\n", - "print('Total percentage of the explained data by',pca_imputed.n_components,'components is: %.2f' %total_explained_percentage)\n", - "print('Percentage of the information that is lost for using',pca_imputed.n_components,'components is: %.2f' %(100-total_explained_percentage))" + "total_explained_percentage = (sum(pca_final.explained_variance_ratio_)*100)\n", + "print('Total percentage of the explained data by',pca_final.n_components,'components is: %.2f' %total_explained_percentage)\n", + "print('Percentage of the information that is lost for using',pca_final.n_components,'components is: %.2f' %(100-total_explained_percentage))" ] }, { "source": [ - "### Outliers are a big problem as it can be seen from the graph" + "## 3 Main Principle Component is presented" ], "cell_type": "markdown", "metadata": {} }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 26, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "{'0': 'PC1 49.70%', '1': 'PC2 7.85%', '2': 'PC3 7.20%'}\n" + "{'0': 'PC1 49.73%', '1': 'PC2 7.93%', '2': 'PC3 7.18%'}\n" ] }, { @@ -1891,7 +1677,7 @@ }, "data": [ { - "hovertemplate": "PC1 49.70%=%{x}
PC2 7.85%=%{y}
PC3 7.20%=%{z}", + "hovertemplate": "PC1 49.73%=%{x}
PC2 7.93%=%{y}
PC3 7.18%=%{z}", "legendgroup": "", "marker": { "color": "#636efa", @@ -1903,595 +1689,595 @@ "showlegend": false, "type": "scatter3d", "x": [ - 7.815705391742462, - 7.339137705703802, - -3.214203916269259, - -5.80715643866871, - -3.9745954619497295, - -2.890966092672859, - -1.1134671652005752, - -9.02976272407463, - -8.089903395153193, - -1.9800675811561705, - 9.527366508949298, - -8.814781431817284, - 8.057536998694976, - 9.389458414018907, - 3.8049608938917885, - -4.5411540540591, - -4.23920966194199, - -3.1588756354356065, - -2.6858306608095894, - -5.136335371331304, - 0.12810416951246514, - 1.267042524569538, - -0.6885217978448994, - -3.65835391674737, - -4.182557988623389, - 3.7408392194080093, - 0.20400898125735614, - 12.56978154058819, - -8.050563036925059, - -4.288361890597987, - -2.3582248937799273, - 8.327761469360418, - 7.2752883396901575, - 8.856710810591405, - 5.533077430318204, - -0.6019520590967266, - 7.294069988360144, - 1.8970704667026417, - -2.788007359243617, - -3.0580619971246326, - -6.588294978619638, - -7.573929299906972, - -8.902789615997523, - 5.372849242136768, - -0.5339264068916624, - -9.082419175322016, - -0.3654413763172631, - -0.11787503537257654, - -0.26730624222407656, - 1.6301659735629148, - 7.904739443603567, - -7.157833186894553, - 8.762975653218588, - -9.194067425167436, - -0.3051455870997747, - -7.3806651712145515, - 2.1534605695235087, - -3.1876558033358795, - 4.47778550921977, - 7.862744607195441, - 5.901182830324904, - -6.354542916764469, - -0.4067551835511576, - -5.970468538879629, - 4.566984752150551, - 1.9292708308075317, - 4.772592533434519, - 13.069788552035853, - 4.367579870283229, - 10.18771836172564, - 9.546609925194428, - 3.268280023564391, - 1.3641510634203449, - -8.959144626756714, - 3.5239748566941724, - 8.09574152733288, - -5.997380117994976, - 1.0110406969635937, - 3.785140734566966, - -9.092556100865856, - -2.093224510897799, - 2.313017712713081, - -9.083314846698999, - -7.18731043401891, - -6.72232805979924, - -0.6159066258325677, - -0.9248226691956368, - -8.241936643448538, - -4.3512784393720105, - 5.314985585514629, - -0.634269111601688, - 3.6412780541396295, - -7.021759781450271, - -2.7879093551636958, - 5.21499904167344, - -0.5048660224959203, - 8.250222773015107, - -0.028671322512146755, - -10.239720758557572, - 6.6673450911698335, - -6.599811015887725, - -9.075382520720181, - -6.347740337271529, - 1.5171468658736802, - -1.362051712582059, - -2.037529218145667, - 7.7171716974342415, - -0.32339256579989906, - -1.1282922477603508, - 0.21885241143556144, - -2.31846231910023, - 11.205339947133302, - -7.361576598086409, - 4.790180540615756, - -4.5948425662985315, - -1.0509994004013095, - 9.471266868062813, - 7.273411428415602, - -2.89776118464564, - 7.513645783446732, - -2.9246343517899582, - 4.019324064053343, - 11.673093122705474, - 8.071012495061858, - 2.0699265091720696, - -8.997003865902158, - -9.445122207161843, - 5.101055040274665, - -0.21329078140762486, - -8.094356897681944, - -3.150516903237161, - 6.676900922868478, - -3.9195141665897246, - 1.8540679921789573, - -0.15376162236217705, - -5.648809454506782, - -9.218137325881434, - -6.979610366647846, - -7.885858153911095, - -1.4386898053967137, - -0.6233359470292887, - -1.7593857873642393, - -2.344725313882094, - -1.0534229727076467, - 0.6654668206170398, - 7.887735069516859, - -6.38882597077141, - -5.6397559950521154, - 0.8455120890389446, - -5.250593981881587, - -4.112425219809245, - -4.681161480300002, - 6.522331966196904, - -4.023280194965856, - 7.742324860246996, - 7.352758852805935, - -8.962687133514889, - 4.31975979988239, - 9.705167181253548, - -2.484810312171407, - 7.561131630567262, - -4.017490652651401, - 11.093618100157807, - 2.9909862541842602, - 0.28649873104569173, - -6.073720961255064, - -8.067662923582365, - -9.228762918666252, - -2.572977914669187, - 4.497489633099259, - 7.555490434805937, - -1.3302502498349542, - 0.889150114494581, - 0.6492983535956304, - 5.372302012623104, - -0.3836415766204878, - -2.3372990413558163, - -0.7046133426963144, - -2.7672631482209042, - 0.7779732705161404, - 7.679315506536789, - 7.212648012351597, - -3.717171194809398, - -3.443218965335672, - -7.9884355813861525, - -0.15437542776681207, - -0.3252988281038899, - -0.04736873525040834, - -0.06581490480457773, - 4.876186643841398, - 0.36241169157713116, - 8.959685526258205, - 1.3513180314927358, - 6.150885694615564, - 5.4789655277814875 + 8.660925373030112, + 7.36931441039187, + -3.287323774612212, + -5.811149454434806, + -3.917583415567073, + -2.9338836176267127, + -1.3634938862156527, + -8.95719329714002, + -8.061102744290617, + -2.0143966716041626, + 9.518730559247157, + -8.83584022021243, + 8.101931475789897, + 9.390221152113469, + 3.7920355348972397, + -4.533593406252421, + -4.360984547988361, + -3.512033805407493, + -2.693074770407761, + -5.187274735018256, + 0.15634895125033405, + 1.327148550243007, + -0.5915289853603273, + -3.651639000535378, + -4.506113576087406, + 3.628606254985032, + 0.4220843585147365, + 12.680295441880574, + -7.967091555964078, + -4.194571416724602, + -2.275633082655154, + 8.366996344735632, + 7.300290963343796, + 8.926587475681194, + 5.557030223889865, + -0.5358221359930567, + 7.389569574497576, + 2.0766840364109256, + -2.7277717561457733, + -3.4448467607081747, + -6.890528980649567, + -7.618664623703192, + -8.793588332529188, + 5.030759542043407, + -0.8133041827675904, + -9.048869551995287, + -0.3224865164826, + -0.11270737710548943, + -0.21558223396562975, + 1.706906391115579, + 8.221535016841335, + -7.165904482034793, + 8.698629888933718, + -9.324042146819695, + -0.4363534601027277, + -7.403491382198684, + 2.137625968690034, + -3.2522807297427105, + 4.437806353565892, + 7.79742829320645, + 6.402924375558027, + -6.254361937358284, + -0.24840011661343397, + -5.9743490272615185, + 4.43695230324791, + 1.9170572823945042, + 4.8116043036306495, + 13.0309792014796, + 4.56048084557989, + 10.124601509654775, + 9.464432864991926, + 3.332273020710495, + 1.334235774731984, + -8.677829019013167, + 3.566237278455438, + 8.102761520239902, + -5.990221066605703, + 1.0212879422538246, + 3.799763414682114, + -8.961571182924617, + -2.0116371496465018, + 2.3452054287494515, + -8.998425604718578, + -7.192573125538015, + -6.69926394386997, + -0.6197240202964007, + -0.8871561941125945, + -8.160398493492213, + -4.375289152115088, + 5.384390076964414, + -0.7368806438860154, + 3.8542782035866976, + -6.959926349684004, + -2.912873268210257, + 5.11979306543985, + -0.8804355671773069, + 8.221737810503074, + -0.2959305965655109, + -6.745582778644443, + 6.607815336068809, + -6.665402163818996, + -10.22624722126282, + -6.383178963211472, + 1.6061607812886278, + -0.923072842836434, + -2.1045430816121162, + 7.742286990664149, + -0.3249499652865133, + -1.0545194081043436, + -0.8793745013263952, + -2.315936291337086, + 11.171093857013355, + -7.8586969724826385, + 5.10063014743016, + -4.671798219956093, + -1.1803364178532467, + 9.495409105780801, + 7.274862403400485, + -2.911851692298899, + 7.592600143178789, + -3.3239892133995954, + 4.158783210879166, + 11.659981452804312, + 8.106398056165082, + 2.082527374112786, + -8.882946614749645, + -9.40254395453483, + 4.960564659314305, + -0.45350878877708417, + -8.014766635562616, + -3.0901261913689666, + 6.6922476770592, + -4.707503064696859, + 0.7571221305201962, + -0.1676971430788005, + -5.956312959493098, + -9.131681154878528, + -6.951574928918852, + -7.842286950536407, + -1.0862985842844837, + -0.553407667927873, + -1.7756904913436278, + -2.284128602738151, + -1.0306200985471243, + 0.686392192277255, + 7.906495025661678, + -6.386655189132161, + -5.633462144999635, + 0.9379578630417558, + -5.340853869141102, + -4.103711688500217, + -4.6722331884107575, + 6.607486409903617, + -4.249172805924318, + 7.790891416947143, + 7.429333092490025, + -8.868267693969555, + 4.2617616621659735, + 9.739984460067737, + -1.2982756071941874, + 6.6997542096048734, + -4.044533181810401, + 11.37384943365761, + 2.9989471218939494, + 0.43928328385974, + -6.105665614117344, + -8.093367975526451, + -9.18598504844754, + -2.4745554817040665, + 4.837127138188524, + 7.551378070484332, + -1.2843924193698983, + 0.820800722755169, + 0.7473458450490823, + 5.365815568843352, + -0.7597514742681404, + -2.4373413206171173, + -0.7138582435099253, + -2.705881390776994, + 0.31476642032113766, + 7.71333296545075, + 7.186259568291081, + -3.7978657071531776, + -3.3979525762581626, + -7.75882743273823, + -0.5968403419780313, + -0.5838730219221859, + -0.007916107619517623, + -0.2041579547749093, + 4.88102780317078, + 0.015884491794824422, + 9.204539209440739, + 1.4973101808646454, + 6.220218114546498, + 5.442054166264446 ], "y": [ - 3.7710930700377343, - -2.6068122483972225, - 2.1759998382097714, - -1.477608137355973, - 0.5244193644395958, - 3.2222414860008306, - -0.6243507824918618, - -1.4525585842358641, - -1.2454320204471736, - -0.3197983036265329, - -4.237515714493149, - -0.1745838558446209, - -2.3382043958696803, - -1.0001205825719757, - 1.111163226050274, - 0.36914800662604874, - -2.0102061441495627, - -0.9596191176361444, - 4.114508502610506, - -1.1129139648683155, - -0.04650566248863399, - -2.1837767842915867, - 1.59071944797144, - 0.47363682832027093, - -0.3555564643680984, - -0.9772141578971821, - 0.6748364196510189, - -1.852551303827457, - -1.094111964537084, - -0.13869719837063346, - 4.666867362889493, - 0.3930464320109389, - -2.5179622696437893, - -0.32093333784864697, - -0.7806349080444681, - -0.32532378405232726, - 2.3955915410128226, - 1.141869680698887, - 0.5613822279535107, - 0.6199184188077461, - -0.7912863453361185, - -1.170416996964333, - -1.0513991436296977, - 0.9590765521071616, - -0.27242128263812415, - -1.5085111318643667, - -0.3085735129738893, - 4.131216809952003, - -1.3260495297428727, - 4.055202391554322, - -2.2912905440280102, - -1.047719714753937, - -3.561210590917475, - -0.7534647588303485, - 0.521686291212891, - 0.5153572670991243, - 3.2982843117596703, - 0.5439050810776036, - -0.6139123293485069, - 1.24966754387615, - 0.08283426661537716, - 2.4205953671128966, - -0.8620360299059099, - 1.218415315069224, - -3.702394948803829, - 0.44234956852966806, - 3.479352348848602, - -2.0858220432044217, - 0.825736813216072, - -1.019524143668798, - -2.2098267746146685, - -0.18289127807047462, - 1.783105542226986, - -1.584742368267455, - -0.7885358100669981, - 1.4064754574794345, - -0.06121314024465169, - 0.20217916802341582, - 7.474788743257434, - -1.7492366112861004, - 4.134103049603261, - 5.069571363427267, - -3.3111111011242764, - -1.1911420440298752, - 2.085456665139465, - 0.3894734380967889, - 5.668793789144949, - -0.558134535111894, - -1.6454439632996396, - -2.4859943981787693, - 1.00599629341969, - 0.3529129239948134, - -0.6009508210767537, - -1.4789193673035914, - -3.7748892487898007, - 3.100974039846159, - -2.897771044300527, - 4.298572957046066, - -1.4505126708965623, - 1.3700733845045165, - -0.8428440174556316, - -1.4758330493933198, - -0.6967325849637968, - 3.1668800161854556, - -0.23873747865098688, - 2.4856432233399466, - -4.9921256886164125, - 0.16518106042801775, - -0.11171481571152728, - 1.0949247613992086, - 2.3302094506334567, - -1.0266218714485222, - -0.5290480011503546, - -0.8344495211845591, - 2.2091109582233983, - -0.10605596618334574, - -3.553147300917237, - 2.8083552413960424, - 0.6479697790399467, - -3.1489644344238026, - -0.7947752862465971, - 1.8864930596369995, - -2.5018749242658975, - 2.1472048210075987, - -1.066223004796494, - -2.0100362941854204, - -2.0854082137719283, - -3.6505235452230527, - 0.26715344146391684, - -2.0767724469085764, - -0.4691622797649216, - 3.3168574113875895, - 0.1298244177503368, - -3.4670042691428264, - 5.789549947812651, - -3.3078602462065954, - -2.569035394856519, - 1.0984202420704408, - -0.8037305700455658, - -0.6636828835248264, - 1.6051363516612027, - 1.671485719666504, - -1.518616085313642, - -2.5393250747189424, - 0.3120517966570482, - 1.787750467826509, - -0.19724141628178163, - -0.4943330634356602, - -1.4935380283703719, - -4.649245770451785, - 0.4345804417117196, - 0.3501036381156643, - -4.949826018260202, - 1.5072756647611225, - 3.7003818677917777, - 2.1195330631670433, - -3.4129919044965176, - -4.081080733037543, - -0.8384739520601534, - -0.7090983114822332, - 2.5751290648726224, - 1.735506551700908, - -0.39572799630852773, - 1.2958850189263693, - 1.8970870955716783, - -0.308620040638708, - -0.7589333585377616, - -1.4816789461586213, - -0.904686467685462, - 4.104837364351266, - -3.1929672847548205, - -1.8159181491685787, - 4.114620300186373, - -0.7798587119233383, - -1.5540163204104063, - -0.44774452331140946, - -0.42143364507485415, - 3.9104734934031127, - 2.3841210940811215, - 0.3755125442647771, - -4.223587424909779, - -2.4465322252575294, - 1.6310274245445033, - -0.0028246323915299227, - 0.6216299027178394, - -0.014010365301508051, - 1.594650154053963, - 1.0192261832505012, - -2.4447386976502656, - -1.2992800194951994, - 3.5555081366304244, - 6.260046043530518, - 4.073331971606124, - -1.6167691506707658, - -3.5674654661302934 + 3.855079906757912, + -2.6161491630776537, + 2.0858745119674817, + -0.7387070741223745, + 0.6762411291710205, + 3.2612679019976785, + -0.7597612819340497, + -1.5132518573724385, + -1.3141138830707781, + -0.4603812837704453, + -4.176798797673366, + -0.17145939483571848, + -2.3552322867774333, + -1.0701328964463008, + 0.8702761364071849, + 0.44236870815169077, + -1.9358357839167768, + -0.875340692809248, + 4.195432845157893, + -1.2376211881520474, + 0.12409870870908377, + -2.1090907082786456, + 1.685357352839291, + 0.6758843835084245, + -0.4501378746479654, + -1.066802136251232, + 0.6634853407176996, + -1.7623622324432309, + -1.1554207697853431, + -0.06063224652875297, + 3.3758883351636406, + 0.4512264379143446, + -2.456638459417957, + -0.43679824747548973, + -0.7382688818718947, + -0.2520532911701617, + 2.750530427456509, + 1.125146783490973, + 0.7892791006156633, + 0.5765882273665656, + -0.6854056696141374, + -1.279685771976567, + -1.1825978137443862, + 1.3222286500907285, + 0.11745983009345888, + -1.542437895261929, + -0.2782375674209586, + 3.937745783870189, + -1.3320803207099212, + 4.169856066791524, + -2.2477669326690903, + -1.150485868378693, + -3.8712181278625093, + -0.7022335549777545, + 0.5420963052877399, + 0.4678926303972273, + 3.4403713919822887, + 0.4863806254463764, + -0.6238378308545871, + 1.343829136369984, + 0.14409084055530824, + 2.5343927756276208, + -0.5526272432620005, + 1.2248475756753234, + -3.7675068565379526, + 0.5204095710567854, + 3.8376607993496474, + -2.0760363685139835, + 0.5644581810204278, + -1.1459815564721405, + -2.041770332342056, + -0.004542519610788543, + 1.7031900127353492, + -1.3742218685131904, + -0.7147485799669284, + 1.4881169379618266, + -0.19050682488166057, + -0.14475243097201565, + 6.360968776083738, + -2.078243330810698, + 4.14095498498866, + 5.227145165733215, + -3.3612305563899025, + -1.1255274387743974, + 2.1625635432281007, + 0.4396840547361396, + 5.751134848691572, + -0.9000703677554964, + -1.7793354355241953, + -2.4139451622163732, + 0.8205060831759692, + 0.7039545268141139, + -0.7726894334348547, + -1.5249528470778462, + -3.868128583078392, + 3.202644291798853, + -2.962651113308873, + 4.430985736188797, + -2.4314062342671723, + 1.3807182968551648, + -0.7449036382521768, + -0.8069094474868895, + -0.6759332084903706, + 3.0748583207932327, + 0.1405897640815465, + 2.392095650546612, + -5.076137879528213, + 0.1097660154101488, + -0.09293666247089191, + 0.6138002511135776, + 2.3161173720426596, + -1.071210529898813, + -0.19711844410400842, + -0.9021406931148502, + 2.1673739587776044, + -0.19060429757994993, + -3.685341829885408, + 2.7174995622045883, + 0.7284784869926412, + -3.0190587027490117, + -0.7989147485071739, + 2.285982156684738, + -2.7164474192473183, + 2.0824407561550218, + -0.9369710311952276, + -2.092283307281979, + -2.184152854419849, + -4.04801007971819, + 0.6121619616567823, + -2.096903142825676, + -0.449370857527864, + 3.246313330481864, + 0.2072632677881261, + -3.526650756993172, + 5.912620412600382, + -3.2069462495949463, + -2.6355919352137627, + 1.1560393798870965, + -0.810113928458289, + -0.6400475866863665, + 1.6073144480858566, + 1.6113479644274307, + -1.4330355400833183, + -2.5206657362497764, + 0.1919453712673838, + 1.7782666634371787, + -0.22981003650282733, + -0.4233650947364542, + -1.3739336823800556, + -4.744448285298656, + 0.41078286576938844, + 0.2198503546716565, + -4.949990753643417, + 1.599525194878205, + 3.9230026623695577, + 2.094233447191595, + -3.308099746818885, + -4.3619148663696246, + -0.8069372215208568, + -0.31619288705894766, + 2.2622864147208737, + 1.7822106604828154, + -0.3317218431250816, + 1.3483469394442205, + 2.043981599768457, + -0.3321920606619467, + -0.7869185545988505, + -1.5467856892585568, + -0.25708760611913994, + 4.164638837124573, + -3.2659992541243765, + -1.9281826961005137, + 4.136589214412604, + -0.6703021414154839, + -1.5635311694465044, + -0.44951947244297247, + -0.3761386627777358, + 3.9764711009886002, + 2.3419627959783003, + 0.6089978678769945, + -4.338425696323253, + -2.5225599257667737, + 1.6428508719923456, + 0.12007001975983786, + 0.24402194312458406, + -0.2773245069485185, + 1.628382866958211, + 1.0067797556961153, + -2.66536832367383, + -1.4735063838523634, + 3.620964936225569, + 6.36265096697167, + 4.446035444782243, + -1.7217799443553965, + -3.5869356337268425 ], "z": [ - -0.1332549867679698, - 0.27291870991937145, - -0.611012267273753, - -0.2845008401372673, - -0.23934607177095424, - -0.989885897143346, - -0.5913310286751665, - 0.4918869311562419, - 0.02152328028019099, - 0.6527665776802173, - 1.1779896925604951, - -0.4708636708683358, - 0.2956680935739928, - 0.12663008610763415, - 1.6942631052609094, - -0.5648214463106873, - -0.6120798399280499, - -0.8126412115199241, - -1.5597933259979462, - -0.20172561562931726, - -1.047714000388964, - 0.2833283572551736, - 1.947988206124562, - -1.0940250957737738, - -0.700773597471764, - 0.08586194539976243, - -1.4115772304017518, - -0.08515973093916311, - 0.4719010931574096, - -0.34883138810793957, - 20.966696914227896, - -0.3274459280580112, - 0.29271254763675336, - 0.6196062751105513, - -0.8265694284581329, - 0.19528142811908988, - -1.0421850982750887, - -1.4945598964235005, - -0.7987533916470302, - -0.4414013258569815, - -0.9833877041475038, - -0.014107758956231299, - 1.6975210715833469, - -1.3432928236773465, - -0.5691741516819883, - -0.016253383951449877, - -0.5609881949423667, - -0.7751208351141133, - 0.14824692386359914, - 0.00927794382893188, - 0.3179320083242132, - -0.3576194520490325, - 2.211293354678765, - -0.40672738166071587, - -0.6075844208483971, - 0.6765252189015973, - -2.020671173119792, - -0.8020750071696471, - 0.04334994483721389, - -1.086057747558172, - -0.8670786486384499, - -0.7475883165995749, - -0.4853487655958365, - -0.83531533811805, - 0.734179483116577, - -0.6696378871532909, - -2.387871871639611, - 0.2056780509902696, - -0.6271404340494551, - -0.3105679935654806, - 0.15434282400106256, - -0.041509387748856236, - -1.3518728132750355, - -0.30979810793800244, - -0.4076506800725293, - -1.4368858634288142, - -0.439837150288455, - 3.284033180624785, - 16.222883878857836, - -0.2875562816754254, - -0.3592141552110312, - -0.881347200571578, - 0.3237967022487916, - -0.299888668387499, - 0.3693021525982787, - -1.0364700904846793, - -2.1255576816295476, - 2.884194216499615, - 0.41893252327431185, - 0.7829805728736471, - -0.9766590654787115, - -0.6126549175381664, - 0.8963086398057337, - -0.06684147199340751, - 0.9059223522651572, - -1.166783909012498, - 0.2518120483509488, - -1.9813558678292322, - 0.5081446050076046, - -2.179479213880696, - -0.521918288574282, - -1.5747977920674756, - -0.43605984926764313, - -0.2761240963499135, - -0.6427173988235734, - -1.2010568896745912, - 1.0894778343477631, - -0.10654044827049912, - 1.4019091347689008, - -1.0265730834270628, - -1.3601266111839339, - 0.15646587786945004, - -0.9382090527097158, - 0.5053523595060782, - -1.4667694835270888, - -1.1604490104069942, - 0.5150624787802507, - -1.1027292782221167, - -0.839105415019863, - 0.2776553132752387, - 0.21503674198584916, - -2.0704733945969522, - 0.9887373441404025, - 1.5217215798291597, - -0.3220752306439535, - 0.28679952660295216, - 0.1587864411478722, - 1.290438072221053, - -0.6496490293445591, - 0.002632923994493077, - -0.3760188151867507, - 2.7115844513505634, - -0.9828777983239214, - 1.083015524634079, - -2.2842817622522524, - 0.4199335852091797, - 0.2738786451283277, - 0.10490493644303588, - 1.1314337861119779, - -0.35609718357504794, - -1.5997477704369565, - -0.5515669205914375, - -0.3926802265739144, - 0.701690271753913, - 0.7841817274062157, - -0.2575142832338854, - 0.3640003794240824, - -0.05399275040865746, - -0.06743258867823183, - 0.3163775826699158, - -0.1462798928758705, - 1.9942716803820362, - 0.9359999525922797, - -0.5623556831453945, - -0.8469774592591988, - -0.8779543598166668, - -0.011611440250646143, - 1.0550222920744383, - -0.3923020976890576, - -0.7590866947217605, - -0.9289791128963573, - -0.9967515617595287, - -0.47678452948726496, - -1.2313850212238613, - -1.0910139483733312, - -0.6840759561480423, - -0.31184363442804364, - 0.004357646405543191, - -0.7426386538844539, - -1.3054675039254935, - 0.1566801829898895, - 1.368288604939323, - -1.3662589846026323, - -0.3096134232154807, - 0.1770769632986913, - -0.5471472073762823, - -0.6466621016673111, - -1.248041765770726, - 0.3939036866698287, - -0.6813283958170979, - 1.2742176082427117, - 0.744638907265581, - -0.39433976596142706, - -0.5799619618503732, - 7.060467356342127, - -0.2211897015322298, - -1.5809316826536888, - -0.80120105935382, - 2.0811505851585417, - 0.26892275492564527, - -1.480500416081267, - -1.3618537976781397, - -1.970376263321043, - -0.34348196426888905, - 0.18144894292221464 + -0.08056349942375234, + 0.028786945680939334, + -0.44937341234933376, + -0.16683803717768994, + -0.27111339571903237, + -0.8468634775668962, + -0.5502370446162456, + 0.4632032199948351, + 0.017798805062920902, + 0.571825806803118, + 0.8610933028242622, + -0.41718466981031516, + 0.16298126000548457, + 0.0792910898343927, + 1.8128567388748213, + -0.5915769084573904, + -0.6600713773871396, + -0.8618537879404934, + -1.3168602103635203, + -0.22386892528755858, + -1.2014952503028953, + 0.07455281400208881, + 1.9166641224580574, + -1.2135979612511367, + -0.6447006133013446, + -0.12282338586990073, + -1.3674628062622514, + -0.20112813577814573, + 0.4490646679359641, + -0.30546512881185595, + 21.075170142106238, + -0.3461901436442329, + 0.028559610619205766, + 0.7183639705212421, + -0.8787618828044577, + 0.12710832268882694, + -0.9921767250704747, + -1.4080096325967255, + -0.8219680893706439, + -0.16275604933559068, + -1.1533739954894404, + -0.0337917509503916, + 1.6799185317306151, + -1.6512330639034185, + -0.7302482647171719, + -0.057800768168225665, + -0.5793990807734664, + -0.3083473792952449, + 0.06495870174368194, + 0.26669955368531123, + 0.47673235544920756, + -0.36120354829237655, + 2.041100499830188, + -0.4143178336544228, + -0.6015274112600257, + 0.7478337195452976, + -1.8828288126503987, + -0.7500800314342261, + -0.12798166920024825, + -1.1867701805068653, + -1.1196282252328504, + -0.6493267239833703, + -0.43756308949814743, + -0.7533933663839528, + 0.4302699784022649, + -0.7319465680265883, + -2.2780987950134697, + -0.06682395650749673, + -0.4419775297297648, + -0.3445492341786709, + -0.11254660017123147, + -0.18043721696072984, + -1.2245532604994218, + -0.4508568352724152, + -0.5245332955884419, + -1.4928953735994406, + -0.3800223951921673, + 3.3336995724742122, + 16.58065950845859, + -0.10654620050939036, + 0.008192649556087934, + -0.6423735209945476, + 0.152297292659392, + -0.36560878774545547, + 0.49191207289471833, + -1.1099575355724403, + -1.7319271224030202, + 2.7873230415457813, + 0.3265442671574655, + 0.5945942363898596, + -0.9086831018342412, + -0.5682675113500351, + 0.9809557365077258, + -0.2955124194307041, + 0.5430900659914154, + -0.875669448080304, + 0.015598845436188625, + -1.7110254542689507, + 0.7159377765562558, + -2.110361788242772, + -0.6140117208816129, + -2.2213300253252046, + -0.4855754948258507, + -0.020397403392057183, + -0.6674547258338281, + -1.0322834653250168, + 0.841765444160154, + -0.16573915738325531, + 1.3532932568239346, + -1.0306742402186815, + -1.1673487760360945, + 0.055627548134166156, + -1.0807593074388993, + 0.2489197605289283, + -1.2548555213743704, + -1.1222118522352336, + 0.37543854283410066, + -0.8582102171406314, + -0.8972184590567043, + 0.0557980004106488, + 0.2075716873589323, + -2.118355272391502, + 0.8960991584668245, + 1.619249911125445, + -0.48425138660513256, + 0.20873183469256704, + 0.13649392700008095, + 1.1043508356549243, + -0.7750278052214509, + -0.03990788295694306, + -0.3456984462829911, + 2.7893599209321964, + -0.8224626080103721, + 1.0510801949597657, + -1.8906202128098901, + 0.1765606034112846, + 0.19411942215412678, + 0.1833261337225062, + 1.0667397058802544, + -0.2867439193164209, + -1.4817313055181802, + -0.43374751726861893, + -0.4787152619003991, + 0.48739304026159463, + 0.7960149868538892, + -0.1506706339034871, + 0.342128657741293, + -0.10838198808233662, + -0.2324437265816887, + 0.23903962222116307, + -0.10779761283468126, + 1.9882259122761288, + 0.7137857571409595, + -0.38100084383652005, + -0.7369267139576294, + -0.5866833474499575, + -0.2601928237466296, + 0.7355547951926357, + -0.3915917226406725, + -0.6608095025394163, + -0.4820656942062738, + -0.890245666833216, + -0.2379812125363602, + -1.1282432906633666, + -0.9714088903315417, + -0.6977684963639371, + -0.3478849704694565, + -0.01431592220793677, + -0.9684387291859726, + -0.6535085737776317, + -0.06077323296566774, + 1.2253400465197497, + -1.088695983798872, + -0.3074576335207782, + 0.06497871050632115, + -0.5866301760000734, + -0.6938107871003306, + -0.9784676321572428, + 0.5843442289245169, + -0.7814587484817813, + 1.068832535600227, + 0.5516405641878677, + -0.37564916203542914, + -0.6494838123648803, + 7.139715614122555, + 0.003818061511962325, + -1.5702626196716343, + -0.6436689069476974, + 1.7452512841104453, + 0.21842118139393515, + -1.1804007080469503, + -0.48422171683216453, + -1.8277115375834077, + -0.3770607910856339, + -0.14827461968716107 ] } ], @@ -2512,17 +2298,17 @@ }, "xaxis": { "title": { - "text": "PC1 49.70%" + "text": "PC1 49.73%" } }, "yaxis": { "title": { - "text": "PC2 7.85%" + "text": "PC2 7.93%" } }, "zaxis": { "title": { - "text": "PC3 7.20%" + "text": "PC3 7.18%" } } }, @@ -3333,7 +3119,7 @@ } }, "title": { - "text": "Total Explained Variance: 64.75%" + "text": "Total Explained Variance: 64.84%" } } } @@ -3349,7 +3135,7 @@ "print(l_dict)\n", "\n", "fig = px.scatter_3d(\n", - " pComponents_imputed, x=0, y=1, z=2,\n", + " pComponents_final, x=0, y=1, z=2,\n", " title=f'Total Explained Variance: {total_explained_percentage:.2f}%',\n", " labels=l_dict\n", ")\n", @@ -3358,26 +3144,26 @@ ] }, { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [], "source": [ - "imputed_df.to_csv(\"../data/unlabeled/preprocessed/hdro_preprocessed.csv\")" - ] + "## Conversion of the Dataset to CSV" + ], + "cell_type": "markdown", + "metadata": {} }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "final_df.to_csv(\"../data/unlabeled/preprocessed/hdro_preprocessed.csv\")" + ] } ], "metadata": { "kernelspec": { - "name": "python394jvsc74a57bd01e002e48d41ce7b93ab532133c559bfbfa167161e2109b258903f10473d9f54b", - "display_name": "Python 3.9.4 64-bit ('wsenv': conda)" + "name": "python374jvsc74a57bd0dca0ade3e726a953b501b15e8e990130d2b7799f14cfd9f4271676035ebe5511", + "display_name": "Python 3.7.4 64-bit ('base': conda)" }, "language_info": { "codemirror_mode": { @@ -3389,7 +3175,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.4" + "version": "3.7.4" } }, "nbformat": 4, From 12eb7eef99c821d7882ef0b890f4350038055f58 Mon Sep 17 00:00:00 2001 From: Joachim Bache-Mathiesen Date: Fri, 21 May 2021 11:39:46 +0200 Subject: [PATCH 5/6] Generate and link to notebooks --- documentation/WaterSecurity/index.html | 5 +- .../notebooks/Cities Test Set Processing.html | 14373 +++ .../Dataset Normalization and Imputation.html | 19070 ++++ .../notebooks/Merge Unlabeled to Labeled.html | 15192 +++ .../WaterSecurity/notebooks/app.html | 13269 +++ .../notebooks/combine_unlabeled.html | 13712 +++ .../notebooks/prep_aquastat-checkpoint.html | 15521 +++ .../notebooks/prep_aquastat.html | 15522 +++ .../notebooks/prep_economic_v2.html | 14474 +++ .../notebooks/prep_edstats-checkpoint.html | 16922 +++ .../WaterSecurity/notebooks/prep_edstats.html | 16665 +++ .../notebooks/prep_hdro_v2-checkpoint.html | 85672 ++++++++++++++++ .../WaterSecurity/notebooks/prep_hdro_v2.html | 85511 +++++++++++++++ .../unlabeled_preprocessing/index.html | 30 +- generate_documentation.py | 16 + unlabeled_preprocessing/__init__.py | 8 + 16 files changed, 325959 insertions(+), 3 deletions(-) create mode 100644 documentation/WaterSecurity/notebooks/Cities Test Set Processing.html create mode 100644 documentation/WaterSecurity/notebooks/Dataset Normalization and Imputation.html create mode 100644 documentation/WaterSecurity/notebooks/Merge Unlabeled to Labeled.html create mode 100644 documentation/WaterSecurity/notebooks/app.html create mode 100644 documentation/WaterSecurity/notebooks/combine_unlabeled.html create mode 100644 documentation/WaterSecurity/notebooks/prep_aquastat-checkpoint.html create mode 100644 documentation/WaterSecurity/notebooks/prep_aquastat.html create mode 100644 documentation/WaterSecurity/notebooks/prep_economic_v2.html create mode 100644 documentation/WaterSecurity/notebooks/prep_edstats-checkpoint.html create mode 100644 documentation/WaterSecurity/notebooks/prep_edstats.html create mode 100644 documentation/WaterSecurity/notebooks/prep_hdro_v2-checkpoint.html create mode 100644 documentation/WaterSecurity/notebooks/prep_hdro_v2.html diff --git a/documentation/WaterSecurity/index.html b/documentation/WaterSecurity/index.html index 9503205..5b34c57 100644 --- a/documentation/WaterSecurity/index.html +++ b/documentation/WaterSecurity/index.html @@ -36,7 +36,10 @@

Sub-modules

WaterSecurity.unlabeled_preprocessing
-
+

Notebooks below +* Combining datasets +* Econ preprocessing +* [Education …

WaterSecurity.utils
diff --git a/documentation/WaterSecurity/notebooks/Cities Test Set Processing.html b/documentation/WaterSecurity/notebooks/Cities Test Set Processing.html new file mode 100644 index 0000000..06b3d02 --- /dev/null +++ b/documentation/WaterSecurity/notebooks/Cities Test Set Processing.html @@ -0,0 +1,14373 @@ + + + + +Notebook + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+

Retrieve the list of biggest world population

+
+
+
+
+
+
In [1]:
+
+
+
import pandas as pd
+import sys
+sys.path.append('..')
+from data.unlabeled import WORLD_CITIES as wct
+
+ +
+
+
+ +
+
+
+
In [2]:
+
+
+
wct.head()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[2]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
citycity_asciilatlngcountryiso2iso3admin_namecapitalpopulationid
0TokyoTokyo35.6897139.6922JapanJPJPNTōkyōprimary37977000.01392685764
1JakartaJakarta-6.2146106.8451IndonesiaIDIDNJakartaprimary34540000.01360771077
2DelhiDelhi28.660077.2300IndiaININDDelhiadmin29617000.01356872604
3MumbaiMumbai18.966772.8333IndiaININDMahārāshtraadmin23355000.01356226629
4ManilaManila14.5958120.9772PhilippinesPHPHLManilaprimary23088000.01608618140
+
+
+ +
+ +
+
+ +
+
+
+
+

Dataset normalization

+
+
+
+
+
+
In [3]:
+
+
+
wct.isnull().sum()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[3]:
+ + + + +
+
city              0
+city_ascii        0
+lat               0
+lng               0
+country           0
+iso2             31
+iso3              0
+admin_name       76
+capital       18943
+population      973
+id                0
+dtype: int64
+
+ +
+ +
+
+ +
+
+
+
In [4]:
+
+
+
len(wct[wct.columns].drop_duplicates()), len(wct[wct.columns]) # no duplicates
+
+ +
+
+
+ +
+
+ + +
+ +
Out[4]:
+ + + + +
+
(26569, 26569)
+
+ +
+ +
+
+ +
+
+
+
In [5]:
+
+
+
wct = wct.drop(columns=["city", "iso2", "iso3", "admin_name", "capital", "id"])
+
+ +
+
+
+ +
+
+
+
In [6]:
+
+
+
wct.columns
+
+ +
+
+
+ +
+
+ + +
+ +
Out[6]:
+ + + + +
+
Index(['city_ascii', 'lat', 'lng', 'country', 'population'], dtype='object')
+
+ +
+ +
+
+ +
+
+
+
In [7]:
+
+
+
wct = wct.rename(columns={'city_ascii':'city'})
+
+ +
+
+
+ +
+
+
+
In [8]:
+
+
+
wct.columns
+
+ +
+
+
+ +
+
+ + +
+ +
Out[8]:
+ + + + +
+
Index(['city', 'lat', 'lng', 'country', 'population'], dtype='object')
+
+ +
+ +
+
+ +
+
+
+
+

Missing values

+
+
+
+
+
+
In [9]:
+
+
+
to_drop = wct[wct.population.isnull()]
+to_drop
+
+ +
+
+
+ +
+
+ + +
+ +
Out[9]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
citylatlngcountrypopulation
824Al Quds31.776435.2269West BankNaN
827Ngerulmud7.5006134.6242PalauNaN
6255Un'goofaaru5.668173.0302MaldivesNaN
6393Banqiao25.0143121.4672TaiwanNaN
7568Naifaru5.444273.3662MaldivesNaN
..................
9469We-20.9000167.2667New CaledoniaNaN
9470Presevo42.306721.6500SerbiaNaN
9471Bujanovac42.466721.7667SerbiaNaN
9472Kitamilo0.222233.2061UgandaNaN
9473Tarrafal15.2833-23.7667Cabo VerdeNaN
+

973 rows × 5 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [10]:
+
+
+
# dropping missing values from the dataset
+wctc = wct.copy(deep=False) 
+wctc.dropna(inplace=True)
+
+ +
+
+
+ +
+
+
+
In [11]:
+
+
+
wctc.isnull().sum() # cleaned dataset
+
+ +
+
+
+ +
+
+ + +
+ +
Out[11]:
+ + + + +
+
city          0
+lat           0
+lng           0
+country       0
+population    0
+dtype: int64
+
+ +
+ +
+
+ +
+
+
+
+

Look at the position of the cities with missing data in a map to see if some country is not represented

+
+
+
+
+
+
+

We need to verify if the null values that have been dropped are randomly distributed or there's a hidden pattern. In this way we see if all geographic areas are represented.

+ +
+
+
+
+
+
In [12]:
+
+
+
import geojson
+import folium
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
+---------------------------------------------------------------------------
+ModuleNotFoundError                       Traceback (most recent call last)
+<ipython-input-12-6a09eb20f703> in <module>
+----> 1 import geojson
+      2 import folium
+
+ModuleNotFoundError: No module named 'geojson'
+
+
+ +
+
+ +
+
+
+
In [14]:
+
+
+
data_to_plot = list(wctc.columns[3:5])
+
+ +
+
+
+ +
+
+
+
In [15]:
+
+
+
def df_to_geojson(df, properties, lat='latitude', lon='longitude'):
+    """
+    Turn a dataframe containing point data into a geojson formatted python dictionary
+    
+    df : the dataframe to convert to geojson
+    properties : a list of columns in the dataframe to turn into geojson feature properties
+    lat : the name of the column in the dataframe that contains latitude data
+    lon : the name of the column in the dataframe that contains longitude data
+    """
+    
+    # create a new python dict to contain our geojson data, using geojson format
+    geojson = {'type':'FeatureCollection', 'features':[]}
+
+    # loop through each row in the dataframe and convert each row to geojson format
+    for _, row in df.iterrows():
+        # create a feature template to fill in
+        feature = {'type':'Feature',
+                   'properties':{},
+                   'geometry':{'type':'Point',
+                               'coordinates':[]}}
+
+        # fill in the coordinates
+        feature['geometry']['coordinates'] = [row[lon],row[lat]]
+
+        # for each column, get the value and add it as a new feature property
+        for prop in properties:
+            feature['properties'][prop] = row[prop]
+        
+        # add this feature (aka, converted dataframe row) to the list of features inside our dict
+        geojson['features'].append(feature)
+    
+    return geojson
+
+ +
+
+
+ +
+
+
+
In [16]:
+
+
+
geo = df_to_geojson(to_drop, data_to_plot, lat = "lat", lon = "lng")
+
+ +
+
+
+ +
+
+
+
In [17]:
+
+
+
m = folium.Map([9,9], zoom_start=2)
+
+folium.GeoJson(geo).add_to(m)
+
+# uncomment below to see the map
+# m
+
+ +
+
+
+ +
+
+ + +
+ +
Out[17]:
+ + + + +
+
<folium.features.GeoJson at 0x7f905d316a30>
+
+ +
+ +
+
+ +
+
+
+
In [18]:
+
+
+
to_drop[to_drop["country"]== "Malta"] # all null values
+
+ +
+
+
+ +
+
+ + +
+ +
Out[18]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
citylatlngcountrypopulation
7901Sliema35.912514.5019MaltaNaN
8144Fgura35.870314.5133MaltaNaN
8151Hamrun35.884714.4844MaltaNaN
8238Senglea35.887514.5169MaltaNaN
8264Tarxien35.865814.5150MaltaNaN
..................
8883Santa Lucija36.043114.2172MaltaNaN
8935Zebbug36.072214.2358MaltaNaN
8946Imgarr35.920614.3664MaltaNaN
8971Gharb36.060014.2089MaltaNaN
9035San Lawrenz36.055614.2036MaltaNaN
+

65 rows × 5 columns

+
+
+ +
+ +
+
+ +
+
+
+
+

It looks like some countries have more missing information than others.

+ +
+
+
+
+
+
+

Retrieve the world biggest cities

A big city is categorized as >500,000 residents in the given year, 2020.

+ +
+
+
+
+
+
In [19]:
+
+
+
big_cities = wctc.sort_values(by=["population"], ascending=False).head(1000)
+
+ +
+
+
+ +
+
+
+
In [20]:
+
+
+
big_cities.head()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[20]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
citylatlngcountrypopulation
0Tokyo35.6897139.6922Japan37977000.0
1Jakarta-6.2146106.8451Indonesia34540000.0
2Delhi28.660077.2300India29617000.0
3Mumbai18.966772.8333India23355000.0
4Manila14.5958120.9772Philippines23088000.0
+
+
+ +
+ +
+
+ +
+
+
+
In [21]:
+
+
+
big_cities.to_csv('bigcities.csv',index=False)
+
+ +
+
+
+ +
+
+
+
In [22]:
+
+
+
geo2 = df_to_geojson(big_cities, data_to_plot, lat = "lat", lon = "lng")
+m2 = folium.Map([9,9], zoom_start=2)
+folium.GeoJson(geo2).add_to(m2)
+
+# uncomment below to see the map
+# m2
+
+ +
+
+
+ +
+
+ + +
+ +
Out[22]:
+ + + + +
+
<folium.features.GeoJson at 0x7f905e015a30>
+
+ +
+ +
+
+ +
+
+
+
+

We can see that some countries are not represented with this approach. For example, the African State of Namibia.

+ +
+
+
+
+
+
+

Retrieve the most populated cities (6 max) for every country

+
+
+
+
+
+
In [23]:
+
+
+
countries = list(wctc["country"].unique())
+top_cities = pd.DataFrame(columns = wctc.columns)
+
+ +
+
+
+ +
+
+
+
In [24]:
+
+
+
top_cities = top_cities.append([wct[wct["country"] == country].sort_values(by=["population"], ascending=False).head(6) for country in countries], ignore_index = True)
+
+ +
+
+
+ +
+
+
+
In [25]:
+
+
+
top_cities
+
+ +
+
+
+ +
+
+ + +
+ +
Out[25]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
citylatlngcountrypopulation
0Tokyo35.6897139.6922Japan37977000.0
1Osaka34.6936135.5019Japan14977000.0
2Nagoya35.1167136.9333Japan9113000.0
3Yokohama35.4333139.6333Japan3748781.0
4Fukuoka33.5903130.4019Japan2128000.0
..................
1131Grand Turk21.4664-71.1360Turks And Caicos Islands5801.0
1132Avarua-21.2070-159.7710Cook Islands5445.0
1133Vatican City41.900012.4478Vatican City825.0
1134Stanley-51.7000-57.8500Falkland Islands (Islas Malvinas)2213.0
1135Grytviken-54.2806-36.5080South Georgia And South Sandwich Islands99.0
+

1136 rows × 5 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [26]:
+
+
+
top_cities.to_csv('bigcities_allcountries.csv',index=False)
+
+ +
+
+
+ +
+
+
+
In [27]:
+
+
+
geo3 = df_to_geojson(top_cities, data_to_plot, lat = "lat", lon = "lng")
+m3 = folium.Map([9, 9], zoom_start=2)
+folium.GeoJson(geo3).add_to(m3)
+
+# uncomment below to see the map
+m3
+
+ +
+
+
+ +
+
+ + +
+ +
Out[27]:
+ + + +
+
Make this Notebook Trusted to load map: File -> Trust Notebook
+
+ +
+ +
+
+ +
+
+
+
+

In this way every country should be represented. Probably also those containing a lot of cities that have been dropped.

+ +
+
+
+
+
+ + + + + + diff --git a/documentation/WaterSecurity/notebooks/Dataset Normalization and Imputation.html b/documentation/WaterSecurity/notebooks/Dataset Normalization and Imputation.html new file mode 100644 index 0000000..17715d2 --- /dev/null +++ b/documentation/WaterSecurity/notebooks/Dataset Normalization and Imputation.html @@ -0,0 +1,19070 @@ + + + + +Notebook + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
In [1]:
+
+
+
import pandas as pd
+import numpy as np
+from langdetect import detect as langdetect
+import random
+seed = 42
+np.random.seed(seed)
+random.seed(seed)
+import sys
+sys.path.append("..")
+from data.labeled.raw import CWA as cwa, CWR as cwr
+from data.labeled.preprocessed import LABELED_CITIES_PATH, RISKS_MAPPING_PATH, SEVERITY_MAPPING_PATH, IMPUTATION_REPORT_PATH
+
+ +
+
+
+ +
+
+
+
+

Preprocess whole dataset

+
+
+
+
+
+
In [2]:
+
+
+
cwa.head()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[2]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Account NoOrganisationCityCountryRegionAccessC40Reporting YearRisks to city's water supplyAdaptation actionAction descriptionCity Location
01093City of AtlantaAtlantaUnited States of AmericaNorth AmericapublicNaN2018Increased water stress or scarcityInvestment in existing water supply infrastruc...The city is building a new reservoir, fixing t...(33.749, -84.388)
11184City of AustinAustinUnited States of AmericaNorth AmericapublicC402018Increased water stress or scarcityConservation awareness and educationNaN(30.2672, -97.7431)
21184City of AustinAustinUnited States of AmericaNorth AmericapublicC402018Increased water stress or scarcityConservation incentivesNaN(30.2672, -97.7431)
31184City of AustinAustinUnited States of AmericaNorth AmericapublicC402018Increased water stress or scarcityWater use restrictionsNaN(30.2672, -97.7431)
41184City of AustinAustinUnited States of AmericaNorth AmericapublicC402018Increased water stress or scarcityEfficiency regulations or standardsNaN(30.2672, -97.7431)
+
+
+ +
+ +
+
+ +
+
+
+
In [3]:
+
+
+
cwr.head()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[3]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Account NoOrganisationCityCountryRegionAccessC40Reporting yearRisks to city's water supplyTimescaleMagnitudeRisk descriptionCurrent populationPopulation yearCity Location
01093City of AtlantaAtlantaUnited States of AmericaNorth AmericapublicNaN2018Increased water stress or scarcityShort-termSeriousThe city depends on one river for water supply...450182.02017(33.749, -84.388)
11093City of AtlantaAtlantaUnited States of AmericaNorth AmericapublicNaN2018Higher water pricesCurrentSeriousThe water cost burden is felt across all ZIP c...450182.02017(33.749, -84.388)
21184City of AustinAustinUnited States of AmericaNorth AmericapublicC402018Increased water stress or scarcityMedium-termExtremely seriousNaN1265974.02017(30.2672, -97.7431)
31499Ajuntament de BarcelonaBarcelonaSpainEuropepublicC402018Increased water stress or scarcityCurrentExtremely seriousThe downscaling of the climate projections at ...1604555.02015(41.3823, 2.1775)
41499Ajuntament de BarcelonaBarcelonaSpainEuropepublicC402018Declining water qualityMedium-termSeriousA reduction in water resources availability c...1604555.02015(41.3823, 2.1775)
+
+
+ +
+ +
+
+ +
+
+
+
+

Normalize columns names

+
+
+
+
+
+
In [4]:
+
+
+
# Convert columns names to lowercase
+cwa.columns = cwa.columns.str.lower().str.replace(" ", "_").str.replace("'","")
+cwr.columns = cwr.columns.str.lower().str.replace(" ", "_").str.replace("'","")
+
+ +
+
+
+ +
+
+
+
+

Find counts of nulls per column

+
+
+
+
+
+
In [5]:
+
+
+
cwr.isnull().sum()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[5]:
+ + + + +
+
account_no                       0
+organisation                     0
+city                             0
+country                          0
+region                           0
+access                           0
+c40                            504
+reporting_year                   0
+risks_to_citys_water_supply     40
+timescale                       11
+magnitude                      159
+risk_description               107
+current_population               0
+population_year                  0
+city_location                    0
+dtype: int64
+
+ +
+ +
+
+ +
+
+
+
In [6]:
+
+
+
cwa.isnull().sum()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[6]:
+ + + + +
+
account_no                       0
+organisation                     0
+city                             0
+country                          0
+region                           0
+access                           0
+c40                            536
+reporting_year                   0
+risks_to_citys_water_supply     75
+adaptation_action               19
+action_description             146
+city_location                    0
+dtype: int64
+
+ +
+ +
+
+ +
+
+
+
+

Find columns that exist in both datasets

+
+
+
+
+
+
In [7]:
+
+
+
id_columns = list(set(cwr.columns) & set(cwa.columns))
+id_columns
+
+ +
+
+
+ +
+
+ + +
+ +
Out[7]:
+ + + + +
+
['region',
+ 'city',
+ 'access',
+ 'country',
+ 'risks_to_citys_water_supply',
+ 'c40',
+ 'organisation',
+ 'city_location',
+ 'account_no',
+ 'reporting_year']
+
+ +
+ +
+
+ +
+
+
+
+

Check how many nulls exist in these columns

+
+
+
+
+
+
In [8]:
+
+
+
cwr[id_columns].isnull().sum()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[8]:
+ + + + +
+
region                           0
+city                             0
+access                           0
+country                          0
+risks_to_citys_water_supply     40
+c40                            504
+organisation                     0
+city_location                    0
+account_no                       0
+reporting_year                   0
+dtype: int64
+
+ +
+ +
+
+ +
+
+
+
In [9]:
+
+
+
cwa[id_columns].isnull().sum()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[9]:
+ + + + +
+
region                           0
+city                             0
+access                           0
+country                          0
+risks_to_citys_water_supply     75
+c40                            536
+organisation                     0
+city_location                    0
+account_no                       0
+reporting_year                   0
+dtype: int64
+
+ +
+ +
+
+ +
+
+
+
+

Replace nulls there with "nan" strings, so that merging is done correctly

+
+
+
+
+
+
In [10]:
+
+
+
cwr['c40'] = cwr['c40'] == 'C40'
+cwr[id_columns] = cwr[id_columns].fillna('nan')
+
+ +
+
+
+ +
+
+
+
In [11]:
+
+
+
cwa['c40'] = cwa['c40'] == 'C40'
+cwa[id_columns] = cwa[id_columns].fillna('nan')
+
+ +
+
+
+ +
+
+
+
+

Check id_columns uniqueness

+
+
+
+
+
+
In [12]:
+
+
+
len(cwa[id_columns]), len(cwa[id_columns].drop_duplicates())
+
+ +
+
+
+ +
+
+ + +
+ +
Out[12]:
+ + + + +
+
(685, 484)
+
+ +
+ +
+
+ +
+
+
+
In [13]:
+
+
+
len(cwr[id_columns]), len(cwr[id_columns].drop_duplicates())
+
+ +
+
+
+ +
+
+ + +
+ +
Out[13]:
+ + + + +
+
(608, 578)
+
+ +
+ +
+
+ +
+
+
+
+

Aggregate by grouping by id_columns and applying set operations to other colums

+
+
+
+
+
+
In [14]:
+
+
+
cwa_agg = cwa.groupby(id_columns).agg(set).reset_index()
+cwr_agg = cwr.groupby(id_columns).agg(set).reset_index()
+
+ +
+
+
+ +
+
+
+
In [15]:
+
+
+
len(cwa_agg[id_columns]), len(cwa_agg[id_columns].drop_duplicates())
+
+ +
+
+
+ +
+
+ + +
+ +
Out[15]:
+ + + + +
+
(484, 484)
+
+ +
+ +
+
+ +
+
+
+
In [16]:
+
+
+
len(cwr_agg[id_columns]), len(cwr_agg[id_columns].drop_duplicates())
+
+ +
+
+
+ +
+
+ + +
+ +
Out[16]:
+ + + + +
+
(578, 578)
+
+ +
+ +
+
+ +
+
+
+
+

Make sure that risks magnitude (which is going to be used as an entry label) has a single value

+
+
+
+
+
+
In [17]:
+
+
+
cwr_agg.magnitude = cwr_agg.magnitude.apply(lambda x: 'Extremely serious' if 'Extremely serious' in x  else ('Serious' if 'Serious' in x else list(x)[0]))
+
+ +
+
+
+ +
+
+
+
In [18]:
+
+
+
cwr_agg.magnitude.unique()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[18]:
+ + + + +
+
array([nan, 'Serious', 'Extremely serious', 'Less Serious'], dtype=object)
+
+ +
+ +
+
+ +
+
+
+
+

Merge (outer) datasets and find the columns that are set (list_columns)

filling the non-merged rows with {np.nan} on list_columns to make sure there is contingency in each column

+ +
+
+
+
+
+
In [19]:
+
+
+
cw_data = pd.merge(cwa_agg, cwr_agg, on=id_columns, how='outer')
+list_columns = cw_data.iloc[0].apply(lambda x: isinstance(x, set))
+list_columns = list_columns[list_columns].index
+cw_data[list_columns] = cw_data[list_columns].applymap(lambda x: {np.nan} if pd.isna(x) else x)
+
+ +
+
+
+ +
+
+
+
In [20]:
+
+
+
len(cw_data[id_columns]), len(cw_data[id_columns].drop_duplicates())
+
+ +
+
+
+ +
+
+ + +
+ +
Out[20]:
+ + + + +
+
(677, 677)
+
+ +
+ +
+
+ +
+
+
+
In [21]:
+
+
+
cw_data.head()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[21]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
regioncityaccesscountryrisks_to_citys_water_supplyc40organisationcity_locationaccount_noreporting_yearadaptation_actionaction_descriptiontimescalemagnituderisk_descriptioncurrent_populationpopulation_year
0AfricaAbujapublicNigeriaHigher water pricesFalseAbuja Federal Capital Territory(9.07647, 7.39857)360432018{Water metering}{nan}{Short-term}NaN{nan}{2440000.0}{2017}
1AfricaAbujapublicNigeriaInadequate or aging infrastructureFalseAbuja Federal Capital Territory(9.07647, 7.39857)360432018{Investment in existing water supply infrastru...{nan}{nan}NaN{nan}{nan}{nan}
2AfricaAbujapublicNigeriaIncreased water stress or scarcityFalseAbuja Federal Capital Territory(9.07647, 7.39857)360432018{Efficiency regulations or standards}{nan}{Short-term}NaN{nan}{2440000.0}{2017}
3AfricaBouaképublicCôte d'IvoireDeclining water qualityFalseCommune de Bouaké(7.4137, -5.0149)8316172018{Diversifying water supply (including new sour...{Approvisionnement en eau potable par la const...{Current}Extremely serious{La ville manque d'eau depuis plus de 5 mois}{715435.0}{2013}
4AfricaCape TownpublicSouth AfricaIncreased water stress or scarcityTrueCity of Cape Town(-33.9253, 18.4239)358582018{Water use restrictions, Water metering, Use o...{In terms of diversifying water supply (includ...{Current}Extremely serious{The City has generally been able to successfu...{4174510.0}{2017}
+
+
+ +
+ +
+
+ +
+
+
+
+

Extract longitude and latitude from city_location

+
+
+
+
+
+
In [22]:
+
+
+
cw_data['city_location'] = cw_data['city_location'].apply(eval)
+cw_data['latitude'] = cw_data['city_location'].apply(lambda x: x[0])
+cw_data['longitude'] = cw_data['city_location'].apply(lambda x: x[1])
+id_columns = [x for x in id_columns] + ['latitude','longitude']
+len(cw_data[id_columns]), len(cw_data[id_columns].drop_duplicates())
+
+ +
+
+
+ +
+
+ + +
+ +
Out[22]:
+ + + + +
+
(677, 677)
+
+ +
+ +
+
+ +
+
+
+
+

Find list columns that are singular (every element contains a length 1 list)

+
+
+
+
+
+
In [23]:
+
+
+
cw_value_columns = [ x for x in cw_data.columns if x not in id_columns]
+# Values that can be converted back to strings from sets
+
+singular_cols = cw_data.set_index(id_columns)[list_columns].applymap(lambda x: len(x)==1).product() > 0
+singular_cols
+len(cw_data[id_columns]), len(cw_data[id_columns].drop_duplicates())
+
+ +
+
+
+ +
+
+ + +
+ +
Out[23]:
+ + + + +
+
(677, 677)
+
+ +
+ +
+
+ +
+
+
+
+

Convert singular columns to non list ones

+
+
+
+
+
+
In [24]:
+
+
+
# magnitude is nicely singular per id
+cw_data.loc[:, singular_cols[singular_cols].index] = cw_data.loc[:, singular_cols[singular_cols].index].applymap(lambda x: list(x)[0])
+list_columns = [x for x in list_columns if x not in singular_cols[singular_cols].index]
+
+ +
+
+
+ +
+
+
+
+

Remove entries that are invalid or in different language than English from the list columns

also convert sets to lists

+ +
+
+
+
+
+
In [25]:
+
+
+
def try_lang_detect_except(x):
+    try:
+        return (langdetect(x)=='en')
+    except:
+        return False
+cw_data = cw_data.applymap(lambda x: [t for t in x if not pd.isnull(t)  and  (t!='') and (t!='ERROR: #NAME?') and try_lang_detect_except(t)] if isinstance(x,set) else x)
+len(cw_data[id_columns]), len(cw_data[id_columns].drop_duplicates())
+
+ +
+
+
+ +
+
+ + +
+ +
Out[25]:
+ + + + +
+
(677, 677)
+
+ +
+ +
+
+ +
+
+
+
+

Fix specific risks annotations by inspection

+
+
+
+
+
+
In [26]:
+
+
+
cw_data.risks_to_citys_water_supply.unique()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[26]:
+ + + + +
+
array(['Higher water prices', 'Inadequate or aging infrastructure',
+       'Increased water stress or scarcity', 'Declining water quality',
+       'nan', 'Increased water demand', 'Regulatory',
+       'Energy supply issues', 'Inadequate or ageing infrastructure',
+       'Declining water quality: Declining water quality'], dtype=object)
+
+ +
+ +
+
+ +
+
+
+
In [27]:
+
+
+
cw_data.risks_to_citys_water_supply = cw_data.risks_to_citys_water_supply.apply(lambda x: x.replace('Inadequate or ageing infrastructure','Inadequate or aging infrastructure'))
+cw_data['risks_to_citys_water_supply'] = cw_data['risks_to_citys_water_supply'].apply(lambda x: x.replace('Declining water quality: Declining water quality', 'Declining water quality'))
+cw_data.risks_to_citys_water_supply.unique()
+len(cw_data[id_columns]), len(cw_data[id_columns].drop_duplicates())
+
+ +
+
+
+ +
+
+ + +
+ +
Out[27]:
+ + + + +
+
(677, 598)
+
+ +
+ +
+
+ +
+
+
+
In [28]:
+
+
+
cw_data.drop_duplicates(subset=id_columns,inplace=True)
+
+ +
+
+
+ +
+
+
+
In [29]:
+
+
+
cw_data.head()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[29]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
regioncityaccesscountryrisks_to_citys_water_supplyc40organisationcity_locationaccount_noreporting_yearadaptation_actionaction_descriptiontimescalemagnituderisk_descriptioncurrent_populationpopulation_yearlatitudelongitude
0AfricaAbujapublicNigeriaHigher water pricesFalseAbuja Federal Capital Territory(9.07647, 7.39857)360432018[][][Short-term]NaN[]2440000.02017.09.076477.39857
1AfricaAbujapublicNigeriaInadequate or aging infrastructureFalseAbuja Federal Capital Territory(9.07647, 7.39857)360432018[Investment in existing water supply infrastru...[][]NaN[]NaNNaN9.076477.39857
2AfricaAbujapublicNigeriaIncreased water stress or scarcityFalseAbuja Federal Capital Territory(9.07647, 7.39857)360432018[Efficiency regulations or standards][][Short-term]NaN[]2440000.02017.09.076477.39857
3AfricaBouaképublicCôte d'IvoireDeclining water qualityFalseCommune de Bouaké(7.4137, -5.0149)8316172018[Diversifying water supply (including new sour...[][]Extremely serious[]715435.02013.07.41370-5.01490
4AfricaCape TownpublicSouth AfricaIncreased water stress or scarcityTrueCity of Cape Town(-33.9253, 18.4239)358582018[Water use restrictions, Use of non-potable wa...[In terms of diversifying water supply (includ...[]Extremely serious[The City has generally been able to successfu...4174510.02017.0-33.9253018.42390
+
+
+ +
+ +
+
+ +
+
+
+
In [30]:
+
+
+
to_drop = ['timescale','current_population','population_year']
+cw_data['population_year'] = cw_data['population_year'].fillna(0)
+t = cw_data.sort_values('population_year' ).groupby([x for x in cw_data.columns if (x !='population_year') and x not in list_columns],dropna=False).last().reset_index()
+
+ +
+
+
+ +
+
+
+
In [31]:
+
+
+
cw_data
+
+ +
+
+
+ +
+
+ + +
+ +
Out[31]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
regioncityaccesscountryrisks_to_citys_water_supplyc40organisationcity_locationaccount_noreporting_yearadaptation_actionaction_descriptiontimescalemagnituderisk_descriptioncurrent_populationpopulation_yearlatitudelongitude
0AfricaAbujapublicNigeriaHigher water pricesFalseAbuja Federal Capital Territory(9.07647, 7.39857)360432018[][][Short-term]NaN[]2440000.02017.09.076477.39857
1AfricaAbujapublicNigeriaInadequate or aging infrastructureFalseAbuja Federal Capital Territory(9.07647, 7.39857)360432018[Investment in existing water supply infrastru...[][]NaN[]NaN0.09.076477.39857
2AfricaAbujapublicNigeriaIncreased water stress or scarcityFalseAbuja Federal Capital Territory(9.07647, 7.39857)360432018[Efficiency regulations or standards][][Short-term]NaN[]2440000.02017.09.076477.39857
3AfricaBouaképublicCôte d'IvoireDeclining water qualityFalseCommune de Bouaké(7.4137, -5.0149)8316172018[Diversifying water supply (including new sour...[][]Extremely serious[]715435.02013.07.41370-5.01490
4AfricaCape TownpublicSouth AfricaIncreased water stress or scarcityTrueCity of Cape Town(-33.9253, 18.4239)358582018[Water use restrictions, Use of non-potable wa...[In terms of diversifying water supply (includ...[]Extremely serious[The City has generally been able to successfu...4174510.02017.0-33.9253018.42390
............................................................
669Southeast Asia and OceaniaCity of SydneypublicAustraliaRegulatoryTrueCity of Sydney(-33.8675, 151.207)311142018[][][]Serious[Regulatory, pricing and institutional arrange...233219.02017.0-33.86750151.20700
670Southeast Asia and OceaniaHo Chi MinhpublicViet NamDeclining water qualityTrueHo Chi Minh City(10.7626, 106.66)311642018[][][]Serious[]8611000.02017.010.76260106.66000
671Southeast Asia and OceaniaHo Chi MinhpublicViet NamHigher water pricesTrueHo Chi Minh City(10.7626, 106.66)311642018[][][Short-term]Less Serious[]8611000.02017.010.76260106.66000
672Southeast Asia and OceaniaHo Chi MinhpublicViet NamInadequate or aging infrastructureTrueHo Chi Minh City(10.7626, 106.66)311642018[][][Short-term]Less Serious[]8611000.02017.010.76260106.66000
673Southeast Asia and OceaniaHo Chi MinhpublicViet NamIncreased water demandTrueHo Chi Minh City(10.7626, 106.66)311642018[][][]Less Serious[]8611000.02017.010.76260106.66000
+

598 rows × 19 columns

+
+
+ +
+ +
+
+ +
+
+
+
+

Drop metadata columns that will not be used

+
+
+
+
+
+
In [32]:
+
+
+
cw_data.drop(columns=['timescale','population_year'],inplace=True)
+cw_data.rename(columns={'current_population':'population'},inplace=True)
+
+ +
+
+
+ +
+
+
+
In [33]:
+
+
+
len(cw_data[id_columns]), len(cw_data[id_columns].drop_duplicates())
+
+ +
+
+
+ +
+
+ + +
+ +
Out[33]:
+ + + + +
+
(598, 598)
+
+ +
+ +
+
+ +
+
+
+
+

Generate for each of the list columns a new one that contains the number of elements

Create value_columns that contains the names of all the list columns + the created ones

+ +
+
+
+
+
+
In [34]:
+
+
+
value_columns = set([x for x in cw_value_columns if x not in to_drop] + ['risks_to_citys_water_supply'])
+list_columns = cw_data.iloc[0].apply(lambda x: isinstance(x, list))
+list_columns = list_columns[list_columns].index
+len_columns = set()
+for x in value_columns.copy():
+    if x in list_columns:
+        cw_data[x+'_n'] = cw_data[x].apply(lambda x: len(x) if x else 1)
+        len_columns.add(x+'_n')
+value_columns = value_columns.union(len_columns)
+value_columns
+
+ +
+
+
+ +
+
+ + +
+ +
Out[34]:
+ + + + +
+
{'action_description',
+ 'action_description_n',
+ 'adaptation_action',
+ 'adaptation_action_n',
+ 'magnitude',
+ 'risk_description',
+ 'risk_description_n',
+ 'risks_to_citys_water_supply'}
+
+ +
+ +
+
+ +
+
+
+
In [35]:
+
+
+
len(cw_data[id_columns]), len(cw_data[id_columns].drop_duplicates())
+
+ +
+
+
+ +
+
+ + +
+ +
Out[35]:
+ + + + +
+
(598, 598)
+
+ +
+ +
+
+ +
+
+
+
+

Filter by C40

We are making the assumption that, given that those cities participate in a specific program, they will also have better structured data. So this subset will be used as a reference for the imputation

+ +
+
+
+
+
+
In [36]:
+
+
+
c40_data = cw_data[cw_data['c40']].copy()
+c40_data.shape
+
+ +
+
+
+ +
+
+ + +
+ +
Out[36]:
+ + + + +
+
(97, 20)
+
+ +
+ +
+
+ +
+
+
+
+

Find the null percentage of list columns

+
+
+
+
+
+
In [37]:
+
+
+
list_nulls = c40_data[list_columns].applymap(lambda x: len(x) == 0)
+list_nulls.mean()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[37]:
+ + + + +
+
adaptation_action     0.268041
+action_description    0.381443
+risk_description      0.402062
+dtype: float64
+
+ +
+ +
+
+ +
+
+
+
In [38]:
+
+
+
c40_data['magnitude'].unique()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[38]:
+ + + + +
+
array(['Extremely serious', nan, 'Serious', 'Less Serious'], dtype=object)
+
+ +
+ +
+
+ +
+
+
+
+

Create a report of the values of magnitude

+
+
+
+
+
+
In [39]:
+
+
+
c40_risks = c40_data[id_columns+['magnitude']].copy()
+c40_risks['low'] = c40_risks['magnitude'] == 'Less Serious'
+c40_risks['medium'] = c40_risks['magnitude'] == 'Serious'
+c40_risks['high'] = c40_risks['magnitude'] == 'Extremely serious'
+c40_risks['unknown'] = c40_risks['magnitude'].isna()
+c40_risks = c40_risks.drop(columns=['magnitude']).groupby([x for x in id_columns if x!="risks_to_citys_water_supply"]).agg(sum).reset_index()
+c40_risks
+
+ +
+
+
+ +
+
+ + +
+ +
Out[39]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
regioncityaccesscountryc40organisationcity_locationaccount_noreporting_yearlatitudelongitudelowmediumhighunknown
0AfricaAddis AbabapublicEthiopiaTrueAddis Ababa City Administration(9.02887, 38.7544)3114620189.0288738.754400300
1AfricaCape TownpublicSouth AfricaTrueCity of Cape Town(-33.9253, 18.4239)358582018-33.9253018.423900010
2AfricaDar es SalaampublicUnited Republic of TanzaniaTrueCity of Dar es Salaam(-6.79235, 39.2083)358932018-6.7923539.208300101
3AfricaDurbanpublicSouth AfricaTrueCity of Durban(-29.8587, 31.0218)358632018-29.8587031.021800001
4AfricaJohannesburgpublicSouth AfricaTrueCity of Johannesburg(-26.2041, 28.0473)311152018-26.2041028.047300001
5AfricaLagospublicNigeriaTrueCity of Lagos(6.52437, 3.3792)3116720186.524373.379200421
6AfricaNairobipublicKenyaTrueCity of Nairobi(-1.29206, 36.8219)359132018-1.2920636.821900200
7East AsiaChangwonpublicRepublic of KoreaTrueChangwon City(35.1542, 126.949)31186201835.15420126.949000100
8East AsiaDalianpublicChinaTrueDalian Municipal People's Government(38.9389, 121.567)54298201838.93890121.567000002
9East AsiaHong KongpublicChina, Hong Kong Special Administrative RegionTrueGovernment of Hong Kong Special Administrative...(22.2881, 114.14)31169201822.28810114.140000101
10East AsiaTokyopublicJapanTrueTokyo Metropolitan Government(35.41, 139.41)31111201835.41000139.410000301
11East AsiaYokohamapublicJapanTrueCity of Yokohama(35.4437, 139.638)31113201835.44370139.638000100
12EuropeBarcelonapublicSpainTrueAjuntament de Barcelona(41.3823, 2.1775)1499201841.382302.177500211
13EuropeLondonpublicUnited Kingdom of Great Britain and Northern I...TrueGreater London Authority(51.5048, -0.07868)3422201851.50480-0.078681200
14EuropeOslopublicNorwayTrueCity of Oslo(59.9139, 10.7522)14088201859.9139010.752201011
15EuropeParispublicFranceTrueCity of Paris(48.8566, 2.35222)31175201848.856602.352220002
16EuropeRomapublicItalyTrueRoma Capitale(41.53, 12.2858)31110201841.5300012.285800011
17EuropeStockholmpublicSwedenTrueCity of Stockholm(59.3293, 18.0686)3429201859.3293018.068601100
18EuropeWarsawpublicPolandTrueCity of Warsaw(52.2297, 21.0122)31185201852.2297021.012200100
19Latin AmericaCuritibapublicBrazilTrueMunicipality of Curitiba(-25.4311, -49.2647)311562018-25.43110-49.264701000
20Latin AmericaGuadalajarapublicMexicoTrueRegion Metropolitana de Guadalajara(20.6597, -103.35)35867201820.65970-103.350000001
21Latin AmericaMedellínpublicColombiaTrueMunicipality of Medellín(6.22729, -75.5735)3587320186.22729-75.573500200
22Latin AmericaMexico CitypublicMexicoTrueMexico City(19.4326, -99.1332)31172201819.43260-99.133200011
23Latin AmericaQuitopublicEcuadorTrueDistrito Metropolitano de Quito(-0.2333, -78.5167)421782018-0.23330-78.516700100
24Latin AmericaRio de JaneiropublicBrazilTruePrefeitura do Rio de Janeiro(-22.9054, -43.5614)311762018-22.90540-43.561400201
25Latin AmericaSantiagopublicChileTrueRegión Metropolitana de Santiago(-33.4489, -70.6693)311802018-33.44890-70.669300300
26Latin AmericaSão PaulopublicBrazilTruePrefeitura de São Paulo(-23.5595, -46.7382)311842018-23.55950-46.738200100
27Middle EastAmmanpublicJordanTrueGreater Amman Municipality(31.9454, 35.9284)54337201831.9454035.928400020
28North AmericaAustinpublicUnited States of AmericaTrueCity of Austin(30.2672, -97.7431)1184201830.26720-97.743100010
29North AmericaPortland, ORpublicUnited States of AmericaTrueCity of Portland, OR(45.52, -122.682)14874201845.52000-122.682000004
30North AmericaSan FranciscopublicUnited States of AmericaTrueCity of San Francisco(37.7749, -122.419)31182201837.77490-122.419000100
31North AmericaSeattlepublicUnited States of AmericaTrueCity of Seattle(47.6062, -122.332)16581201847.60620-122.332000001
32North AmericaVancouverpublicCanadaTrueCity of Vancouver(49.2612, -123.114)20113201849.26120-123.114001000
33North AmericaWashington, DCpublicUnited States of AmericaTrueDistrict of Columbia(38.9072, -77.0369)31090201838.90720-77.036900201
34South and West AsiaDhakapublicBangladeshTrueDhaka City(23.8103, 90.4125)50782201823.8103090.412500004
35South and West AsiaKarachipublicPakistanTrueCity District Government Karachi(24.9108, 67.1281)31168201824.9108067.128100010
36South and West AsiaKolkatapublicIndiaTrueKolkata Metropolitan Area(22.5726, 88.3639)35904201822.5726088.363900001
37Southeast Asia and OceaniaAucklandpublicNew ZealandTrueAuckland Council(-36.8153, 174.742)439322018-36.81530174.742000201
38Southeast Asia and OceaniaBangkokpublicThailandTrueBangkok Metropolitan Administration(13.7712, 100.556)31150201813.77120100.556001000
39Southeast Asia and OceaniaCity of MelbournepublicAustraliaTrueCity of Melbourne(-37.8141, 144.963)311092018-37.81410144.963000200
40Southeast Asia and OceaniaCity of SydneypublicAustraliaTrueCity of Sydney(-33.8675, 151.207)311142018-33.86750151.207000401
41Southeast Asia and OceaniaHo Chi MinhpublicViet NamTrueHo Chi Minh City(10.7626, 106.66)31164201810.76260106.660003100
42Southeast Asia and OceaniaJakartapublicIndonesiaTrueJakarta City Government(-6.1751, 106.865)311662018-6.17510106.865000005
+
+
+ +
+ +
+
+ +
+
+
+
In [40]:
+
+
+
from sklearn.preprocessing import LabelEncoder
+
+ +
+
+
+ +
+
+
+
In [41]:
+
+
+
from utils.nlp import SimilarityAnalysis, create_sim_vector
+
+ +
+
+
+ +
+
+
+
In [42]:
+
+
+
c40_data.risks_to_citys_water_supply = c40_data.risks_to_citys_water_supply.apply(lambda x: np.nan if x=='nan' else x)
+
+ +
+
+
+ +
+
+
+
In [43]:
+
+
+
c40_data[c40_data.risks_to_citys_water_supply.isnull()]
+
+ +
+
+
+ +
+
+ + +
+ +
Out[43]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
regioncityaccesscountryrisks_to_citys_water_supplyc40organisationcity_locationaccount_noreporting_yearadaptation_actionaction_descriptionmagnituderisk_descriptionpopulationlatitudelongitudeadaptation_action_naction_description_nrisk_description_n
21AfricaJohannesburgpublicSouth AfricaNaNTrueCity of Johannesburg(-26.2041, 28.0473)311152018[Water use restrictions][A by-law that effects water restrictions is i...NaN[]NaN-26.204128.0473111
71East AsiaTokyopublicJapanNaNTrueTokyo Metropolitan Government(35.41, 139.41)311112018[][Implementing measures against flood]Serious[]13857664.035.4100139.4100111
108EuropeOslopublicNorwayNaNTrueCity of Oslo(59.9139, 10.7522)140882018[Stormwater management (natural or man-made in...[Small scale project to implement water meeter...NaN[]NaN59.913910.7522341
404North AmericaPortland, ORpublicUnited States of AmericaNaNTrueCity of Portland, OR(45.52, -122.682)148742018[Watershed preservation][Portland seeks to manage the watershed in way...NaN[Portland has a secondary, redundant, groundwa...639863.045.5200-122.6820111
454South and West AsiaDhakapublicBangladeshNaNTrueDhaka City(23.8103, 90.4125)507822018[Stormwater management (natural or man-made in...[Embankment is constructed around Dhaka City t...NaN[Increases water born diseases]4500000.023.810390.4125111
456South and West AsiaKolkatapublicIndiaNaNTrueKolkata Metropolitan Area(22.5726, 88.3639)359042018[Efficiency regulations or standards, Stormwat...[Channelisation of drains Construction of new ...NaN[53% of the boroughs within Kolkata Municipal ...14030000.022.572688.3639222
476Southeast Asia and OceaniaJakartapublicIndonesiaNaNTrueJakarta City Government(-6.1751, 106.865)311662018[Other: Stormwater management (natural or man ...[- Restore damaged and lost water ecosystems (...NaN[Increased frequency of rain affecting the are...10075310.0-6.1751106.8650111
+
+
+ +
+ +
+
+ +
+
+
+
In [44]:
+
+
+
c40_data.risks_to_citys_water_supply.unique()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[44]:
+ + + + +
+
array(['Increased water stress or scarcity',
+       'Inadequate or aging infrastructure', nan,
+       'Declining water quality', 'Energy supply issues',
+       'Higher water prices', 'Increased water demand', 'Regulatory'],
+      dtype=object)
+
+ +
+ +
+
+ +
+
+
+
+

Fit Similarity Analysis

per string list column of the value columns, by concatenating strings together. Vectorize all the string list columns based on their in between similarities

+ +
+
+
+
+
+
In [45]:
+
+
+
analyses = {x:SimilarityAnalysis() for x in value_columns if x in list_columns}
+
+ +
+
+
+ +
+
+
+
In [46]:
+
+
+
vectorized = np.hstack([analyses[x].fit_transform(c40_data[x]) for x in analyses])
+
+ +
+
+
+ +
+
+
+
+

Encode magnitude and risks into numerical labels

+
+
+
+
+
+
In [47]:
+
+
+
cols_to_encode =  [x for x in value_columns if x not in list_columns and x not in len_columns]
+c40_data[cols_to_encode] = c40_data[cols_to_encode].fillna('nan')
+encoders = {x:LabelEncoder() for x in cols_to_encode}
+
+ +
+
+
+ +
+
+
+
In [48]:
+
+
+
encoded = np.array([encoders[x].fit_transform(c40_data[x]) for x in cols_to_encode]).T.astype(float)
+for t in range(len(cols_to_encode)):
+    encoded[encoded[:,t] == np.where(encoders[cols_to_encode[t]].classes_=='nan')[0],t] = np.nan
+
+ +
+
+
+ +
+
+
+
In [49]:
+
+
+
lab_freqs = c40_data[cols_to_encode].groupby(cols_to_encode,as_index=False).size()
+lab_freqs
+
+ +
+
+
+ +
+
+ + +
+ +
Out[49]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
risks_to_citys_water_supplymagnitudesize
0Declining water qualityLess Serious2
1Declining water qualitySerious9
2Declining water qualitynan3
3Energy supply issuesExtremely serious1
4Energy supply issuesSerious1
5Higher water pricesExtremely serious1
6Higher water pricesLess Serious1
7Higher water pricesSerious1
8Higher water pricesnan3
9Inadequate or aging infrastructureLess Serious1
10Inadequate or aging infrastructureSerious1
11Inadequate or aging infrastructurenan15
12Increased water demandExtremely serious1
13Increased water demandLess Serious1
14Increased water demandSerious6
15Increased water stress or scarcityExtremely serious8
16Increased water stress or scarcityLess Serious3
17Increased water stress or scarcitySerious21
18Increased water stress or scarcitynan6
19RegulatoryLess Serious1
20RegulatorySerious3
21Regulatorynan1
22nanSerious1
23nannan6
+
+
+ +
+ +
+
+ +
+
+
+
+

Create dataset that contains the encoded labels, the vectorized columns and the columns referring the lists lengths

+
+
+
+
+
+
In [50]:
+
+
+
whole = np.hstack([encoded, vectorized, c40_data[len_columns]])
+
+ +
+
+
+ +
+
+
+
In [51]:
+
+
+
import sys
+sys.path.append('..')
+from labeled_preprocessing.imputation import LabeledDatasetImputer
+
+ +
+
+
+ +
+
+
+
+

Fit LabeledDatasetImputer and transform dataset

(LabeledDatasetImputer is a union of two Iterative Imputers , one for labels and one for features)

+ +
+
+
+
+
+
In [52]:
+
+
+
imputer = LabeledDatasetImputer(verbose=2,k_features_per_label=0, seed=seed)
+continuous_imputed, y = imputer.fit_transform(whole[:,2:], whole[:,:2], ret_imputed_x=True)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
Applying feature selection..
+Creating imputed X using KNeighborsRegressor..
+[IterativeImputer] Completing matrix with shape (97, 192)
+[IterativeImputer] Ending imputation round 1/10, elapsed time 0.45
+[IterativeImputer] Change: 16.78842081477814, scaled tolerance: 0.011 
+[IterativeImputer] Ending imputation round 2/10, elapsed time 0.88
+[IterativeImputer] Change: 7.823153835169504, scaled tolerance: 0.011 
+[IterativeImputer] Ending imputation round 3/10, elapsed time 1.57
+[IterativeImputer] Change: 3.379485724678483, scaled tolerance: 0.011 
+[IterativeImputer] Ending imputation round 4/10, elapsed time 2.09
+[IterativeImputer] Change: 0.021456167679847482, scaled tolerance: 0.011 
+[IterativeImputer] Ending imputation round 5/10, elapsed time 2.51
+[IterativeImputer] Change: 3.3306690738754696e-16, scaled tolerance: 0.011 
+[IterativeImputer] Early stopping criterion reached.
+Creating imputed Y using Pipeline..
+[IterativeImputer] Completing matrix with shape (97, 194)
+[IterativeImputer] Ending imputation round 1/10, elapsed time 0.13
+[IterativeImputer] Change: 5.0, scaled tolerance: 0.011 
+[IterativeImputer] Ending imputation round 2/10, elapsed time 0.23
+[IterativeImputer] Change: 0.0, scaled tolerance: 0.011 
+[IterativeImputer] Early stopping criterion reached.
+
+
+
+ +
+
+ +
+
+
+
+

Use the prediction power on the imputed data as measurement of coherent imputation.

+
+
+
+
+
+
In [53]:
+
+
+
from sklearn.svm import SVC
+from sklearn.linear_model import LogisticRegression
+from sklearn.preprocessing import StandardScaler
+from sklearn.model_selection import cross_val_score
+from sklearn.preprocessing import StandardScaler
+from sklearn.pipeline import make_pipeline
+simple_model = make_pipeline(StandardScaler(), SVC(kernel='linear', C=0.01, random_state=seed))
+scoring = 'accuracy' 
+scores = cross_val_score(simple_model, continuous_imputed, y[:,cols_to_encode.index('magnitude')], cv=5,scoring=scoring)
+np.mean(scores)
+
+ +
+
+
+ +
+
+ + +
+ +
Out[53]:
+ + + + +
+
0.773684210526316
+
+ +
+ +
+
+ +
+
+
+
+

Plot features correlation

+
+
+
+
+
+
In [54]:
+
+
+
import matplotlib.pyplot as plt
+flg = np.all(~np.isnan(whole),axis=1), np.hstack([[True, True], imputer.selection_mask[:]])
+corr = np.corrcoef(whole[flg[0],:][:,flg[1]].T)
+print(corr.shape)
+plt.matshow(corr)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
(194, 194)
+
+
+
+ +
+ +
Out[54]:
+ + + + +
+
<matplotlib.image.AxesImage at 0x7f9b93e80190>
+
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +
+
+ +
+
+
+
+

Retrieve the categorical imputed labels

+
+
+
+
+
+
In [55]:
+
+
+
imputed = np.array([
+    encoders[x].inverse_transform(
+    y[:, c].astype(int)
+ ) for c,x in enumerate(cols_to_encode)]).T
+
+ +
+
+
+ +
+
+
+
In [56]:
+
+
+
c40_data_imputed = c40_data.copy()
+
+ +
+
+
+ +
+
+
+
In [57]:
+
+
+
c40_data_imputed[cols_to_encode] = imputed
+
+ +
+
+
+ +
+
+
+
In [58]:
+
+
+
c40_data_imputed.head()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[58]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
regioncityaccesscountryrisks_to_citys_water_supplyc40organisationcity_locationaccount_noreporting_yearadaptation_actionaction_descriptionmagnituderisk_descriptionpopulationlatitudelongitudeadaptation_action_naction_description_nrisk_description_n
4AfricaCape TownpublicSouth AfricaIncreased water stress or scarcityTrueCity of Cape Town(-33.9253, 18.4239)358582018[Water use restrictions, Use of non-potable wa...[In terms of diversifying water supply (includ...Extremely serious[The City has generally been able to successfu...4174510.0-33.9253018.42399101
7AfricaDar es SalaampublicUnited Republic of TanzaniaInadequate or aging infrastructureTrueCity of Dar es Salaam(-6.79235, 39.2083)358932018[Investment in existing water supply infrastru...[City provide some % of the total money correc...Serious[]NaN-6.7923539.2083111
8AfricaDurbanpublicSouth AfricaInadequate or aging infrastructureTrueCity of Durban(-29.8587, 31.0218)358632018[Other, Investment in existing water supply in...[improvements to infrastructure are being done...Serious[]NaN-29.8587031.0218331
21AfricaJohannesburgpublicSouth AfricaIncreased water stress or scarcityTrueCity of Johannesburg(-26.2041, 28.0473)311152018[Water use restrictions][A by-law that effects water restrictions is i...Serious[]NaN-26.2041028.0473111
24AfricaLagospublicNigeriaDeclining water qualityTrueCity of Lagos(6.52437, 3.3792)311672018[Water use restrictions][Application of water abstraction rules, surch...Serious[Increased rainfall will result to greater amo...24821418.06.524373.3792111
+
+
+ +
+ +
+
+ +
+
+
+
+

Find which labels have been updated after imputation

+
+
+
+
+
+
In [59]:
+
+
+
imp_lab_freqs = c40_data_imputed[cols_to_encode].groupby(cols_to_encode,as_index=False).size()
+imp_ret = pd.merge(lab_freqs, imp_lab_freqs,suffixes=('','_imp'), how='right',on=cols_to_encode)
+imp_ret['increase'] = (imp_ret['size_imp'] - imp_ret['size'])/imp_ret['size']
+imp_ret
+
+ +
+
+
+ +
+
+ + +
+ +
Out[59]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
risks_to_citys_water_supplymagnitudesizesize_impincrease
0Declining water qualityExtremely seriousNaN1NaN
1Declining water qualityLess Serious2.020.000000
2Declining water qualitySerious9.0120.333333
3Energy supply issuesExtremely serious1.010.000000
4Energy supply issuesSerious1.010.000000
5Higher water pricesExtremely serious1.010.000000
6Higher water pricesLess Serious1.010.000000
7Higher water pricesSerious1.043.000000
8Inadequate or aging infrastructureLess Serious1.010.000000
9Inadequate or aging infrastructureSerious1.01716.000000
10Increased water demandExtremely serious1.010.000000
11Increased water demandLess Serious1.010.000000
12Increased water demandSerious6.060.000000
13Increased water stress or scarcityExtremely serious8.090.125000
14Increased water stress or scarcityLess Serious3.030.000000
15Increased water stress or scarcitySerious21.0310.476190
16RegulatoryLess Serious1.010.000000
17RegulatorySerious3.040.333333
+
+
+ +
+ +
+
+ +
+
+
+
+

Make sure that all risks have been encoded and are imputation outcome candidates

+
+
+
+
+
+
In [60]:
+
+
+
set([x for x in cw_data['risks_to_citys_water_supply'] if x not in encoders['risks_to_citys_water_supply'].classes_])
+
+ +
+
+
+ +
+
+ + +
+ +
Out[60]:
+ + + + +
+
set()
+
+ +
+ +
+
+ +
+
+
+
+

Impute whole dataset

+
+
+
+
+
+
In [61]:
+
+
+
cw_data['risks_to_citys_water_supply'].value_counts()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[61]:
+ + + + +
+
Increased water stress or scarcity    205
+Declining water quality               127
+Inadequate or aging infrastructure    101
+nan                                    54
+Increased water demand                 49
+Higher water prices                    38
+Regulatory                             17
+Energy supply issues                    7
+Name: risks_to_citys_water_supply, dtype: int64
+
+ +
+ +
+
+ +
+
+
+
+

Apply encoding and vectorization

based on fitted encoders and SimilarityAnalysis objects

+ +
+
+
+
+
+
In [62]:
+
+
+
cw_data[cols_to_encode] = cw_data[cols_to_encode].fillna('nan')
+encoded = np.array([encoders[x].transform(cw_data[x]) for x in cols_to_encode]).T.astype(float)
+for t in range(len(cols_to_encode)):
+    encoded[encoded[:,t] == np.where(encoders[cols_to_encode[t]].classes_=='nan')[0],t] = np.nan
+
+ +
+
+
+ +
+
+
+
In [63]:
+
+
+
all_vectorized = np.hstack([analyses[x].transform(cw_data[x]) for x in value_columns if x in list_columns])
+
+ +
+
+
+ +
+
+
+
+

Apply imputation

using the trained imputer

+ +
+
+
+
+
+
In [64]:
+
+
+
all_imputed_x, all_imputed_y  = imputer.transform(np.hstack([all_vectorized,cw_data[len_columns]]), encoded, ret_imputed_x=True)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
[IterativeImputer] Completing matrix with shape (598, 192)
+[IterativeImputer] Ending imputation round 1/5, elapsed time 0.48
+[IterativeImputer] Ending imputation round 2/5, elapsed time 0.99
+[IterativeImputer] Ending imputation round 3/5, elapsed time 1.49
+[IterativeImputer] Ending imputation round 4/5, elapsed time 2.11
+[IterativeImputer] Ending imputation round 5/5, elapsed time 2.72
+[IterativeImputer] Completing matrix with shape (598, 194)
+[IterativeImputer] Ending imputation round 1/2, elapsed time 0.02
+[IterativeImputer] Ending imputation round 2/2, elapsed time 0.03
+
+
+
+ +
+
+ +
+
+
+
In [65]:
+
+
+
all_imputed_y_dec = np.array([
+    encoders[x].inverse_transform(
+    all_imputed_y[:, c].astype(int)
+ ) for c,x in enumerate(cols_to_encode)]).T
+
+ +
+
+
+ +
+
+
+
In [66]:
+
+
+
len(cw_data[id_columns]), len(cw_data[id_columns].drop_duplicates())
+
+ +
+
+
+ +
+
+ + +
+ +
Out[66]:
+ + + + +
+
(598, 598)
+
+ +
+ +
+
+ +
+
+
+
In [67]:
+
+
+
cw_data_imputed = cw_data.copy()
+cw_data_imputed[cols_to_encode] = all_imputed_y_dec
+cw_data_imputed.drop_duplicates(id_columns,inplace=True)
+
+ +
+
+
+ +
+
+
+
+

Plot features correlation

+
+
+
+
+
+
In [68]:
+
+
+
import matplotlib.pyplot as plt
+corr = np.corrcoef(np.hstack([all_imputed_y, all_imputed_x]).T)
+print(corr.shape)
+plt.matshow(corr)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
(194, 194)
+
+
+
+ +
+ +
Out[68]:
+ + + + +
+
<matplotlib.image.AxesImage at 0x7f9b92426c70>
+
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +
+
+ +
+
+
+
In [69]:
+
+
+
scores = cross_val_score(simple_model, all_imputed_x, all_imputed_y[:,cols_to_encode.index('magnitude')], cv=5,scoring=scoring)
+np.mean(scores)
+
+ +
+
+
+ +
+
+ + +
+ +
Out[69]:
+ + + + +
+
0.7407983193277311
+
+ +
+ +
+
+ +
+
+
+
+

The score did not have significant drop, so we can assume that the imputation was cohesive across data

+ +
+
+
+
+
+
+

Create output dataset

+
+
+
+
+
+
In [205]:
+
+
+
final_labeled_data = cw_data_imputed[['city','latitude','longitude','country','population','c40','magnitude','risks_to_citys_water_supply']].copy()
+final_labeled_data.rename(columns={'magnitude': 'risk','risks_to_citys_water_supply': 'description'},inplace=True)
+
+ +
+
+
+ +
+
+
+
In [206]:
+
+
+
final_labeled_data[['city','latitude','longitude','c40', 'population','description','risk']]
+
+ +
+
+
+ +
+
+ + +
+ +
Out[206]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
citylatitudelongitudec40populationdescriptionrisk
0Abuja9.076477.39857False2440000.0Higher water pricesSerious
1Abuja9.076477.39857FalseNaNInadequate or aging infrastructureSerious
2Abuja9.076477.39857False2440000.0Increased water stress or scarcitySerious
3Bouaké7.41370-5.01490False715435.0Declining water qualityExtremely serious
4Cape Town-33.9253018.42390True4174510.0Increased water stress or scarcityExtremely serious
........................
669City of Sydney-33.86750151.20700True233219.0RegulatorySerious
670Ho Chi Minh10.76260106.66000True8611000.0Declining water qualitySerious
671Ho Chi Minh10.76260106.66000True8611000.0Higher water pricesLess Serious
672Ho Chi Minh10.76260106.66000True8611000.0Inadequate or aging infrastructureLess Serious
673Ho Chi Minh10.76260106.66000True8611000.0Increased water demandLess Serious
+

575 rows × 7 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [207]:
+
+
+
cw_data_imputed[id_columns].drop_duplicates().shape
+
+ +
+
+
+ +
+
+ + +
+ +
Out[207]:
+ + + + +
+
(575, 12)
+
+ +
+ +
+
+ +
+
+
+
+

Pivoting risks description, so that each row is unique per city

+
+
+
+
+
+
In [208]:
+
+
+
risks = final_labeled_data.description.unique()
+risks_description = {risk: f'risk{c}' for c,risk in enumerate(risks)}
+risks_df = pd.Series(risks_description).to_frame()
+risks_df.reset_index(inplace=True)
+risks_df.columns=['description','code']
+final_labeled_data['description'] = final_labeled_data['description'].apply(lambda x: risks_description[x])
+risks_df
+
+ +
+
+
+ +
+
+ + +
+ +
Out[208]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
descriptioncode
0Higher water pricesrisk0
1Inadequate or aging infrastructurerisk1
2Increased water stress or scarcityrisk2
3Declining water qualityrisk3
4Increased water demandrisk4
5Regulatoryrisk5
6Energy supply issuesrisk6
+
+
+ +
+ +
+
+ +
+
+
+
In [209]:
+
+
+
main_index=['city','latitude','longitude', 'country']
+
+ +
+
+
+ +
+
+
+
+

Check if there are cities that are listed to be both in and not in C40

and drop the ones that are not

+ +
+
+
+
+
+
In [210]:
+
+
+
c40_check = final_labeled_data.groupby(main_index)['c40'].nunique()
+c40_check[c40_check>1]
+
+ +
+
+
+ +
+
+ + +
+ +
Out[210]:
+ + + + +
+
city      latitude  longitude  country
+Santiago  -33.4489  -70.6693   Chile      2
+Name: c40, dtype: int64
+
+ +
+ +
+
+ +
+
+
+
In [211]:
+
+
+
final_labeled_data.city.nunique()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[211]:
+ + + + +
+
282
+
+ +
+ +
+
+ +
+
+
+
In [212]:
+
+
+
final_labeled_data[final_labeled_data.city == 'Santiago']
+
+ +
+
+
+ +
+
+ + +
+ +
Out[212]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
citylatitudelongitudecountrypopulationc40riskdescription
563Santiago-33.4489-70.6693Chile404495.0FalseExtremely seriousrisk3
564Santiago-33.4489-70.6693Chile7112808.0TrueSeriousrisk3
565Santiago-33.4489-70.6693Chile404495.0FalseExtremely seriousrisk4
566Santiago-33.4489-70.6693Chile404495.0FalseExtremely seriousrisk2
567Santiago-33.4489-70.6693Chile7112808.0TrueSeriousrisk2
568Santiago-33.4489-70.6693Chile7112808.0TrueSeriousrisk5
+
+
+ +
+ +
+
+ +
+
+
+
In [221]:
+
+
+
final_labeled_data = final_labeled_data.sort_values(by='c40').groupby(main_index + ['description']).last().reset_index()
+final_labeled_data = final_labeled_data.drop(columns=['c40']).merge(final_labeled_data.groupby(main_index)['c40'].max().reset_index(),on=main_index)
+final_labeled_data[final_labeled_data.city=='Santiago']
+
+ +
+
+
+ +
+
+ + +
+ +
Out[221]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
citylatitudelongitudecountrydescriptionpopulationriskc40
473Santiago-33.4489-70.6693Chilerisk27112808.0SeriousTrue
474Santiago-33.4489-70.6693Chilerisk37112808.0SeriousTrue
475Santiago-33.4489-70.6693Chilerisk4404495.0Extremely seriousTrue
476Santiago-33.4489-70.6693Chilerisk57112808.0SeriousTrue
+
+
+ +
+ +
+
+ +
+
+
+
In [222]:
+
+
+
final_labeled_data = final_labeled_data.sort_values(by='c40').groupby(main_index + ['description']).last().reset_index()
+
+ +
+
+
+ +
+
+
+
+

Fix population

+
+
+
+
+
+
In [223]:
+
+
+
pop_df = final_labeled_data.groupby(index)[['population']
+                                          ].max().reset_index().drop_duplicates()
+final_labeled_data = final_labeled_data.drop(columns=['population']).merge(pop_df.reset_index(), on=index)
+
+ +
+
+
+ +
+
+
+
In [224]:
+
+
+
final_labeled_data = final_labeled_data.pivot(index= index + ['c40','population'], columns='description', values='risk').reset_index()
+
+ +
+
+
+ +
+
+
+
+

Encode risks from 0 to 1

+
+
+
+
+
+
In [225]:
+
+
+
severity_mapping = {'Less Serious':1, "Serious":2, 'Extremely serious':3}
+pd.DataFrame([severity_mapping]).to_csv(SEVERITY_MAPPING_PATH,index=False)
+nrisks = list(risks_description.values())
+final_labeled_data[nrisks] = final_labeled_data[nrisks].replace(severity_mapping)
+
+ +
+
+
+ +
+
+
+
+

Add 0 to risks belonging to C40, assuming that those have reported no risks because indeed they were none, not because they were unknown

+
+
+
+
+
+
In [226]:
+
+
+
final_labeled_data.loc[final_labeled_data['c40'], nrisks] = final_labeled_data.loc[final_labeled_data['c40'], nrisks].fillna(0)
+
+ +
+
+
+ +
+
+
+
In [227]:
+
+
+
final_labeled_data.to_csv(LABELED_CITIES_PATH,index=False)
+risks_df.to_csv(RISKS_MAPPING_PATH,index=False)
+
+ +
+
+
+ +
+
+
+
In [228]:
+
+
+
final_labeled_data.head()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[228]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
descriptioncitylatitudelongitudecountryc40populationrisk0risk1risk2risk3risk4risk5risk6
0Abasan Al-Kabira31.3231034.34400State of PalestineFalse32000.0NaN2.02.02.0NaNNaNNaN
1Abington40.12410-75.11950United States of AmericaFalse55310.0NaN1.01.02.0NaNNaNNaN
2Abuja9.076477.39857NigeriaFalse2440000.02.02.02.0NaNNaNNaNNaN
3Addis Ababa9.0288738.75440EthiopiaTrue3103374.00.02.02.00.02.00.00.0
4Adelaide-34.92850138.60100AustraliaFalse23916.02.02.02.0NaNNaN2.0NaN
+
+
+ +
+ +
+
+ +
+
+
+
+

See a report of the filled labels

+
+
+
+
+
+
In [229]:
+
+
+
cw_lab_freqs = cw_data[cols_to_encode].groupby(cols_to_encode,as_index=False).size()
+imp_cw_lab_freqs = cw_data_imputed[cols_to_encode].groupby(cols_to_encode,as_index=False).size()
+imp_cw_ret = pd.merge(cw_lab_freqs, imp_cw_lab_freqs,suffixes=('','_imp'), how='right',on=cols_to_encode)
+imp_cw_ret['increase'] = (imp_cw_ret['size_imp'] - imp_cw_ret['size'])/imp_cw_ret['size']
+imp_cw_ret
+
+ +
+
+
+ +
+
+ + +
+ +
Out[229]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
risks_to_citys_water_supplymagnitudesizesize_impincrease
0Declining water qualityExtremely serious23240.043478
1Declining water qualityLess Serious18180.000000
2Declining water qualitySerious57890.561404
3Energy supply issuesExtremely serious110.000000
4Energy supply issuesLess Serious110.000000
5Energy supply issuesSerious550.000000
6Higher water pricesExtremely serious220.000000
7Higher water pricesLess Serious10110.100000
8Higher water pricesSerious14250.785714
9Inadequate or aging infrastructureExtremely serious340.333333
10Inadequate or aging infrastructureLess Serious880.000000
11Inadequate or aging infrastructureSerious11987.909091
12Increased water demandExtremely serious770.000000
13Increased water demandLess Serious12120.000000
14Increased water demandSerious30320.066667
15Increased water stress or scarcityExtremely serious39420.076923
16Increased water stress or scarcityLess Serious2120-0.047619
17Increased water stress or scarcitySerious941590.691489
18RegulatoryLess Serious440.000000
19RegulatorySerious8130.625000
+
+
+ +
+ +
+
+ +
+
+
+
In [230]:
+
+
+
imp_report = pd.merge(imp_cw_ret, imp_ret, suffixes=('','_c40'), on=('magnitude','risks_to_citys_water_supply'))
+imp_report.to_csv(IMPUTATION_REPORT_PATH,index=False)
+imp_report
+
+ +
+
+
+ +
+
+ + +
+ +
Out[230]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
risks_to_citys_water_supplymagnitudesizesize_impincreasesize_c40size_imp_c40increase_c40
0Declining water qualityExtremely serious23240.043478NaN1NaN
1Declining water qualityLess Serious18180.0000002.020.000000
2Declining water qualitySerious57890.5614049.0120.333333
3Energy supply issuesExtremely serious110.0000001.010.000000
4Energy supply issuesSerious550.0000001.010.000000
5Higher water pricesExtremely serious220.0000001.010.000000
6Higher water pricesLess Serious10110.1000001.010.000000
7Higher water pricesSerious14250.7857141.043.000000
8Inadequate or aging infrastructureLess Serious880.0000001.010.000000
9Inadequate or aging infrastructureSerious11987.9090911.01716.000000
10Increased water demandExtremely serious770.0000001.010.000000
11Increased water demandLess Serious12120.0000001.010.000000
12Increased water demandSerious30320.0666676.060.000000
13Increased water stress or scarcityExtremely serious39420.0769238.090.125000
14Increased water stress or scarcityLess Serious2120-0.0476193.030.000000
15Increased water stress or scarcitySerious941590.69148921.0310.476190
16RegulatoryLess Serious440.0000001.010.000000
17RegulatorySerious8130.6250003.040.333333
+
+
+ +
+ +
+
+ +
+
+
+
In [ ]:
+
+
+
 
+
+ +
+
+
+ +
+
+
+ + + + + + diff --git a/documentation/WaterSecurity/notebooks/Merge Unlabeled to Labeled.html b/documentation/WaterSecurity/notebooks/Merge Unlabeled to Labeled.html new file mode 100644 index 0000000..7062014 --- /dev/null +++ b/documentation/WaterSecurity/notebooks/Merge Unlabeled to Labeled.html @@ -0,0 +1,15192 @@ + + + + +Notebook + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
In [1]:
+
+
+
import sys
+sys.path.append('..')
+import numpy as np
+import pandas as pd
+import country_converter as coco
+from haversine import haversine
+
+ +
+
+
+ +
+
+
+
+

Use world_cities csv as the unlabeled dataset, as it is more complete

From there population will be filled

+ +
+
+
+
+
+
In [2]:
+
+
+
from data.unlabeled import WORLD_CITIES
+from data.labeled.preprocessed import LABELED_CITIES
+WORLD_CITIES.head()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[2]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
citycity_asciilatlngcountryiso2iso3admin_namecapitalpopulationid
0TokyoTokyo35.6897139.6922JapanJPJPNTōkyōprimary37977000.01392685764
1JakartaJakarta-6.2146106.8451IndonesiaIDIDNJakartaprimary34540000.01360771077
2DelhiDelhi28.660077.2300IndiaININDDelhiadmin29617000.01356872604
3MumbaiMumbai18.966772.8333IndiaININDMahārāshtraadmin23355000.01356226629
4ManilaManila14.5958120.9772PhilippinesPHPHLManilaprimary23088000.01608618140
+
+
+ +
+ +
+
+ +
+
+
+
+

Create the 3 letter symbol code mapping for all the countries existing inside

+
+
+
+
+
+
In [3]:
+
+
+
code_dict = {x: coco.convert(x) for x in set(WORLD_CITIES['country'].unique()).union(LABELED_CITIES['country'].unique())}
+
+ +
+
+
+ +
+
+
+
+

Add the corresponding column to both datasets

+
+
+
+
+
+
In [4]:
+
+
+
WORLD_CITIES['country_code'] = WORLD_CITIES['country'].apply(lambda x:  code_dict[x])
+LABELED_CITIES['country_code']= LABELED_CITIES['country'].apply(lambda x:  code_dict[x])
+
+ +
+
+
+ +
+
+
+
+

Merge those datasets together using the following steps:

    +
  1. Create a dictionary that contains the distances between cities that belong to the same country (with the same code). For every city whose name exists as is in both datasets, set the distance 0
  2. +
  3. Compute the minimum distance and its location per city, that resides in the labeled cities
  4. +
  5. If this distance is less than a threshold, that has been set to 10 kilometers, assume that the cities are the same. + Use this mapping to fill the unlabeled cities with the labeled risks. +If not, expand the unlabeled dataset with the city
  6. +
  7. Drop any row that has no recorded population.
  8. +
+ +
+
+
+
+
+
In [5]:
+
+
+
mapping_dists = {x['city']:{y['city']: (haversine((x['latitude'],x['longitude']),(y['lat'],y['lng'])) if x['city']!=y['city'] else 0)
+                            for (_, y) in WORLD_CITIES[WORLD_CITIES['country_code']==x['country_code']].iterrows()} for (_, x) in LABELED_CITIES.iterrows()}
+
+ +
+
+
+ +
+
+
+
In [6]:
+
+
+
WORLD_CITIES.set_index('city', inplace=True)
+LABELED_CITIES.set_index('city', inplace=True)
+
+ +
+
+
+ +
+
+
+
+

Fix some cases where the latitude and the longitude are in the wrong place

+
+
+
+
+
+
In [7]:
+
+
+
mapping_dists_fixed = {
+    x:(
+        {y: val for y,val in d.items()} if min(d.values()) < 2000 else 
+        {y: haversine((LABELED_CITIES.loc[[x], 'longitude'].values[0],LABELED_CITIES.loc[[x], 'latitude'].values[0]),
+                      (WORLD_CITIES.loc[[y], 'lat'].values[0],WORLD_CITIES.loc[[y], 'lng'].values[0]))
+        for  y,val in d.items()}) for x,d in mapping_dists.items()}
+
+ +
+
+
+ +
+
+
+
In [8]:
+
+
+
mapping_df = pd.DataFrame(mapping_dists_fixed).T
+mapping_df.head()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[8]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Al QudsNew YorkLos AngelesChicagoMiamiDallasPhiladelphiaHoustonAtlantaWashington...WumKribiBatouriKalfouBélaboEsékaAbong MbangKontchaAiyomojokMbé
Abasan Al-Kabira97.672711NaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AbingtonNaN119.3720963857.1727361070.9452491752.117379154.87331492.555842167.7390611865.0512821400.845831...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AbujaNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
Addis AbabaNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AdelaideNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
+

5 rows × 17304 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [9]:
+
+
+
closest_match_df = pd.DataFrame(mapping_df.fillna(100000000).apply(lambda x: {'match':mapping_df.columns[np.argmin(x)], 'distance':np.min(x)}, axis=1).tolist())
+
+ +
+
+
+ +
+
+
+
In [10]:
+
+
+
closest_match_df.index = mapping_df.index
+closest_match_df
+
+ +
+
+
+ +
+
+ + +
+ +
Out[10]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
matchdistance
Abasan Al-KabiraAl Quds97.672711
AbingtonAbington0.000000
AbujaAbuja0.000000
Addis AbabaAddis Ababa0.000000
AdelaideAdelaide0.000000
.........
XalapaXalapa0.000000
Yaoundé 6Yaoundé0.459487
YokohamaYokohama0.000000
ÍlhavoEstremoz1.115491
ÖrebroÖrebro0.985037
+

282 rows × 2 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [11]:
+
+
+
dist_thres = 10 # the distance threshold for a city to be considered mapped correctly, in km
+
+ +
+
+
+ +
+
+
+
In [12]:
+
+
+
unmapped = closest_match_df[closest_match_df['distance']>dist_thres]
+
+ +
+
+
+ +
+
+
+
In [13]:
+
+
+
to_add_whole = LABELED_CITIES.loc[unmapped.index].copy() # add those rows as a whole to the augmented dataset
+to_add_labels = LABELED_CITIES.loc[closest_match_df[closest_match_df['distance']<=dist_thres].index].copy() # only add the labels from these rows
+to_add_labels.index = closest_match_df.loc[closest_match_df['distance']<=dist_thres,'match']
+
+ +
+
+
+ +
+
+
+
+

Creating an augmented dataset with all the cities, annotated or not

+ +
+
+
+
+
+
In [14]:
+
+
+
from data.labeled.preprocessed import RISKS_MAPPING
+risks_cols = list(RISKS_MAPPING.keys())
+
+ +
+
+
+ +
+
+
+
In [15]:
+
+
+
augmented_cities_dataset = WORLD_CITIES[['lat','lng','country','population','country_code']].rename(columns={'lat':'latitude','lng':'longitude'}).copy()
+augmented_cities_dataset = augmented_cities_dataset.merge(to_add_labels[['c40'] + risks_cols],left_index=True, right_index=True,how='left')
+
+ +
+
+
+ +
+
+
+
In [16]:
+
+
+
augmented_cities_dataset = pd.concat([augmented_cities_dataset, to_add_whole],axis=0)
+augmented_cities_dataset['c40']= augmented_cities_dataset['c40'].fillna(False)
+
+ +
+
+
+ +
+
+
+
In [17]:
+
+
+
augmented_cities_dataset = augmented_cities_dataset[~pd.isna(augmented_cities_dataset['population'])]
+
+ +
+
+
+ +
+
+
+
In [18]:
+
+
+
augmented_cities_dataset
+
+ +
+
+
+ +
+
+ + +
+ +
Out[18]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
latitudelongitudecountrypopulationcountry_codec40risk0risk1risk2risk3risk4risk5risk6
A Coruña43.3713-8.4188Spain370610.000ESPFalseNaNNaNNaNNaNNaNNaNNaN
Aachen50.77626.0838Germany247380.000DEUFalseNaNNaNNaNNaNNaNNaNNaN
Aalborg57.03379.9166Denmark122219.000DNKFalseNaNNaNNaNNaNNaNNaNNaN
Aalen48.837210.0936Germany68456.000DEUFalseNaNNaNNaNNaNNaNNaNNaN
Aalst50.93334.0333Belgium85715.000BELFalseNaNNaNNaNNaNNaNNaNNaN
..........................................
Sekhukhune District Municipality-24.833529.9740South Africa1076840.000ZAFFalseNaNNaNNaN2.0NaNNaNNaN
Sopó4.9075-73.9384Colombia27932.000COLFalseNaNNaNNaNNaN1.0NaNNaN
Tangará da Serra-14.6194-57.4858Brazil83.431BRAFalseNaNNaN2.0NaNNaNNaNNaN
Tuzla44.537518.6735Turkey235000.000TURFalseNaNNaN2.0NaNNaNNaNNaN
Vhembe-22.769529.9740South Africa1441178.000ZAFFalseNaNNaN3.03.0NaNNaNNaN
+

25633 rows × 13 columns

+
+
+ +
+ +
+
+ +
+
+
+
+

Fix population for specific cities with a float one

which probably is cause by used "."

+ +
+
+
+
+
+
In [19]:
+
+
+
augmented_cities_dataset.population = augmented_cities_dataset.population.apply(lambda x: x * 1000 if int(x)!=x else x)
+
+ +
+
+
+ +
+
+
+
+

Filter out cities that are unlabeled and are not big enough, consulting BIG CITIES ALL COUNTRIES csv

+
+
+
+
+
+
In [20]:
+
+
+
from data.unlabeled import BIG_CITIES_ALL_COUNTRIES
+
+ +
+
+
+ +
+
+
+
In [21]:
+
+
+
unlab_mask = augmented_cities_dataset[risks_cols].isnull().all(axis=1)
+not_in_big_cities_mask = augmented_cities_dataset.index.to_series().apply(lambda x: x not in BIG_CITIES_ALL_COUNTRIES.city.values)
+augmented_cities_dataset = augmented_cities_dataset[~(unlab_mask&not_in_big_cities_mask)]
+
+ +
+
+
+ +
+
+
+
In [22]:
+
+
+
augmented_cities_dataset
+
+ +
+
+
+ +
+
+ + +
+ +
Out[22]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
latitudelongitudecountrypopulationcountry_codec40risk0risk1risk2risk3risk4risk5risk6
Aalborg57.03379.9166Denmark122219.0DNKFalseNaNNaNNaNNaNNaNNaNNaN
Aarhus56.157210.2107Denmark237551.0DNKFalseNaNNaNNaNNaNNaNNaNNaN
Aasiaat68.7097-52.8694Greenland3134.0GRLFalseNaNNaNNaNNaNNaNNaNNaN
Abidjan5.3364-4.0267Côte D’Ivoire4980000.0CIVFalseNaNNaNNaNNaN1.0NaNNaN
Abington40.1108-75.1146United States55573.0USAFalseNaN1.01.02.0NaNNaNNaN
..........................................
Sekhukhune District Municipality-24.833529.9740South Africa1076840.0ZAFFalseNaNNaNNaN2.0NaNNaNNaN
Sopó4.9075-73.9384Colombia27932.0COLFalseNaNNaNNaNNaN1.0NaNNaN
Tangará da Serra-14.6194-57.4858Brazil83431.0BRAFalseNaNNaN2.0NaNNaNNaNNaN
Tuzla44.537518.6735Turkey235000.0TURFalseNaNNaN2.0NaNNaNNaNNaN
Vhembe-22.769529.9740South Africa1441178.0ZAFFalseNaNNaN3.03.0NaNNaNNaN
+

1437 rows × 13 columns

+
+
+ +
+ +
+
+ +
+
+
+
+

Load and merge countries features

+
+
+
+
+
+
In [23]:
+
+
+
from data.unlabeled import COUNTRIES_DATASET
+
+ +
+
+
+ +
+
+
+
In [24]:
+
+
+
set(augmented_cities_dataset.columns).intersection(COUNTRIES_DATASET.columns)
+
+ +
+
+
+ +
+
+ + +
+ +
Out[24]:
+ + + + +
+
set()
+
+ +
+ +
+
+ +
+
+
+
In [25]:
+
+
+
augmented_cities_dataset = augmented_cities_dataset.merge(COUNTRIES_DATASET, left_on='country_code', right_index=True)
+
+ +
+
+
+ +
+
+
+
In [26]:
+
+
+
all(augmented_cities_dataset.Country == augmented_cities_dataset.country)
+
+ +
+
+
+ +
+
+ + +
+ +
Out[26]:
+ + + + +
+
False
+
+ +
+ +
+
+ +
+
+
+
In [27]:
+
+
+
augmented_cities_dataset.drop(columns='country',inplace=True)
+augmented_cities_dataset.rename(columns={'Country':'country'},inplace=True)
+
+ +
+
+
+ +
+
+
+
In [28]:
+
+
+
augmented_cities_dataset= augmented_cities_dataset.reset_index().rename(columns={'index':'city'}).drop_duplicates(subset=['city','country'])
+
+ +
+
+
+ +
+
+
+
In [29]:
+
+
+
augmented_cities_dataset
+
+ +
+
+
+ +
+
+ + +
+ +
Out[29]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
citylatitudelongitudepopulationcountry_codec40risk0risk1risk2risk3...SDG 6.4.1. Services Water Use EfficiencySDG 6.4.1. Water Use EfficiencySDG 6.4.2. Water StressSeasonal variability (WRI)Total internal renewable water resources per capitaTotal population with access to safe drinking-water (JMP)Total renewable water resources per capitaTotal water withdrawal per capitaUrban population with access to safe drinking-water (JMP)country
0Aalborg57.03379.9166122219.0DNKFalseNaNNaNNaNNaN...558.335628368.61290220.0405621.3000001046.705025100.01046.705025129.285516100.0Denmark
1Aarhus56.157210.2107237551.0DNKFalseNaNNaNNaNNaN...558.335628368.61290220.0405621.3000001046.705025100.01046.705025129.285516100.0Denmark
2Copenhagen55.678612.56351085000.0DNKFalseNaN2.0NaN2.0...558.335628368.61290220.0405621.3000001046.705025100.01046.705025129.285516100.0Denmark
3Esbjerg55.46708.450072205.0DNKFalseNaNNaNNaNNaN...558.335628368.61290220.0405621.3000001046.705025100.01046.705025129.285516100.0Denmark
4Frederikshavn57.433710.533324103.0DNKFalseNaN2.0NaNNaN...558.335628368.61290220.0405621.3000001046.705025100.01046.705025129.285516100.0Denmark
..................................................................
1380Teaoraereke1.3333173.00005105.0KIRFalseNaNNaNNaNNaN...110.28810480.30283168.5059252.532741-1779.60943466.90.000000414.12703887.3Kiribati
1381Trindade0.30006.66676636.0STPFalseNaNNaNNaNNaN...17.1622547.4896411.8761472.50289110526.87491997.110526.874919197.49962698.9Sao Tome and Principe
1382Victoria-4.623655.454426450.0SYCFalseNaNNaNNaNNaN...120.47102389.32303569.2432271.601611-2157.59656695.70.000000142.08965195.7Seychelles
1383Warsaw52.216721.03331790658.0POLTrue0.00.02.00.0...153.69155043.57022234.8909660.6000001412.26637798.31594.069324265.61674199.3Poland
1384Abasan Al-Kabira31.323134.344032000.0PSEFalseNaN2.02.02.0...51.88716334.74897041.0783063.100000171.04722458.4176.31345679.03561450.7Palestine
+

1211 rows × 157 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [30]:
+
+
+
from data.dataset import DATASET_PATH
+augmented_cities_dataset.to_csv(DATASET_PATH,index=False)
+
+ +
+
+
+ +
+
+
+
In [31]:
+
+
+
augmented_cities_dataset
+
+ +
+
+
+ +
+
+ + +
+ +
Out[31]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
citylatitudelongitudepopulationcountry_codec40risk0risk1risk2risk3...SDG 6.4.1. Services Water Use EfficiencySDG 6.4.1. Water Use EfficiencySDG 6.4.2. Water StressSeasonal variability (WRI)Total internal renewable water resources per capitaTotal population with access to safe drinking-water (JMP)Total renewable water resources per capitaTotal water withdrawal per capitaUrban population with access to safe drinking-water (JMP)country
0Aalborg57.03379.9166122219.0DNKFalseNaNNaNNaNNaN...558.335628368.61290220.0405621.3000001046.705025100.01046.705025129.285516100.0Denmark
1Aarhus56.157210.2107237551.0DNKFalseNaNNaNNaNNaN...558.335628368.61290220.0405621.3000001046.705025100.01046.705025129.285516100.0Denmark
2Copenhagen55.678612.56351085000.0DNKFalseNaN2.0NaN2.0...558.335628368.61290220.0405621.3000001046.705025100.01046.705025129.285516100.0Denmark
3Esbjerg55.46708.450072205.0DNKFalseNaNNaNNaNNaN...558.335628368.61290220.0405621.3000001046.705025100.01046.705025129.285516100.0Denmark
4Frederikshavn57.433710.533324103.0DNKFalseNaN2.0NaNNaN...558.335628368.61290220.0405621.3000001046.705025100.01046.705025129.285516100.0Denmark
..................................................................
1380Teaoraereke1.3333173.00005105.0KIRFalseNaNNaNNaNNaN...110.28810480.30283168.5059252.532741-1779.60943466.90.000000414.12703887.3Kiribati
1381Trindade0.30006.66676636.0STPFalseNaNNaNNaNNaN...17.1622547.4896411.8761472.50289110526.87491997.110526.874919197.49962698.9Sao Tome and Principe
1382Victoria-4.623655.454426450.0SYCFalseNaNNaNNaNNaN...120.47102389.32303569.2432271.601611-2157.59656695.70.000000142.08965195.7Seychelles
1383Warsaw52.216721.03331790658.0POLTrue0.00.02.00.0...153.69155043.57022234.8909660.6000001412.26637798.31594.069324265.61674199.3Poland
1384Abasan Al-Kabira31.323134.344032000.0PSEFalseNaN2.02.02.0...51.88716334.74897041.0783063.100000171.04722458.4176.31345679.03561450.7Palestine
+

1211 rows × 157 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [32]:
+
+
+
(~(augmented_cities_dataset[risks_cols].isnull()).all(axis=1)).sum() # the labeled samples
+
+ +
+
+
+ +
+
+ + +
+ +
Out[32]:
+ + + + +
+
324
+
+ +
+ +
+
+ +
+
+
+ + + + + + diff --git a/documentation/WaterSecurity/notebooks/app.html b/documentation/WaterSecurity/notebooks/app.html new file mode 100644 index 0000000..874fe03 --- /dev/null +++ b/documentation/WaterSecurity/notebooks/app.html @@ -0,0 +1,13269 @@ + + + + +Notebook + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
In [1]:
+
+
+
from ipyleaflet import Map, basemaps, CircleMarker
+from ipywidgets import HTML
+import pandas as pd
+from data.labeled.preprocessed import LABELED_CITIES as cities, RISKS_MAPPING as risks
+import numpy as np
+from ipyleaflet import Icon, Marker, MarkerCluster, Popup
+
+# First is latitude and second is longitude; both in degrees
+
+
+m = Map(interpolation='nearest', basemap=basemaps.Stamen.Terrain,world_copy_jump=True)
+
+markers = ()
+
+
+popup = Popup(
+            name='popup',
+            close_button=False,
+            auto_close=False,
+            close_on_escape_key=False,auto_pan=False
+        )
+def mouseover_callback(marker,location, html):
+    def callback(*args, **kwargs):
+        popup.child = html
+        popup.location = location
+        m.add_layer(popup)
+    return callback
+
+def mouseout_callback():
+    def callback(*args, **kwargs):
+        m.remove_layer(popup)
+    return callback
+
+
+
+def populate_per_city(city, country, risks_dict):
+    html =  f"""
+    <p> <h4><b> {city}, {country} </b></h4>
+    
+    """
+    
+    for risk in risks:
+        if risk not in risks_dict:
+            continue
+        risk_value = risks_dict[risk]
+        if not pd.isnull(risk_value) and risk_value !=0:
+            html += f"""
+      <h4><b>{risks[risk]}</b>:{risk_value}</h4>
+   
+    """
+    html += '</p>'
+    return HTML(html)
+    
+
+for _,city in cities.iterrows():
+    location=(city['latitude'],city['longitude'])
+    html = populate_per_city(city.city, city.country, city)
+    marker = CircleMarker(location=location,fill_color = "blue",color='blue',radius=2)
+    marker.on_mouseover(mouseover_callback(marker,location, html))
+    marker.on_mouseout(mouseout_callback())
+    markers = markers + (marker,)
+    
+from utils.geo import  is_close
+
+ +
+
+
+ +
+
+
+
In [2]:
+
+
+
from classification.model_handler import ModelHandler, InvalidCoordinates
+from data.labeled.preprocessed import RISKS_MAPPING
+
+handler = ModelHandler()
+
+if not handler.is_fitted:
+    handler.train()
+    
+risks_ids = sorted(RISKS_MAPPING)
+
+
+manually_added_markers = []
+def handle_click(**kwargs):
+    if kwargs.get('type') == 'click':
+        coords = kwargs.get('coordinates')
+        try:
+            output,mask = handler.test(coords[0], coords[1])
+        except InvalidCoordinates:
+            return
+        html = populate_per_city("Close To:" + output['city'], output['country'],{k:v for k,v in output.items() if k in risks_ids})
+        marker = CircleMarker(location=coords,fill_color = "red",color='red',radius=2)
+        check = [is_close(marker.location,mark.location) for mark in manually_added_markers]
+        if not any(check):
+            
+            marker.on_mouseover(mouseover_callback(marker,coords, html))
+            marker.on_mouseout(mouseout_callback())
+            manually_added_markers.append(marker)
+            m.add_layer(marker)
+        else:
+            to_rem = [cnt for cnt,(m,c) in enumerate(zip(manually_added_markers,check)) if c][0]
+            m.remove_layer(manually_added_markers[to_rem])
+            manually_added_markers.pop(to_rem)
+            m.remove_layer(popup)
+
+m.on_interaction(handle_click)
+m.add_layer(MarkerCluster(markers = markers))
+
+ +
+
+
+ +
+
+
+
In [3]:
+
+
+
m.layout.width = '80%'
+m.layout.height = '1000px'
+m.zoom=2.2
+m.center = (0, 0)
+display(m)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + + + + + + +
+
+ + +
+ +
+ +
+ +
+ + +
+
ROU
+
+
+
+ +
+
+ +
+
+
+ + + + + + diff --git a/documentation/WaterSecurity/notebooks/combine_unlabeled.html b/documentation/WaterSecurity/notebooks/combine_unlabeled.html new file mode 100644 index 0000000..4965a90 --- /dev/null +++ b/documentation/WaterSecurity/notebooks/combine_unlabeled.html @@ -0,0 +1,13712 @@ + + + + +Notebook + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
In [13]:
+
+
+
import pandas as pd
+import sys
+sys.path.append("..")
+from data.unlabeled.preprocessed import econ, aqua, edu, humdev
+
+ +
+
+
+ +
+
+
+
+

Find out the differences in country representation

+
+
+
+
+
+
In [14]:
+
+
+
print("Aqua shape:",aqua.shape,"Econ shape:",econ.shape,"Edu shape:",edu.shape,"Humdev shape:",humdev.shape)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
Aqua shape: (200, 23) Econ shape: (149, 33) Edu shape: (241, 85) Humdev shape: (195, 67)
+
+
+
+ +
+
+ +
+
+
+
In [15]:
+
+
+
countries_diff_edu_humdev= edu.loc[set(edu.index) - set(humdev.index)]['Short Name']
+countries_diff_aqua_humd = aqua.loc[set(aqua.index) - set(humdev.index)]['Country']
+countries_not_in_humdev = countries_diff_edu_humdev.append(countries_diff_aqua_humd)
+
+ +
+
+
+ +
+
+
+
In [16]:
+
+
+
print("Extra not needed indicators in edu dataset",countries_not_in_humdev)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
Extra not needed indicators in edu dataset NAC                                     North America
+SSA              Sub-Saharan Africa (developing only)
+LIC                                        Low income
+ABW                                             Aruba
+ASM                                    American Samoa
+HIC                                       High income
+EAS           East Asia & Pacific (all income levels)
+VGB                                               NaN
+PRI                                       Puerto Rico
+ECA           Europe & Central Asia (developing only)
+LMY                               Low & middle income
+FRO                                    Faeroe Islands
+CYM                                    Cayman Islands
+UMC                               Upper middle income
+TCA                          Turks and Caicos Islands
+LDC      Least developed countries: UN classification
+OED                                      OECD members
+WLD                                             World
+CHI                                   Channel Islands
+ECS         Europe & Central Asia (all income levels)
+EAP             East Asia & Pacific (developing only)
+LMC                               Lower middle income
+VIR                                    Virgin Islands
+CUW                                           Curaçao
+GUM                                              Guam
+SAS                                        South Asia
+PYF                                  French Polynesia
+HPC            Heavily indebted poor countries (HIPC)
+LAC       Latin America & Caribbean (developing only)
+SXM                         Sint Maarten (Dutch part)
+MIC                                     Middle income
+GIB                                         Gibraltar
+LCN     Latin America & Caribbean (all income levels)
+XKX                                            Kosovo
+BMU                                           Bermuda
+ARB                                        Arab World
+SSF            Sub-Saharan Africa (all income levels)
+EMU                                         Euro area
+EUU                                    European Union
+GRL                                         Greenland
+MNP                          Northern Mariana Islands
+MNA      Middle East & North Africa (developing only)
+IMN                                       Isle of Man
+MEA    Middle East & North Africa (all income levels)
+NCL                                     New Caledonia
+MAC                                  Macao SAR, China
+NIU                                              Niue
+VAT                                          Holy See
+PRI                                       Puerto Rico
+FRO                                     Faroe Islands
+COK                                      Cook Islands
+TKL                                           Tokelau
+dtype: object
+
+
+
+ +
+
+ +
+
+
+
In [17]:
+
+
+
countries_diff_humdev_econ = set(humdev.index) - set(econ.index) 
+print("Not in humdev",countries_diff_humdev_econ)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
Not in humdev {'LKA', 'FJI', 'PLW', 'LCA', 'JAM', 'SSD', 'SMR', 'GNQ', 'TLS', 'CUB', 'LIE', 'HKG', 'GRD', 'SWZ', 'LUX', 'VUT', 'ATG', 'WSM', 'FSM', 'KNA', 'MHL', 'MCO', 'BRB', 'HTI', 'DOM', 'MDA', 'PNG', 'COM', 'SLB', 'NRU', 'TTO', 'BHS', 'VCT', 'DJI', 'BWA', 'TUV', 'MUS', 'CPV', 'SYC', 'KIR', 'MDV', 'LSO', 'STP', 'DMA', 'TON', 'NAM', 'PSE'}
+
+
+
+ +
+
+ +
+
+
+
+

Econ contains to little information and is not used in the final dataset

+
+
+
+
+
+
In [18]:
+
+
+
big_table = humdev.join(edu, how="inner").join(aqua, how="inner")
+
+ +
+
+
+ +
+
+
+
In [19]:
+
+
+
big_table.dropna(axis=1, inplace=True)
+
+ +
+
+
+ +
+
+
+
In [20]:
+
+
+
name_columns = set(big_table.columns) - set(big_table.select_dtypes(include="number").columns)
+print("Info columns",name_columns)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
Info columns {'Table Name', 'Country', 'Short Name', 'Long Name'}
+
+
+
+ +
+
+ +
+
+
+
+

Not needed labels are removed

+
+
+
+
+
+
In [21]:
+
+
+
big_table.drop(['Short Name','Long Name','Table Name'],inplace=True, axis=1)
+
+ +
+
+
+ +
+
+
+
In [22]:
+
+
+
big_table
+
+ +
+
+
+ +
+
+ + +
+ +
Out[22]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Population with at least some secondary education (% ages 25 and older)Population with at least some secondary education, female (% ages 25 and older)Population with at least some secondary education, male (% ages 25 and older)Mean years of schooling, female (years)Mean years of schooling, male (years)Share of seats in parliament (% held by women)Adolescent birth rate (births per 1,000 women ages 15-19)Vulnerable employment (% of total employment)Total population (millions)Urban population (%)...SDG 6.4.1. Services Water Use EfficiencySDG 6.4.1. Water Use EfficiencySDG 6.4.2. Water StressSeasonal variability (WRI)Total internal renewable water resources per capitaTotal population with access to safe drinking-water (JMP)Total renewable water resources per capitaTotal water withdrawal per capitaUrban population with access to safe drinking-water (JMP)Country
AFG26.08013.22036.9201.948006.00600027.24468.95700079.72600038.04225.8...57.1486220.92377854.7570192.5000001299.03717255.31799.917253561.29701878.2Afghanistan
AGO30.23223.13338.0564.023006.35900030.000150.52600065.99500031.82566.2...167.030879142.4678361.8718833.1000004963.65031749.04977.06558823.67124675.4Angola
ALB93.17493.70092.4979.7020010.61400029.50819.64200052.8520002.88161.2...21.8522396.6569077.1394232.4000009326.77662195.110470.953679492.27351194.9Albania
AND72.32771.48473.32710.4390010.56400046.42918.2663344.4610350.07788.0...146.63270986.30042669.0338091.6000004098.648070100.04098.648070422.680401100.0Andorra
ARG57.15859.16154.82811.1230010.72900039.87762.78200021.80500044.78192.0...65.05495613.61656410.4566641.8000006645.85815199.119943.036802859.86479899.0Argentina
..................................................................
WSM74.94279.12771.58311.1628710.41524910.00023.88600029.9830000.19718.1...157.70594689.40181169.0281702.092752-2094.18671599.00.000000413.38130697.5Samoa
YEM28.02019.92036.9182.880005.1460000.97160.35200045.62700029.16237.3...47.0234115.219357169.7619052.40000075.44507554.975.445075128.07699672.0Yemen
ZAF75.47874.97778.20710.0310010.29100045.33367.90800010.29800058.55866.9...53.51851414.65909762.0557162.100000785.83041193.2900.723027339.94181699.6South Africa
ZMB44.44038.48854.0686.283008.17600017.964120.11200078.13400017.86144.1...43.21736612.7648942.8354984.4000004758.62751965.46218.25640993.27384685.6Zambia
ZWE64.93559.79270.7838.066008.92300034.57186.13500064.73900014.64532.2...27.1944885.21332931.3462263.700000861.16097376.91404.830298234.54344297.0Zimbabwe
+

194 rows × 144 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [23]:
+
+
+
big_table.to_csv("../data/unlabeled/preprocessed_countries_dataset.csv")
+
+ +
+
+
+ +
+
+
+ + + + + + diff --git a/documentation/WaterSecurity/notebooks/prep_aquastat-checkpoint.html b/documentation/WaterSecurity/notebooks/prep_aquastat-checkpoint.html new file mode 100644 index 0000000..aea5b84 --- /dev/null +++ b/documentation/WaterSecurity/notebooks/prep_aquastat-checkpoint.html @@ -0,0 +1,15521 @@ + + + + +Notebook + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
In [1]:
+
+
+
import pandas as pd
+import sklearn
+from helpers import *
+import matplotlib.pyplot as plt
+import sys
+sys.path.append("..")
+from data.unlabeled import aquastat_eah, aquastat_wr, aquastat_wu, aquastat_cc
+import seaborn as sns
+import os
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
..\data\unlabeled\__init__.py:41: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.
+  aquastat_eah = pd.read_csv(aquastat_eah_path, skipfooter=8)
+..\data\unlabeled\__init__.py:42: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.
+  aquastat_wr = pd.read_csv(aquastat_wr_path, skipfooter=8)
+..\data\unlabeled\__init__.py:43: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.
+  aquastat_wu = pd.read_csv(aquastat_wu_path, skipfooter=8)
+
+
+
+ +
+
+ +
+
+
+
In [2]:
+
+
+
aquastat_wr
+
+ +
+
+
+ +
+
+ + +
+ +
Out[2]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AreaArea IdVariable NameVariable IdYearValueSymbolMd
0Afghanistan4National Rainfall Index (NRI)44722017185.000000I0
1Afghanistan4Total internal renewable water resources per c...415820171299.037172E0
2Afghanistan4Dependency ratio4192201728.722600E0
3Afghanistan4Total renewable water resources per capita419020171799.917253E0
4Afghanistan4Interannual variability (WRI)454120172.500000I0
...........................
1224Zimbabwe716Dependency ratio4192201738.700000E0
1225Zimbabwe716Total renewable water resources per capita419020171404.830298E0
1226Zimbabwe716Interannual variability (WRI)454120173.100000I0
1227Zimbabwe716Seasonal variability (WRI)454220173.700000I0
1228Zimbabwe716Dam capacity per capita447120177019.230792E0
+

1229 rows × 8 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [3]:
+
+
+
aquastat_wu
+
+ +
+
+
+ +
+
+ + +
+ +
Out[3]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AreaArea IdVariable NameVariable IdYearValueSymbolMd
0Afghanistan4Agricultural water withdrawal as % of total wa...4254201798.169627E0
1Afghanistan4Industrial water withdrawal as % of total wate...425620170.831988E0
2Afghanistan4Municipal water withdrawal as % of total withd...425520170.998385E0
3Afghanistan4Total water withdrawal per capita42572017561.297018E0
4Afghanistan4MDG 7.5. Freshwater withdrawal as % of total r...4275201731.045462I0
...........................
1946Zimbabwe716SDG 6.4.2. Water Stress4550201731.346226E0
1947Zimbabwe716SDG 6.4.1. Water Use Efficiency455120175.213329I0
1948Zimbabwe716SDG 6.4.1. Irrigated Agriculture Water Use Eff...455220170.050244E0
1949Zimbabwe716SDG 6.4.1. Industrial Water Use Efficiency4553201749.212523E0
1950Zimbabwe716SDG 6.4.1. Services Water Use Efficiency4554201727.194488E0
+

1951 rows × 8 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [4]:
+
+
+
aquastat_eah
+
+ +
+
+
+ +
+
+ + +
+ +
Out[4]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AreaArea IdVariable NameVariable IdYearValueSymbolMd
0Afghanistan4Total population4104201736296.113X0
1Afghanistan4Rural population4105201726558.609X0
2Afghanistan4Urban population410620178971.472X0
3Afghanistan4Flood occurrence (WRI)454320173.700I0
4Afghanistan4Total population with access to safe drinking-...4114201755.300I0
...........................
1440Zimbabwe716Urban population410620175328.766X0
1441Zimbabwe716Flood occurrence (WRI)454320172.800I0
1442Zimbabwe716Total population with access to safe drinking-...4114201776.900I0
1443Zimbabwe716Rural population with access to safe drinking-...4115201767.300I0
1444Zimbabwe716Urban population with access to safe drinking-...4116201797.000I0
+

1445 rows × 8 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [5]:
+
+
+
aquastat_cc
+
+ +
+
+
+ +
+
+ + +
+ +
Out[5]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CodeCountry
0AFGAfghanistan
1ALBAlbania
2DZAAlgeria
3ANDAndorra
4AGOAngola
.........
195VENVenezuela (Bolivarian Republic of)
196VNMViet Nam
197YEMYemen
198ZMBZambia
199ZWEZimbabwe
+

200 rows × 2 columns

+
+
+ +
+ +
+
+ +
+
+
+
+

All data should be fairly similar - everything can be merged

+
+
+
+
+
+
In [6]:
+
+
+
alldf = pd.concat([aquastat_eah,aquastat_wu,aquastat_wr])
+alldf
+
+ +
+
+
+ +
+
+ + +
+ +
Out[6]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AreaArea IdVariable NameVariable IdYearValueSymbolMd
0Afghanistan4Total population4104201736296.113000X0
1Afghanistan4Rural population4105201726558.609000X0
2Afghanistan4Urban population410620178971.472000X0
3Afghanistan4Flood occurrence (WRI)454320173.700000I0
4Afghanistan4Total population with access to safe drinking-...4114201755.300000I0
...........................
1224Zimbabwe716Dependency ratio4192201738.700000E0
1225Zimbabwe716Total renewable water resources per capita419020171404.830298E0
1226Zimbabwe716Interannual variability (WRI)454120173.100000I0
1227Zimbabwe716Seasonal variability (WRI)454220173.700000I0
1228Zimbabwe716Dam capacity per capita447120177019.230792E0
+

4625 rows × 8 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [7]:
+
+
+
alldf.info()
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
<class 'pandas.core.frame.DataFrame'>
+Int64Index: 4625 entries, 0 to 1228
+Data columns (total 8 columns):
+ #   Column         Non-Null Count  Dtype  
+---  ------         --------------  -----  
+ 0   Area           4625 non-null   object 
+ 1   Area Id        4625 non-null   int64  
+ 2   Variable Name  4625 non-null   object 
+ 3   Variable Id    4625 non-null   int64  
+ 4   Year           4625 non-null   int64  
+ 5   Value          4622 non-null   float64
+ 6   Symbol         4603 non-null   object 
+ 7   Md             4625 non-null   int64  
+dtypes: float64(1), int64(4), object(3)
+memory usage: 325.2+ KB
+
+
+
+ +
+
+ +
+
+
+
+

These are the different symbols found in the dataset

    +
  • No symbol: Official value, data come from one national source (FAO questionnaire on water and agriculture, report, publication, official website, etc.) .
  • +
  • E: Estimate either calculated as sum or identify (yield) from official values or from an AQUASTAT estimation.
  • +
  • I: Imputed (carry forward, vertical imputation, linear interpolation)*.
  • +
  • X: External value (reported by FAOSTAT or another international agency)**.
  • +
+ +
+
+
+
+
+
In [8]:
+
+
+
alldf[alldf['Symbol'] == "I"]
+
+ +
+
+
+ +
+
+ + +
+ +
Out[8]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AreaArea IdVariable NameVariable IdYearValueSymbolMd
3Afghanistan4Flood occurrence (WRI)454320173.7I0
4Afghanistan4Total population with access to safe drinking-...4114201755.3I0
5Afghanistan4Rural population with access to safe drinking-...4115201747.0I0
6Afghanistan4Urban population with access to safe drinking-...4116201778.2I0
11Albania8Flood occurrence (WRI)454320172.7I0
...........................
1219Zambia894Interannual variability (WRI)454120172.1I0
1220Zambia894Seasonal variability (WRI)454220174.4I0
1222Zimbabwe716National Rainfall Index (NRI)44722017722.5I0
1226Zimbabwe716Interannual variability (WRI)454120173.1I0
1227Zimbabwe716Seasonal variability (WRI)454220173.7I0
+

1939 rows × 8 columns

+
+
+ +
+ +
+
+ +
+
+
+
+

Explore the three missing values

+
+
+
+
+
+
In [9]:
+
+
+
alldf[alldf['Value'].isna()]
+
+ +
+
+
+ +
+
+ + +
+ +
Out[9]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AreaArea IdVariable NameVariable IdYearValueSymbolMd
841Monaco492Rural population with access to safe drinking-...41152000NaNNaN0
865Morocco504Population affected by water related disease44032000NaNNaN5293
22Andorra20Dependency ratio41922007NaNNaN0
+
+
+ +
+ +
+
+ +
+
+
+
+

Create country x idicator dataframe

+
+
+
+
+
+
In [10]:
+
+
+
countryXindicator = alldf.pivot_table('Value',['Area'],'Variable Name')
+countryXindicator
+
+ +
+
+
+ +
+
+ + +
+ +
Out[10]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Variable Name% of area equipped for irrigation salinizedAgricultural water withdrawal as % of total renewable water resourcesAgricultural water withdrawal as % of total water withdrawalDam capacity per capitaDependency ratioFlood occurrence (WRI)Industrial water withdrawal as % of total water withdrawalInterannual variability (WRI)MDG 7.5. Freshwater withdrawal as % of total renewable water resourcesMunicipal water withdrawal as % of total withdrawal...SDG 6.4.1. Water Use EfficiencySDG 6.4.2. Water StressSeasonal variability (WRI)Total internal renewable water resources per capitaTotal populationTotal population with access to safe drinking-water (JMP)Total renewable water resources per capitaTotal water withdrawal per capitaUrban populationUrban population with access to safe drinking-water (JMP)
Area
AfghanistanNaN30.61380798.16962755.35028028.7226003.70.8319882.531.0454620.998385...0.92377854.7570192.51299.03717236296.11355.31799.917253561.2970188971.47278.2
Albania3.0224722.99668963.7413721397.28289210.9271522.716.3262431.23.93377519.932385...6.6569077.1394232.49326.7766212884.16995.110470.953679492.2735111740.03294.9
AlgeriaNaN57.17836663.764099208.2488263.5998972.81.8256552.384.01474234.410247...14.354620137.9203601.9271.73762741389.18983.6281.885204252.77132229770.61084.3
AndorraNaNNaNNaNNaNNaN3.3NaN1.5NaNNaN...NaNNaN1.64098.64807077.001100.04098.648070NaN67.845100.0
AngolaNaN0.09885420.784925316.7751320.2695421.733.9472942.50.47553945.267781...142.4678361.8718833.14963.65031729816.76649.04977.06558823.67124619311.63975.4
..................................................................
Venezuela (Bolivarian Republic of)NaN1.26113273.8521105360.96542039.2452832.73.5060972.71.70725322.641793...9.5571907.5403672.327378.63916529402.48493.145064.219744769.53702328198.25195.0
Viet Nam6.5429338.79405594.782397472.67741859.3471473.83.7474090.79.2591501.470194...2.34944818.1303153.23799.33972594600.64897.69345.813361867.11879633642.49899.1
YemenNaN154.04761990.74333816.6158800.0000002.91.8232824.9169.7619057.433380...5.219357169.7619052.475.44507527834.81954.975.445075128.07699610174.61272.0
ZambiaNaN1.09923773.2824436000.70050323.4732822.58.2697202.11.50000018.447837...12.7648942.8354984.44758.62751916853.59965.46218.25640993.2738467346.42185.6
ZimbabweNaN13.85000082.9564857019.23079238.7000002.82.4377833.116.69500014.605732...5.21332931.3462263.7861.16097314236.59576.91404.830298234.5434425328.76697.0
+

200 rows × 27 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [11]:
+
+
+
countryXindicator.drop(['Urban population','Total population','Rural population'], inplace=True, axis=1)
+
+ +
+
+
+ +
+
+
+
In [12]:
+
+
+
countryXindicator.shape
+
+ +
+
+
+ +
+
+ + +
+ +
Out[12]:
+ + + + +
+
(200, 24)
+
+ +
+ +
+
+ +
+
+
+
In [13]:
+
+
+
print_missing_percentages(countryXindicator)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
Max, min and mean number of missing values for the columns
+Max: 84.0 %
+Min: 1.5 %
+Mean: 16.208333333333332 %
+
+
+
+ +
+ +
Out[13]:
+ + + + +
+
(1.5, 84.0)
+
+ +
+ +
+
+ +
+
+
+
+

Drop columns that has to many missing values

+
+
+
+
+
+
In [14]:
+
+
+
dropColumnHalf(countryXindicator)
+
+ +
+
+
+ +
+
+
+
In [15]:
+
+
+
print_missing_percentages(countryXindicator)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
Max, min and mean number of missing values for the columns
+Max: 20.5 %
+Min: 1.5 %
+Mean: 10.545454545454545 %
+
+
+
+ +
+ +
Out[15]:
+ + + + +
+
(1.5, 20.5)
+
+ +
+ +
+
+ +
+
+
+
In [16]:
+
+
+
countryXindicator.shape
+
+ +
+
+
+ +
+
+ + +
+ +
Out[16]:
+ + + + +
+
(200, 22)
+
+ +
+ +
+
+ +
+
+
+
+

Impute the missing values

+
+
+
+
+
+
In [17]:
+
+
+
imputed_countryXindicator = impute_df(countryXindicator, verbose=2, max_iter=20)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
[IterativeImputer] Completing matrix with shape (200, 22)
+[IterativeImputer] Ending imputation round 1/20, elapsed time 0.04
+[IterativeImputer] Change: 17738.817690565473, scaled tolerance: 508.38384774800903 
+[IterativeImputer] Ending imputation round 2/20, elapsed time 0.08
+[IterativeImputer] Change: 240.05853395982552, scaled tolerance: 508.38384774800903 
+[IterativeImputer] Early stopping criterion reached.
+[IterativeImputer] Completing matrix with shape (200, 22)
+[IterativeImputer] Ending imputation round 1/2, elapsed time 0.00
+[IterativeImputer] Ending imputation round 2/2, elapsed time 0.01
+
+
+
+ +
+
+ +
+
+
+
+

Check the correlation for the imputed and non-imputed dataset

+
+
+
+
+
+
In [18]:
+
+
+
corr_calc = countryXindicator.corr()
+sns.heatmap(corr_calc, vmin=-1, vmax=1, center=0, xticklabels=False, yticklabels=False, cmap='mako')
+
+ +
+
+
+ +
+
+ + +
+ +
Out[18]:
+ + + + +
+
<AxesSubplot:xlabel='Variable Name', ylabel='Variable Name'>
+
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +
+
+ +
+
+
+
In [19]:
+
+
+
corr_calc = imputed_countryXindicator.corr()
+sns.heatmap(corr_calc, vmin=-1, vmax=1, center=0, xticklabels=False, yticklabels=False, cmap='mako')
+
+ +
+
+
+ +
+
+ + +
+ +
Out[19]:
+ + + + +
+
<AxesSubplot:xlabel='Variable Name', ylabel='Variable Name'>
+
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +
+
+ +
+
+
+
In [ ]:
+
+
+
 
+
+ +
+
+
+ +
+
+
+
In [20]:
+
+
+
merged = imputed_countryXindicator.merge(aquastat_cc, how='inner', left_on="Area", right_on="Country").set_index("Code")
+
+ +
+
+
+ +
+
+
+
In [21]:
+
+
+
merged
+
+ +
+
+
+ +
+
+ + +
+ +
Out[21]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Agricultural water withdrawal as % of total renewable water resourcesAgricultural water withdrawal as % of total water withdrawalDam capacity per capitaDependency ratioFlood occurrence (WRI)Industrial water withdrawal as % of total water withdrawalInterannual variability (WRI)MDG 7.5. Freshwater withdrawal as % of total renewable water resourcesMunicipal water withdrawal as % of total withdrawalNational Rainfall Index (NRI)...SDG 6.4.1. Services Water Use EfficiencySDG 6.4.1. Water Use EfficiencySDG 6.4.2. Water StressSeasonal variability (WRI)Total internal renewable water resources per capitaTotal population with access to safe drinking-water (JMP)Total renewable water resources per capitaTotal water withdrawal per capitaUrban population with access to safe drinking-water (JMP)Country
Code
AFG30.61380798.16962755.35028028.7226003.70.8319882.531.0454620.998385185.000000...57.1486220.92377854.7570192.51299.03717255.31799.917253561.29701878.2Afghanistan
ALB2.99668963.7413721397.28289210.9271522.716.3262431.23.93377519.9323851136.000000...21.8522396.6569077.1394232.49326.77662195.110470.953679492.27351194.9Albania
DZA57.17836663.764099208.2488263.5998972.81.8256552.384.01474234.410247241.500000...23.06878714.354620137.9203601.9271.73762783.6281.885204252.77132284.3Algeria
AND57.77107853.096413996.17713620.8662623.318.1687561.560.12262628.7348301071.311544...146.63270986.30042669.0338091.64098.648070100.04098.648070422.680401100.0Andorra
AGO0.09885420.784925316.7751320.2695421.733.9472942.50.47553945.2677811137.000000...167.030879142.4678361.8718833.14963.65031749.04977.06558823.67124675.4Angola
..................................................................
VEN1.26113273.8521105360.96542039.2452832.73.5060972.71.70725322.6417931813.000000...25.3044729.5571907.5403672.327378.63916593.145064.219744769.53702395.0Venezuela (Bolivarian Republic of)
VNM8.79405594.782397472.67741859.3471473.83.7474090.79.2591501.4701941991.000000...83.8407912.34944818.1303153.23799.33972597.69345.813361867.11879699.1Viet Nam
YEM154.04761990.74333816.6158800.0000002.91.8232824.9169.7619057.433380232.700000...47.0234115.219357169.7619052.475.44507554.975.445075128.07699672.0Yemen
ZMB1.09923773.2824436000.70050323.4732822.58.2697202.11.50000018.4478371065.000000...43.21736612.7648942.8354984.44758.62751965.46218.25640993.27384685.6Zambia
ZWE13.85000082.9564857019.23079238.7000002.82.4377833.116.69500014.605732722.500000...27.1944885.21332931.3462263.7861.16097376.91404.830298234.54344297.0Zimbabwe
+

200 rows × 23 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [22]:
+
+
+
!dir
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
 Volume in drive C is Windows
+ Volume Serial Number is A8E6-B474
+
+ Directory of C:\Users\joach\code-projects\WaterSecurity\unlabeled_preprocessing
+
+12/05/2021  08:21    <DIR>          .
+12/05/2021  08:21    <DIR>          ..
+12/05/2021  08:11    <DIR>          .ipynb_checkpoints
+11/05/2021  15:21             1,709 helpers.py
+12/05/2021  08:21           136,834 prep_aquastat.ipynb
+11/05/2021  15:21            47,960 prep_economic_v2.ipynb
+11/05/2021  15:21           400,714 prep_edstats.ipynb
+11/05/2021  15:21         2,790,867 prep_hdro_v2.ipynb
+11/05/2021  15:21                 0 __init__.py
+11/05/2021  15:28    <DIR>          __pycache__
+               6 File(s)      3,378,084 bytes
+               4 Dir(s)  838,000,263,168 bytes free
+
+
+
+ +
+
+ +
+
+
+
In [23]:
+
+
+
merged.to_csv("../data/unlabeled/aquastat_preprocessed.csv")
+
+ +
+
+
+ +
+
+
+
In [ ]:
+
+
+
 
+
+ +
+
+
+ +
+
+
+ + + + + + diff --git a/documentation/WaterSecurity/notebooks/prep_aquastat.html b/documentation/WaterSecurity/notebooks/prep_aquastat.html new file mode 100644 index 0000000..1218dcc --- /dev/null +++ b/documentation/WaterSecurity/notebooks/prep_aquastat.html @@ -0,0 +1,15522 @@ + + + + +Notebook + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
In [1]:
+
+
+
import pandas as pd
+import sklearn
+from helpers import *
+import matplotlib.pyplot as plt
+import sys
+sys.path.append("..")
+from data.unlabeled.raw import aquastat_eah, aquastat_wr, aquastat_wu, aquastat_cc
+import seaborn as sns
+import os
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
..\data\unlabeled\raw\__init__.py:41: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.
+  aquastat_eah = pd.read_csv(aquastat_eah_path, skipfooter=8)
+..\data\unlabeled\raw\__init__.py:42: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.
+  aquastat_wr = pd.read_csv(aquastat_wr_path, skipfooter=8)
+..\data\unlabeled\raw\__init__.py:43: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.
+  aquastat_wu = pd.read_csv(aquastat_wu_path, skipfooter=8)
+
+
+
+ +
+
+ +
+
+
+
In [2]:
+
+
+
aquastat_wr
+
+ +
+
+
+ +
+
+ + +
+ +
Out[2]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AreaArea IdVariable NameVariable IdYearValueSymbolMd
0Afghanistan4National Rainfall Index (NRI)44722017185.000000I0
1Afghanistan4Total internal renewable water resources per c...415820171299.037172E0
2Afghanistan4Dependency ratio4192201728.722600E0
3Afghanistan4Total renewable water resources per capita419020171799.917253E0
4Afghanistan4Interannual variability (WRI)454120172.500000I0
...........................
1224Zimbabwe716Dependency ratio4192201738.700000E0
1225Zimbabwe716Total renewable water resources per capita419020171404.830298E0
1226Zimbabwe716Interannual variability (WRI)454120173.100000I0
1227Zimbabwe716Seasonal variability (WRI)454220173.700000I0
1228Zimbabwe716Dam capacity per capita447120177019.230792E0
+

1229 rows × 8 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [3]:
+
+
+
aquastat_wu
+
+ +
+
+
+ +
+
+ + +
+ +
Out[3]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AreaArea IdVariable NameVariable IdYearValueSymbolMd
0Afghanistan4Agricultural water withdrawal as % of total wa...4254201798.169627E0
1Afghanistan4Industrial water withdrawal as % of total wate...425620170.831988E0
2Afghanistan4Municipal water withdrawal as % of total withd...425520170.998385E0
3Afghanistan4Total water withdrawal per capita42572017561.297018E0
4Afghanistan4MDG 7.5. Freshwater withdrawal as % of total r...4275201731.045462I0
...........................
1946Zimbabwe716SDG 6.4.2. Water Stress4550201731.346226E0
1947Zimbabwe716SDG 6.4.1. Water Use Efficiency455120175.213329I0
1948Zimbabwe716SDG 6.4.1. Irrigated Agriculture Water Use Eff...455220170.050244E0
1949Zimbabwe716SDG 6.4.1. Industrial Water Use Efficiency4553201749.212523E0
1950Zimbabwe716SDG 6.4.1. Services Water Use Efficiency4554201727.194488E0
+

1951 rows × 8 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [4]:
+
+
+
aquastat_eah
+
+ +
+
+
+ +
+
+ + +
+ +
Out[4]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AreaArea IdVariable NameVariable IdYearValueSymbolMd
0Afghanistan4Total population4104201736296.113X0
1Afghanistan4Rural population4105201726558.609X0
2Afghanistan4Urban population410620178971.472X0
3Afghanistan4Flood occurrence (WRI)454320173.700I0
4Afghanistan4Total population with access to safe drinking-...4114201755.300I0
...........................
1440Zimbabwe716Urban population410620175328.766X0
1441Zimbabwe716Flood occurrence (WRI)454320172.800I0
1442Zimbabwe716Total population with access to safe drinking-...4114201776.900I0
1443Zimbabwe716Rural population with access to safe drinking-...4115201767.300I0
1444Zimbabwe716Urban population with access to safe drinking-...4116201797.000I0
+

1445 rows × 8 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [5]:
+
+
+
aquastat_cc
+
+ +
+
+
+ +
+
+ + +
+ +
Out[5]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CodeCountry
0AFGAfghanistan
1ALBAlbania
2DZAAlgeria
3ANDAndorra
4AGOAngola
.........
195VENVenezuela (Bolivarian Republic of)
196VNMViet Nam
197YEMYemen
198ZMBZambia
199ZWEZimbabwe
+

200 rows × 2 columns

+
+
+ +
+ +
+
+ +
+
+
+
+

All data should be fairly similar - everything can be merged

+
+
+
+
+
+
In [6]:
+
+
+
alldf = pd.concat([aquastat_eah,aquastat_wu,aquastat_wr])
+alldf
+
+ +
+
+
+ +
+
+ + +
+ +
Out[6]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AreaArea IdVariable NameVariable IdYearValueSymbolMd
0Afghanistan4Total population4104201736296.113000X0
1Afghanistan4Rural population4105201726558.609000X0
2Afghanistan4Urban population410620178971.472000X0
3Afghanistan4Flood occurrence (WRI)454320173.700000I0
4Afghanistan4Total population with access to safe drinking-...4114201755.300000I0
...........................
1224Zimbabwe716Dependency ratio4192201738.700000E0
1225Zimbabwe716Total renewable water resources per capita419020171404.830298E0
1226Zimbabwe716Interannual variability (WRI)454120173.100000I0
1227Zimbabwe716Seasonal variability (WRI)454220173.700000I0
1228Zimbabwe716Dam capacity per capita447120177019.230792E0
+

4625 rows × 8 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [7]:
+
+
+
alldf.info()
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
<class 'pandas.core.frame.DataFrame'>
+Int64Index: 4625 entries, 0 to 1228
+Data columns (total 8 columns):
+ #   Column         Non-Null Count  Dtype  
+---  ------         --------------  -----  
+ 0   Area           4625 non-null   object 
+ 1   Area Id        4625 non-null   int64  
+ 2   Variable Name  4625 non-null   object 
+ 3   Variable Id    4625 non-null   int64  
+ 4   Year           4625 non-null   int64  
+ 5   Value          4622 non-null   float64
+ 6   Symbol         4603 non-null   object 
+ 7   Md             4625 non-null   int64  
+dtypes: float64(1), int64(4), object(3)
+memory usage: 325.2+ KB
+
+
+
+ +
+
+ +
+
+
+
+

These are the different symbols found in the dataset

    +
  • No symbol: Official value, data come from one national source (FAO questionnaire on water and agriculture, report, publication, official website, etc.) .
  • +
  • E: Estimate either calculated as sum or identify (yield) from official values or from an AQUASTAT estimation.
  • +
  • I: Imputed (carry forward, vertical imputation, linear interpolation)*.
  • +
  • X: External value (reported by FAOSTAT or another international agency)**.
  • +
+ +
+
+
+
+
+
In [8]:
+
+
+
alldf[alldf['Symbol'] == "I"]
+
+ +
+
+
+ +
+
+ + +
+ +
Out[8]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AreaArea IdVariable NameVariable IdYearValueSymbolMd
3Afghanistan4Flood occurrence (WRI)454320173.7I0
4Afghanistan4Total population with access to safe drinking-...4114201755.3I0
5Afghanistan4Rural population with access to safe drinking-...4115201747.0I0
6Afghanistan4Urban population with access to safe drinking-...4116201778.2I0
11Albania8Flood occurrence (WRI)454320172.7I0
...........................
1219Zambia894Interannual variability (WRI)454120172.1I0
1220Zambia894Seasonal variability (WRI)454220174.4I0
1222Zimbabwe716National Rainfall Index (NRI)44722017722.5I0
1226Zimbabwe716Interannual variability (WRI)454120173.1I0
1227Zimbabwe716Seasonal variability (WRI)454220173.7I0
+

1939 rows × 8 columns

+
+
+ +
+ +
+
+ +
+
+
+
+

Explore the three missing values

+
+
+
+
+
+
In [9]:
+
+
+
alldf[alldf['Value'].isna()]
+
+ +
+
+
+ +
+
+ + +
+ +
Out[9]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AreaArea IdVariable NameVariable IdYearValueSymbolMd
841Monaco492Rural population with access to safe drinking-...41152000NaNNaN0
865Morocco504Population affected by water related disease44032000NaNNaN5293
22Andorra20Dependency ratio41922007NaNNaN0
+
+
+ +
+ +
+
+ +
+
+
+
+

Create country x idicator dataframe

+
+
+
+
+
+
In [10]:
+
+
+
countryXindicator = alldf.pivot_table('Value',['Area'],'Variable Name')
+countryXindicator
+
+ +
+
+
+ +
+
+ + +
+ +
Out[10]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Variable Name% of area equipped for irrigation salinizedAgricultural water withdrawal as % of total renewable water resourcesAgricultural water withdrawal as % of total water withdrawalDam capacity per capitaDependency ratioFlood occurrence (WRI)Industrial water withdrawal as % of total water withdrawalInterannual variability (WRI)MDG 7.5. Freshwater withdrawal as % of total renewable water resourcesMunicipal water withdrawal as % of total withdrawal...SDG 6.4.1. Water Use EfficiencySDG 6.4.2. Water StressSeasonal variability (WRI)Total internal renewable water resources per capitaTotal populationTotal population with access to safe drinking-water (JMP)Total renewable water resources per capitaTotal water withdrawal per capitaUrban populationUrban population with access to safe drinking-water (JMP)
Area
AfghanistanNaN30.61380798.16962755.35028028.7226003.70.8319882.531.0454620.998385...0.92377854.7570192.51299.03717236296.11355.31799.917253561.2970188971.47278.2
Albania3.0224722.99668963.7413721397.28289210.9271522.716.3262431.23.93377519.932385...6.6569077.1394232.49326.7766212884.16995.110470.953679492.2735111740.03294.9
AlgeriaNaN57.17836663.764099208.2488263.5998972.81.8256552.384.01474234.410247...14.354620137.9203601.9271.73762741389.18983.6281.885204252.77132229770.61084.3
AndorraNaNNaNNaNNaNNaN3.3NaN1.5NaNNaN...NaNNaN1.64098.64807077.001100.04098.648070NaN67.845100.0
AngolaNaN0.09885420.784925316.7751320.2695421.733.9472942.50.47553945.267781...142.4678361.8718833.14963.65031729816.76649.04977.06558823.67124619311.63975.4
..................................................................
Venezuela (Bolivarian Republic of)NaN1.26113273.8521105360.96542039.2452832.73.5060972.71.70725322.641793...9.5571907.5403672.327378.63916529402.48493.145064.219744769.53702328198.25195.0
Viet Nam6.5429338.79405594.782397472.67741859.3471473.83.7474090.79.2591501.470194...2.34944818.1303153.23799.33972594600.64897.69345.813361867.11879633642.49899.1
YemenNaN154.04761990.74333816.6158800.0000002.91.8232824.9169.7619057.433380...5.219357169.7619052.475.44507527834.81954.975.445075128.07699610174.61272.0
ZambiaNaN1.09923773.2824436000.70050323.4732822.58.2697202.11.50000018.447837...12.7648942.8354984.44758.62751916853.59965.46218.25640993.2738467346.42185.6
ZimbabweNaN13.85000082.9564857019.23079238.7000002.82.4377833.116.69500014.605732...5.21332931.3462263.7861.16097314236.59576.91404.830298234.5434425328.76697.0
+

200 rows × 27 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [11]:
+
+
+
countryXindicator.drop(['Urban population','Total population','Rural population'], inplace=True, axis=1)
+
+ +
+
+
+ +
+
+
+
In [12]:
+
+
+
countryXindicator.shape
+
+ +
+
+
+ +
+
+ + +
+ +
Out[12]:
+ + + + +
+
(200, 24)
+
+ +
+ +
+
+ +
+
+
+
In [13]:
+
+
+
print_missing_percentages(countryXindicator)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
Max, min and mean number of missing values for the columns
+Max: 84.0 %
+Min: 1.5 %
+Mean: 16.208333333333332 %
+
+
+
+ +
+ +
Out[13]:
+ + + + +
+
(1.5, 84.0)
+
+ +
+ +
+
+ +
+
+
+
+

Drop columns that has to many missing values

+
+
+
+
+
+
In [14]:
+
+
+
dropColumnHalf(countryXindicator)
+
+ +
+
+
+ +
+
+
+
In [15]:
+
+
+
print_missing_percentages(countryXindicator)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
Max, min and mean number of missing values for the columns
+Max: 20.5 %
+Min: 1.5 %
+Mean: 10.545454545454545 %
+
+
+
+ +
+ +
Out[15]:
+ + + + +
+
(1.5, 20.5)
+
+ +
+ +
+
+ +
+
+
+
In [16]:
+
+
+
countryXindicator.shape
+
+ +
+
+
+ +
+
+ + +
+ +
Out[16]:
+ + + + +
+
(200, 22)
+
+ +
+ +
+
+ +
+
+
+
+

Impute the missing values

+
+
+
+
+
+
In [17]:
+
+
+
imputed_countryXindicator = impute_df(countryXindicator, verbose=2, max_iter=20)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
[IterativeImputer] Completing matrix with shape (200, 22)
+[IterativeImputer] Ending imputation round 1/20, elapsed time 0.04
+[IterativeImputer] Change: 17738.817690565473, scaled tolerance: 508.38384774800903 
+[IterativeImputer] Ending imputation round 2/20, elapsed time 0.07
+[IterativeImputer] Change: 240.05853395982552, scaled tolerance: 508.38384774800903 
+[IterativeImputer] Early stopping criterion reached.
+[IterativeImputer] Completing matrix with shape (200, 22)
+[IterativeImputer] Ending imputation round 1/2, elapsed time 0.00
+[IterativeImputer] Ending imputation round 2/2, elapsed time 0.01
+
+
+
+ +
+
+ +
+
+
+
+

Check the correlation for the imputed and non-imputed dataset

+
+
+
+
+
+
In [18]:
+
+
+
corr_calc = countryXindicator.corr()
+sns.heatmap(corr_calc, vmin=-1, vmax=1, center=0, xticklabels=False, yticklabels=False, cmap='mako')
+
+ +
+
+
+ +
+
+ + +
+ +
Out[18]:
+ + + + +
+
<AxesSubplot:xlabel='Variable Name', ylabel='Variable Name'>
+
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +
+
+ +
+
+
+
In [19]:
+
+
+
corr_calc = imputed_countryXindicator.corr()
+sns.heatmap(corr_calc, vmin=-1, vmax=1, center=0, xticklabels=False, yticklabels=False, cmap='mako')
+
+ +
+
+
+ +
+
+ + +
+ +
Out[19]:
+ + + + +
+
<AxesSubplot:xlabel='Variable Name', ylabel='Variable Name'>
+
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +
+
+ +
+
+
+
In [ ]:
+
+
+
 
+
+ +
+
+
+ +
+
+
+
In [20]:
+
+
+
merged = imputed_countryXindicator.merge(aquastat_cc, how='inner', left_on="Area", right_on="Country").set_index("Code")
+
+ +
+
+
+ +
+
+
+
In [21]:
+
+
+
merged
+
+ +
+
+
+ +
+
+ + +
+ +
Out[21]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Agricultural water withdrawal as % of total renewable water resourcesAgricultural water withdrawal as % of total water withdrawalDam capacity per capitaDependency ratioFlood occurrence (WRI)Industrial water withdrawal as % of total water withdrawalInterannual variability (WRI)MDG 7.5. Freshwater withdrawal as % of total renewable water resourcesMunicipal water withdrawal as % of total withdrawalNational Rainfall Index (NRI)...SDG 6.4.1. Services Water Use EfficiencySDG 6.4.1. Water Use EfficiencySDG 6.4.2. Water StressSeasonal variability (WRI)Total internal renewable water resources per capitaTotal population with access to safe drinking-water (JMP)Total renewable water resources per capitaTotal water withdrawal per capitaUrban population with access to safe drinking-water (JMP)Country
Code
AFG30.61380798.16962755.35028028.7226003.70.8319882.531.0454620.998385185.000000...57.1486220.92377854.7570192.51299.03717255.31799.917253561.29701878.2Afghanistan
ALB2.99668963.7413721397.28289210.9271522.716.3262431.23.93377519.9323851136.000000...21.8522396.6569077.1394232.49326.77662195.110470.953679492.27351194.9Albania
DZA57.17836663.764099208.2488263.5998972.81.8256552.384.01474234.410247241.500000...23.06878714.354620137.9203601.9271.73762783.6281.885204252.77132284.3Algeria
AND57.77107853.096413996.17713620.8662623.318.1687561.560.12262628.7348301071.311544...146.63270986.30042669.0338091.64098.648070100.04098.648070422.680401100.0Andorra
AGO0.09885420.784925316.7751320.2695421.733.9472942.50.47553945.2677811137.000000...167.030879142.4678361.8718833.14963.65031749.04977.06558823.67124675.4Angola
..................................................................
VEN1.26113273.8521105360.96542039.2452832.73.5060972.71.70725322.6417931813.000000...25.3044729.5571907.5403672.327378.63916593.145064.219744769.53702395.0Venezuela (Bolivarian Republic of)
VNM8.79405594.782397472.67741859.3471473.83.7474090.79.2591501.4701941991.000000...83.8407912.34944818.1303153.23799.33972597.69345.813361867.11879699.1Viet Nam
YEM154.04761990.74333816.6158800.0000002.91.8232824.9169.7619057.433380232.700000...47.0234115.219357169.7619052.475.44507554.975.445075128.07699672.0Yemen
ZMB1.09923773.2824436000.70050323.4732822.58.2697202.11.50000018.4478371065.000000...43.21736612.7648942.8354984.44758.62751965.46218.25640993.27384685.6Zambia
ZWE13.85000082.9564857019.23079238.7000002.82.4377833.116.69500014.605732722.500000...27.1944885.21332931.3462263.7861.16097376.91404.830298234.54344297.0Zimbabwe
+

200 rows × 23 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [22]:
+
+
+
!dir
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
 Volume in drive C is Windows
+ Volume Serial Number is A8E6-B474
+
+ Directory of C:\Users\joach\code-projects\WaterSecurity\unlabeled_preprocessing
+
+19/05/2021  19:45    <DIR>          .
+19/05/2021  19:45    <DIR>          ..
+12/05/2021  08:11    <DIR>          .ipynb_checkpoints
+18/05/2021  12:37            27,518 combine_unlabeled.ipynb
+11/05/2021  15:21             1,709 helpers.py
+18/05/2021  12:37           365,025 prep_aquastat.ipynb
+18/05/2021  12:37            50,892 prep_economic_v2.ipynb
+18/05/2021  12:37         1,533,606 prep_edstats.ipynb
+19/05/2021  19:45         2,857,923 prep_hdro_v2.ipynb
+21/05/2021  08:00                43 __init__.py
+21/05/2021  08:00    <DIR>          __pycache__
+               7 File(s)      4,836,716 bytes
+               4 Dir(s)  832,763,138,048 bytes free
+
+
+
+ +
+
+ +
+
+
+
In [23]:
+
+
+
merged.to_csv("../data/unlabeled/preprocessed/aquastat_preprocessed.csv")
+
+ +
+
+
+ +
+
+
+
In [ ]:
+
+
+
 
+
+ +
+
+
+ +
+
+
+ + + + + + diff --git a/documentation/WaterSecurity/notebooks/prep_economic_v2.html b/documentation/WaterSecurity/notebooks/prep_economic_v2.html new file mode 100644 index 0000000..82dfba7 --- /dev/null +++ b/documentation/WaterSecurity/notebooks/prep_economic_v2.html @@ -0,0 +1,14474 @@ + + + + +Notebook + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
In [1]:
+
+
+
import pandas as pd
+from helpers import *
+import sys
+sys.path.append("..")
+from data.unlabeled.raw import econ_co as df1, econ_da as df2, econ_se as df3
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
..\data\unlabeled\raw\__init__.py:41: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.
+  aquastat_eah = pd.read_csv(aquastat_eah_path, skipfooter=8)
+..\data\unlabeled\raw\__init__.py:42: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.
+  aquastat_wr = pd.read_csv(aquastat_wr_path, skipfooter=8)
+..\data\unlabeled\raw\__init__.py:43: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.
+  aquastat_wu = pd.read_csv(aquastat_wu_path, skipfooter=8)
+
+
+
+ +
+
+ +
+
+
+
In [2]:
+
+
+
print(df2.columns)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
Index(['Country Name', 'Country Code', 'Indicator Name', 'Indicator Code',
+       '1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002', '2003',
+       '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012',
+       '2013', '2014', '2015', 'Unnamed: 25'],
+      dtype='object')
+
+
+
+ +
+
+ +
+
+
+
+

Only look at the years listed below

+
+
+
+
+
+
In [3]:
+
+
+
years = ['2010', '2011', '2012','2013', '2014', '2015']
+df2 = df2[['Country Code','Indicator Code',*years]]
+df2.shape
+
+ +
+
+
+ +
+
+ + +
+ +
Out[3]:
+ + + + +
+
(298, 8)
+
+ +
+ +
+
+ +
+
+
+
In [4]:
+
+
+
df2.isna().sum()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[4]:
+ + + + +
+
Country Code      0
+Indicator Code    0
+2010              0
+2011              0
+2012              2
+2013              2
+2014              2
+2015              2
+dtype: int64
+
+ +
+ +
+
+ +
+
+
+
+

Same missing values in 2012-2015 -> Merge 2011 with 2015 and remove the rest

+
+
+
+
+
+
In [5]:
+
+
+
fill_missing_with_column(df2,'2015','2011')
+df2.isna().sum()
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
c:\Users\joach\code-projects\WaterSecurity\unlabeled_preprocessing\helpers.py:15: SettingWithCopyWarning: 
+A value is trying to be set on a copy of a slice from a DataFrame.
+Try using .loc[row_indexer,col_indexer] = value instead
+
+See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
+  df[into] = df[into].combine_first(df[fro])
+C:\Users\joach\.conda\envs\wsenv\lib\site-packages\pandas\core\frame.py:4308: SettingWithCopyWarning: 
+A value is trying to be set on a copy of a slice from a DataFrame
+
+See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
+  return super().drop(
+
+
+
+ +
+ +
Out[5]:
+ + + + +
+
Country Code      0
+Indicator Code    0
+2010              0
+2012              2
+2013              2
+2014              2
+2015              0
+dtype: int64
+
+ +
+ +
+
+ +
+
+
+
In [6]:
+
+
+
df2 = df2[['Country Code','Indicator Code','2015']]
+
+ +
+
+
+ +
+
+
+
In [7]:
+
+
+
df2
+
+ +
+
+
+ +
+
+ + +
+ +
Out[7]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Country CodeIndicator Code2015
0AFGEF.EFM.OVRL.XD5.369534e-02
1AFGEF.EFM.RANK.XD1.120000e+02
2AGOEF.EFM.OVRL.XD7.890000e-13
3AGOEF.EFM.RANK.XD1.460000e+02
4ALBEF.EFM.OVRL.XD3.746223e-01
............
293ZAFEF.EFM.RANK.XD4.500000e+01
294ZMBEF.EFM.OVRL.XD6.530739e-02
295ZMBEF.EFM.RANK.XD1.090000e+02
296ZWEEF.EFM.OVRL.XD1.078169e-01
297ZWEEF.EFM.RANK.XD1.000000e+02
+

298 rows × 3 columns

+
+
+ +
+ +
+
+ +
+
+
+
+

Join indicator names

+
+
+
+
+
+
In [8]:
+
+
+
comb1 = df2.merge(df3, how='inner', left_on='Indicator Code', right_on='Series Code')
+print(comb1.shape)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
(298, 24)
+
+
+
+ +
+
+ +
+
+
+
In [9]:
+
+
+
comb1
+
+ +
+
+
+ +
+
+ + +
+ +
Out[9]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Country CodeIndicator Code2015Series CodeTopicIndicator NameShort definitionLong definitionUnit of measurePeriodicity...Notes from original sourceGeneral commentsSourceStatistical concept and methodologyDevelopment relevanceRelated source linksOther web linksRelated indicatorsLicense TypeUnnamed: 20
0AFGEF.EFM.OVRL.XD5.369534e-02EF.EFM.OVRL.XDEconomic Policy & DebtEconomic Fitness MetricNaNEconomic Fitness (EF) is both a measure of a c...NaNAnnual...NaNNaNWorld Bank, Economic Fitness project. For more...The new literature of Economic Fitness uses te...NaNNaNNaNNaNNaNNaN
1AGOEF.EFM.OVRL.XD7.890000e-13EF.EFM.OVRL.XDEconomic Policy & DebtEconomic Fitness MetricNaNEconomic Fitness (EF) is both a measure of a c...NaNAnnual...NaNNaNWorld Bank, Economic Fitness project. For more...The new literature of Economic Fitness uses te...NaNNaNNaNNaNNaNNaN
2ALBEF.EFM.OVRL.XD3.746223e-01EF.EFM.OVRL.XDEconomic Policy & DebtEconomic Fitness MetricNaNEconomic Fitness (EF) is both a measure of a c...NaNAnnual...NaNNaNWorld Bank, Economic Fitness project. For more...The new literature of Economic Fitness uses te...NaNNaNNaNNaNNaNNaN
3ANDEF.EFM.OVRL.XD3.694202e-01EF.EFM.OVRL.XDEconomic Policy & DebtEconomic Fitness MetricNaNEconomic Fitness (EF) is both a measure of a c...NaNAnnual...NaNNaNWorld Bank, Economic Fitness project. For more...The new literature of Economic Fitness uses te...NaNNaNNaNNaNNaNNaN
4AREEF.EFM.OVRL.XD3.438621e-01EF.EFM.OVRL.XDEconomic Policy & DebtEconomic Fitness MetricNaNEconomic Fitness (EF) is both a measure of a c...NaNAnnual...NaNNaNWorld Bank, Economic Fitness project. For more...The new literature of Economic Fitness uses te...NaNNaNNaNNaNNaNNaN
..................................................................
293VNMEF.EFM.RANK.XD3.600000e+01EF.EFM.RANK.XDEconomic Policy & DebtEconomic Fitness Ranking (1 = high, 149 = low)NaNNaNNaNAnnual...NaNNaNWorld Bank, Economic Fitness project. For more...The new literature of Economic Fitness uses te...NaNNaNNaNNaNNaNNaN
294YEMEF.EFM.RANK.XD1.070000e+02EF.EFM.RANK.XDEconomic Policy & DebtEconomic Fitness Ranking (1 = high, 149 = low)NaNNaNNaNAnnual...NaNNaNWorld Bank, Economic Fitness project. For more...The new literature of Economic Fitness uses te...NaNNaNNaNNaNNaNNaN
295ZAFEF.EFM.RANK.XD4.500000e+01EF.EFM.RANK.XDEconomic Policy & DebtEconomic Fitness Ranking (1 = high, 149 = low)NaNNaNNaNAnnual...NaNNaNWorld Bank, Economic Fitness project. For more...The new literature of Economic Fitness uses te...NaNNaNNaNNaNNaNNaN
296ZMBEF.EFM.RANK.XD1.090000e+02EF.EFM.RANK.XDEconomic Policy & DebtEconomic Fitness Ranking (1 = high, 149 = low)NaNNaNNaNAnnual...NaNNaNWorld Bank, Economic Fitness project. For more...The new literature of Economic Fitness uses te...NaNNaNNaNNaNNaNNaN
297ZWEEF.EFM.RANK.XD1.000000e+02EF.EFM.RANK.XDEconomic Policy & DebtEconomic Fitness Ranking (1 = high, 149 = low)NaNNaNNaNAnnual...NaNNaNWorld Bank, Economic Fitness project. For more...The new literature of Economic Fitness uses te...NaNNaNNaNNaNNaNNaN
+

298 rows × 24 columns

+
+
+ +
+ +
+
+ +
+
+
+
+

Pivot so that table is countrycodeXindicator

+
+
+
+
+
+
In [10]:
+
+
+
countryXindicator = comb1.pivot_table('2015',['Country Code'], 'Indicator Name')
+countryXindicator
+
+ +
+
+
+ +
+
+ + +
+ +
Out[10]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Indicator NameEconomic Fitness MetricEconomic Fitness Ranking (1 = high, 149 = low)
Country Code
AFG5.369534e-02112.0
AGO7.890000e-13146.0
ALB3.746223e-0173.0
AND3.694202e-0174.0
ARE3.438621e-0176.0
.........
VNM1.391330e+0036.0
YEM7.417100e-02107.0
ZAF9.784253e-0145.0
ZMB6.530739e-02109.0
ZWE1.078169e-01100.0
+

149 rows × 2 columns

+
+
+ +
+ +
+
+ +
+
+
+
+

No missing values -> no imputation needed

+
+
+
+
+
+
In [11]:
+
+
+
print_missing_percentages(countryXindicator)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
Max, min and mean number of missing values for the columns
+Max: 0.0 %
+Min: 0.0 %
+Mean: 0.0 %
+
+
+
+ +
+ +
Out[11]:
+ + + + +
+
(0.0, 0.0)
+
+ +
+ +
+
+ +
+
+
+
+

Merge with country information

+
+
+
+
+
+
In [12]:
+
+
+
comb2 = df1.merge(countryXindicator, how='inner', left_on='Country Code', right_on='Country Code')
+
+ +
+
+
+ +
+
+
+
In [13]:
+
+
+
print(comb2.columns)
+print(comb2.shape)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
Index(['Country Code', 'Short Name', 'Table Name', 'Long Name', '2-alpha code',
+       'Currency Unit', 'Special Notes', 'Region', 'Income Group', 'WB-2 code',
+       'National accounts base year', 'National accounts reference year',
+       'SNA price valuation', 'Lending category', 'Other groups',
+       'System of National Accounts', 'Alternative conversion factor',
+       'PPP survey year', 'Balance of Payments Manual in use',
+       'External debt Reporting status', 'System of trade',
+       'Government Accounting concept', 'IMF data dissemination standard',
+       'Latest population census', 'Latest household survey',
+       'Source of most recent Income and expenditure data',
+       'Vital registration complete', 'Latest agricultural census',
+       'Latest industrial data', 'Latest trade data',
+       'Latest water withdrawal data', 'Unnamed: 31',
+       'Economic Fitness Metric',
+       'Economic Fitness Ranking (1 = high, 149 = low)'],
+      dtype='object')
+(149, 34)
+
+
+
+ +
+
+ +
+
+
+
In [17]:
+
+
+
comb2.set_index('Country Code', inplace=True)
+display(comb2)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Short NameTable NameLong Name2-alpha codeCurrency UnitSpecial NotesRegionIncome GroupWB-2 codeNational accounts base year...Latest household surveySource of most recent Income and expenditure dataVital registration completeLatest agricultural censusLatest industrial dataLatest trade dataLatest water withdrawal dataUnnamed: 31Economic Fitness MetricEconomic Fitness Ranking (1 = high, 149 = low)
Country Code
AFGAfghanistanAfghanistanIslamic State of AfghanistanAFAfghan afghaniFiscal year end: March 20; reporting period fo...South AsiaLow incomeAF2002/03...Demographic and Health Survey, 2015Integrated household survey (IHS), 2011NaNNaNNaN2016.02000.0NaN5.369534e-02112.0
AGOAngolaAngolaPeople's Republic of AngolaAOAngolan kwanzaNaNSub-Saharan AfricaLower middle incomeAO2002...Demographic and Health Survey, 2015/16Integrated household survey (IHS), 2008/09NaNNaNNaN2016.02005.0NaN7.890000e-13146.0
ALBAlbaniaAlbaniaRepublic of AlbaniaALAlbanian lekNaNEurope & Central AsiaUpper middle incomeALOriginal chained constant price data are resca......Demographic and Health Survey, 2008/09Living Standards Measurement Study Survey (LSM...Yes20122013.02016.02006.0NaN3.746223e-0173.0
ANDAndorraAndorraPrincipality of AndorraADEuroWB-3 code changed from ADO to AND to align wit...Europe & Central AsiaHigh incomeAD2000...NaNNaNYesNaNNaNNaNNaNNaN3.694202e-0174.0
AREUnited Arab EmiratesUnited Arab EmiratesUnited Arab EmiratesAEU.A.E. dirhamNaNMiddle East & North AfricaHigh incomeAE2010...World Health Survey, 2003NaNNaN20121985.02016.02005.0NaN3.438621e-0176.0
..................................................................
VNMVietnamVietnamSocialist Republic of VietnamVNVietnamese dongNaNEast Asia & PacificLower middle incomeVN2010...Multiple Indicator Cluster Survey, 2013/14Integrated household survey (IHS), 2014Yes20112013.02016.02005.0NaN1.391330e+0036.0
YEMYemenYemen, Rep.Republic of YemenYEYemeni rialBased on official government statistics and In...Middle East & North AfricaLower middle incomeRY1990...Demographic and Health Survey, 2013Expenditure survey/budget survey (ES/BS), 2005NaNNaN2012.02016.02005.0NaN7.417100e-02107.0
ZAFSouth AfricaSouth AfricaRepublic of South AfricaZASouth African randFiscal year end: March 31; reporting period fo...Sub-Saharan AfricaUpper middle incomeZA2010...Demographic and Health Survey, 2003; World Hea...Expenditure survey/budget survey (ES/BS), 2010/11NaN20072010.02016.02013.0NaN9.784253e-0145.0
ZMBZambiaZambiaRepublic of ZambiaZMNew Zambian kwachaThe base year is 2010. National accounts data ...Sub-Saharan AfricaLower middle incomeZM2010...Demographic and Health Survey, 2013/14Integrated household survey (IHS), 2010NaNNaN1994.02016.02002.0NaN6.530739e-02109.0
ZWEZimbabweZimbabweRepublic of ZimbabweZWU.S. dollarFiscal year end: June 30; reporting period for...Sub-Saharan AfricaLow incomeZW2009...Demographic and Health Survey, 2015Integrated household survey (IHS), 2011/12NaNNaNNaN2016.02007.0NaN1.078169e-01100.0
+

149 rows × 33 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [19]:
+
+
+
comb2.to_csv("../data/unlabeled/preprocessed/economy_preprocessed.csv")
+
+ +
+
+
+ +
+
+
+
In [ ]:
+
+
+
 
+
+ +
+
+
+ +
+
+
+ + + + + + diff --git a/documentation/WaterSecurity/notebooks/prep_edstats-checkpoint.html b/documentation/WaterSecurity/notebooks/prep_edstats-checkpoint.html new file mode 100644 index 0000000..36ff7f7 --- /dev/null +++ b/documentation/WaterSecurity/notebooks/prep_edstats-checkpoint.html @@ -0,0 +1,16922 @@ + + + + +Notebook + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
In [65]:
+
+
+
import pandas as pd
+import sklearn
+from helpers import *
+import matplotlib.pyplot as plt
+import sys
+sys.path.append("..")
+from data.unlabeled import edstats_co as df_c, edstats_da as df_d, edstats_se as df_s
+import seaborn as sns
+
+ +
+
+
+ +
+
+
+
+

Remember to extract Edstats_csv.zip to Edstats_csv

+
+
+
+
+
+
In [2]:
+
+
+
df_d.columns
+
+ +
+
+
+ +
+
+ + +
+ +
Out[2]:
+ + + + +
+
Index(['Country Name', 'Country Code', 'Indicator Name', 'Indicator Code',
+       '1970', '1971', '1972', '1973', '1974', '1975', '1976', '1977', '1978',
+       '1979', '1980', '1981', '1982', '1983', '1984', '1985', '1986', '1987',
+       '1988', '1989', '1990', '1991', '1992', '1993', '1994', '1995', '1996',
+       '1997', '1998', '1999', '2000', '2001', '2002', '2003', '2004', '2005',
+       '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014',
+       '2015', '2016', '2017', '2020', '2025', '2030', '2035', '2040', '2045',
+       '2050', '2055', '2060', '2065', '2070', '2075', '2080', '2085', '2090',
+       '2095', '2100', 'Unnamed: 69'],
+      dtype='object')
+
+ +
+ +
+
+ +
+
+
+
In [3]:
+
+
+
years = ['2015', '2016', '2017', '2020']
+stripped_df_d = df_d[['Country Code','Indicator Code',*years]]
+print("Non na values in col 2020:",stripped_df_d['2020'].count())
+stripped_df_d
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
Non na values in col 2020: 51436
+
+
+
+ +
+ +
Out[3]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Country CodeIndicator Code2015201620172020
0ARBUIS.NERA.2NaNNaNNaNNaN
1ARBUIS.NERA.2.FNaNNaNNaNNaN
2ARBUIS.NERA.2.GPINaNNaNNaNNaN
3ARBUIS.NERA.2.MNaNNaNNaNNaN
4ARBSE.PRM.TENRNaNNaNNaNNaN
.....................
886925ZWEUIS.LP.AG15T24.MNaNNaNNaNNaN
886926ZWESE.ADT.1524.LT.ZSNaNNaNNaNNaN
886927ZWESE.ADT.1524.LT.FE.ZSNaNNaNNaNNaN
886928ZWESE.ADT.1524.LT.FM.ZSNaNNaNNaNNaN
886929ZWESE.ADT.1524.LT.MA.ZSNaNNaNNaNNaN
+

886930 rows × 6 columns

+
+
+ +
+ +
+
+ +
+
+
+
+

Merge colums to remove null values

+
+
+
+
+
+
In [4]:
+
+
+
for year in years[:-1]:
+    fill_missing_with_column(stripped_df_d, '2020',year)
+print("Non na values in col 2020:", stripped_df_d['2020'].count())
+stripped_df_d
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
Non na values in col 2020: 132991
+
+
+
+ +
+ +
+ + +
+
C:\Users\joach\code-projects\WaterSecurity\unlabeled_preprocessing\helpers.py:15: SettingWithCopyWarning: 
+A value is trying to be set on a copy of a slice from a DataFrame.
+Try using .loc[row_indexer,col_indexer] = value instead
+
+See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
+  df[into] = df[into].combine_first(df[fro])
+C:\Users\joach\.conda\envs\wsenv\lib\site-packages\pandas\core\frame.py:4308: SettingWithCopyWarning: 
+A value is trying to be set on a copy of a slice from a DataFrame
+
+See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
+  return super().drop(
+
+
+
+ +
+ +
Out[4]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Country CodeIndicator Code2020
0ARBUIS.NERA.2NaN
1ARBUIS.NERA.2.FNaN
2ARBUIS.NERA.2.GPINaN
3ARBUIS.NERA.2.MNaN
4ARBSE.PRM.TENRNaN
............
886925ZWEUIS.LP.AG15T24.MNaN
886926ZWESE.ADT.1524.LT.ZSNaN
886927ZWESE.ADT.1524.LT.FE.ZSNaN
886928ZWESE.ADT.1524.LT.FM.ZSNaN
886929ZWESE.ADT.1524.LT.MA.ZSNaN
+

886930 rows × 3 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [5]:
+
+
+
df_d_withseries = stripped_df_d.merge(df_s, how='left', left_on='Indicator Code', right_on='Series Code')
+df_d_withseries.drop(['Indicator Code'], inplace=True, axis=1)
+
+ +
+
+
+ +
+
+
+
In [6]:
+
+
+
df_d_withseries.columns
+
+ +
+
+
+ +
+
+ + +
+ +
Out[6]:
+ + + + +
+
Index(['Country Code', '2020', 'Series Code', 'Topic', 'Indicator Name',
+       'Short definition', 'Long definition', 'Unit of measure', 'Periodicity',
+       'Base Period', 'Other notes', 'Aggregation method',
+       'Limitations and exceptions', 'Notes from original source',
+       'General comments', 'Source', 'Statistical concept and methodology',
+       'Development relevance', 'Related source links', 'Other web links',
+       'Related indicators', 'License Type', 'Unnamed: 20'],
+      dtype='object')
+
+ +
+ +
+
+ +
+
+
+
+

Rearange table to indicator on column

+
+
+
+
+
+
In [7]:
+
+
+
countryXindicator = df_d_withseries.pivot_table('2020',['Country Code'],'Indicator Name')
+countryXindicator
+
+ +
+
+
+ +
+
+ + +
+ +
Out[7]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Indicator NameAdjusted net enrolment rate, lower secondary, both sexes (%)Adjusted net enrolment rate, lower secondary, female (%)Adjusted net enrolment rate, lower secondary, gender parity index (GPI)Adjusted net enrolment rate, lower secondary, male (%)Adjusted net enrolment rate, primary, both sexes (%)Adjusted net enrolment rate, primary, female (%)Adjusted net enrolment rate, primary, gender parity index (GPI)Adjusted net enrolment rate, primary, male (%)Adjusted net enrolment rate, upper secondary, both sexes (%)Adjusted net enrolment rate, upper secondary, female (%)...Under-age enrolment ratio in secondary education, female (%)Under-age enrolment ratio in secondary education, male (%)Unemployment, female (% of female labor force) (modeled ILO estimate)Unemployment, male (% of male labor force) (modeled ILO estimate)Unemployment, total (% of total labor force) (modeled ILO estimate)Youth illiterate population, 15-24 years, % femaleYouth literacy rate, population 15-24 years, both sexes (%)Youth literacy rate, population 15-24 years, female (%)Youth literacy rate, population 15-24 years, gender parity index (GPI)Youth literacy rate, population 15-24 years, male (%)
Country Code
ABWNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AFGNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaN12.7000007.78.600000NaNNaNNaNNaNNaN
AGONaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaN6.7000005.76.200000NaNNaNNaNNaNNaN
ALBNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaN17.29999917.017.100000NaNNaNNaNNaNNaN
ANDNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaN47.80890100.00000100.000001.00000100.00000
..................................................................
XKXNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
YEMNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaN32.70000111.116.700001NaNNaNNaNNaNNaN
ZAFNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaN27.70000123.125.20000134.3480898.9557899.229041.0055298.68459
ZMBNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaN8.0000007.37.700000NaNNaNNaNNaNNaN
ZWENaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaN5.1000005.15.100000NaNNaNNaNNaNNaN
+

241 rows × 2047 columns

+
+
+ +
+ +
+
+ +
+
+
+
+

Find columns that contain "number", "Projection" or "$"

+
+
+
+
+
+
In [8]:
+
+
+
projection_col = [colname for colname in countryXindicator.columns if "Projection" in colname]
+number = [colname for colname in countryXindicator.columns if "number" in colname]
+dollar = [colname for colname in countryXindicator.columns if "$" in colname]
+
+ +
+
+
+ +
+
+
+
+

And remove them

+
+
+
+
+
+
In [9]:
+
+
+
countryXindicator.drop(projection_col + number+ dollar,inplace=True,axis=1)
+countryXindicator.shape
+
+ +
+
+
+ +
+
+ + +
+ +
Out[9]:
+ + + + +
+
(241, 1502)
+
+ +
+ +
+
+ +
+
+
+
+

Remove population data

+
+
+
+
+
+
In [10]:
+
+
+
countryXindicator.drop(['Population, total'], axis=1, inplace=True)
+
+ +
+
+
+ +
+
+
+
+

See how much of the data is missing and drop columns where more than 50% of the values are null

+
+
+
+
+
+
In [11]:
+
+
+
print_missing_percentages(countryXindicator)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
Max, min and mean number of missing values for the columns
+Max: 99.5850622406639 %
+Min: 3.7344398340248963 %
+Mean: 81.31204369977415 %
+
+
+
+ +
+ +
Out[11]:
+ + + + +
+
(3.7344398340248963, 99.5850622406639)
+
+ +
+ +
+
+ +
+
+
+
In [12]:
+
+
+
dropColumnHalf(countryXindicator)
+
+ +
+
+
+ +
+
+
+
In [13]:
+
+
+
print_missing_percentages(countryXindicator)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
Max, min and mean number of missing values for the columns
+Max: 49.79253112033195 %
+Min: 3.7344398340248963 %
+Mean: 26.60212079299217 %
+
+
+
+ +
+ +
Out[13]:
+ + + + +
+
(3.7344398340248963, 49.79253112033195)
+
+ +
+ +
+
+ +
+
+
+
In [14]:
+
+
+
countryXindicator.shape
+
+ +
+
+
+ +
+
+ + +
+ +
Out[14]:
+ + + + +
+
(241, 243)
+
+ +
+ +
+
+ +
+
+
+
In [15]:
+
+
+
 countryXindicator
+
+ +
+
+
+ +
+
+ + +
+ +
Out[15]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Indicator NameAdjusted net enrolment rate, primary, both sexes (%)Age population, age 0, female, UNESCOAge population, age 0, total, UNESCOAge population, age 01, female, UNESCOAge population, age 01, total, UNESCOAge population, age 02, female, UNESCOAge population, age 02, total, UNESCOAge population, age 03, female, UNESCOAge population, age 03, total, UNESCOAge population, age 04, female, UNESCO...Prevalence of HIV, total (% of population ages 15-49)Primary completion rate, both sexes (%)Primary completion rate, female (%)Primary completion rate, male (%)Theoretical duration of primary education (years)Theoretical duration of secondary education (years)Theoretical duration of upper secondary education (years)Unemployment, female (% of female labor force) (modeled ILO estimate)Unemployment, male (% of male labor force) (modeled ILO estimate)Unemployment, total (% of total labor force) (modeled ILO estimate)
Country Code
ABWNaN542.01112.0572.01170.0600.01224.0623.01269.0643.0...NaNNaNNaNNaN6.05.03.0NaNNaNNaN
AFGNaN682677.01403010.0650389.01338500.0620880.01279403.0593957.01225345.0569425.0...0.1NaNNaNNaN6.06.03.012.7000007.78.600000
AGONaN414919.0832093.0396537.0793950.0379705.0759164.0364295.0727455.0350180.0...1.9NaNNaNNaN6.06.03.06.7000005.76.200000
ALBNaN23697.049105.024026.049709.024243.050104.024360.050315.024397.0...0.1106.367561104.699371107.9001245.07.03.017.29999917.017.100000
ANDNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaN6.06.02.0NaNNaNNaN
..................................................................
XKXNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
YEMNaN458859.0936053.0452601.0923017.0444988.0907252.0436223.0889171.0426514.0...0.1NaNNaNNaN6.06.03.032.70000111.116.700001
ZAFNaN484535.0980663.0486901.0985215.0489516.0990194.0492299.0995445.0495165.0...18.9NaNNaNNaN7.05.03.027.70000123.125.200001
ZMBNaN226616.0457329.0220950.0445451.0215890.0434876.0211367.0425454.0207311.0...12.6NaNNaNNaN7.05.03.08.0000007.37.700000
ZWENaN181422.0364761.0179761.0361101.0177982.0357261.0176130.0353321.0174240.0...13.9NaNNaNNaN7.06.04.05.1000005.15.100000
+

241 rows × 243 columns

+
+
+ +
+ +
+
+ +
+
+
+
+

Split dataset into a dataframe containing year-data and a dataframe for the float-precentages-data

This i done for better imputation results

+ +
+
+
+
+
+
In [17]:
+
+
+
int_cols = find_all_integer_columns(countryXindicator)
+
+ +
+
+
+ +
+
+
+
In [29]:
+
+
+
countryXindicator_float = countryXindicator.drop(int_cols, axis=1)
+countryXindicator_float
+
+ +
+
+
+ +
+
+ + +
+ +
Out[29]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Indicator NameAdjusted net enrolment rate, primary, both sexes (%)Gross enrolment ratio, lower secondary, both sexes (%)Gross enrolment ratio, lower secondary, female (%)Gross enrolment ratio, lower secondary, male (%)Gross enrolment ratio, pre-primary, both sexes (%)Gross enrolment ratio, pre-primary, female (%)Gross enrolment ratio, pre-primary, male (%)Gross enrolment ratio, primary, both sexes (%)Gross enrolment ratio, primary, female (%)Gross enrolment ratio, primary, gender parity index (GPI)...Population growth (annual %)Population, female (% of total)Population, male (% of total)Prevalence of HIV, total (% of population ages 15-49)Primary completion rate, both sexes (%)Primary completion rate, female (%)Primary completion rate, male (%)Unemployment, female (% of female labor force) (modeled ILO estimate)Unemployment, male (% of male labor force) (modeled ILO estimate)Unemployment, total (% of total labor force) (modeled ILO estimate)
Country Code
ABWNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...0.52465852.46552147.534479NaNNaNNaNNaNNaNNaNNaN
AFGNaN67.44761749.58044184.329559NaNNaNNaN111.87708391.0832600.69200...2.94323448.45455851.5454420.1NaNNaNNaN12.7000007.78.600000
AGONaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...3.42802150.99101049.0089901.9NaNNaNNaN6.7000005.76.200000
ALBNaN101.48837399.889503102.98043888.60224287.39891189.722321113.699799111.7190170.96706...-0.29120649.51459950.4854010.1106.367561104.699371107.90012417.29999917.017.100000
ANDNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...-1.537836NaNNaNNaNNaNNaNNaNNaNNaNNaN
..................................................................
XKXNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...-1.103886NaNNaNNaNNaNNaNNaNNaNNaNNaN
YEMNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...2.52025449.47085650.5291440.1NaNNaNNaN32.70000111.116.700001
ZAFNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...1.58532550.89760449.10239618.9NaNNaNNaN27.70000123.125.200001
ZMBNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...3.02412350.38476649.61523412.6NaNNaNNaN8.0000007.37.700000
ZWENaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...2.34564351.33499748.66500313.9NaNNaNNaN5.1000005.15.100000
+

241 rows × 48 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [30]:
+
+
+
countryXindicator_year = countryXindicator[int_cols]
+countryXindicator_year.shape
+
+ +
+
+
+ +
+
+ + +
+ +
Out[30]:
+ + + + +
+
(241, 195)
+
+ +
+ +
+
+ +
+
+
+
In [31]:
+
+
+
countryXindicator_year = countryXindicator_year[[colname for colname in countryXindicator_year.columns if "years" in colname]]
+countryXindicator_year
+
+ +
+
+
+ +
+
+ + +
+ +
Out[31]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Indicator NameDuration of compulsory education (years)Official entrance age to lower secondary education (years)Official entrance age to primary education (years)Theoretical duration of primary education (years)Theoretical duration of secondary education (years)Theoretical duration of upper secondary education (years)
Country Code
ABW13.012.06.06.05.03.0
AFG9.013.07.06.06.03.0
AGO6.012.06.06.06.03.0
ALB9.011.06.05.07.03.0
AND10.012.06.06.06.02.0
.....................
XKXNaNNaNNaNNaNNaNNaN
YEM9.012.06.06.06.03.0
ZAF9.014.07.07.05.03.0
ZMB7.014.07.07.05.03.0
ZWE7.013.06.07.06.04.0
+

241 rows × 6 columns

+
+
+ +
+ +
+
+ +
+
+
+
+

Impute both dataframes

+
+
+
+
+
+
In [62]:
+
+
+
imputed_countryXindicator_float = impute_df(countryXindicator_float, max_iter=100, verbose=2)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
[IterativeImputer] Completing matrix with shape (241, 48)
+[IterativeImputer] Ending imputation round 1/100, elapsed time 0.15
+[IterativeImputer] Change: 185.571939565928, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 2/100, elapsed time 0.30
+[IterativeImputer] Change: 84.11443482287976, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 3/100, elapsed time 0.44
+[IterativeImputer] Change: 40.004149972043805, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 4/100, elapsed time 0.59
+[IterativeImputer] Change: 20.57199335577451, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 5/100, elapsed time 0.73
+[IterativeImputer] Change: 12.447852809025877, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 6/100, elapsed time 0.88
+[IterativeImputer] Change: 10.982023559420153, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 7/100, elapsed time 1.03
+[IterativeImputer] Change: 9.335158590713679, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 8/100, elapsed time 1.17
+[IterativeImputer] Change: 8.566696528569699, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 9/100, elapsed time 1.32
+[IterativeImputer] Change: 7.68743911493866, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 10/100, elapsed time 1.46
+[IterativeImputer] Change: 6.844171756725839, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 11/100, elapsed time 1.60
+[IterativeImputer] Change: 6.065545725434555, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 12/100, elapsed time 1.75
+[IterativeImputer] Change: 5.36616411150322, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 13/100, elapsed time 1.90
+[IterativeImputer] Change: 4.744028755257943, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 14/100, elapsed time 2.04
+[IterativeImputer] Change: 4.1901923804245715, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 15/100, elapsed time 2.18
+[IterativeImputer] Change: 3.70294072516266, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 16/100, elapsed time 2.32
+[IterativeImputer] Change: 3.2688619527108522, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 17/100, elapsed time 2.47
+[IterativeImputer] Change: 2.88345738531942, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 18/100, elapsed time 2.61
+[IterativeImputer] Change: 2.532294563247444, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 19/100, elapsed time 2.75
+[IterativeImputer] Change: 2.2119869217502828, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 20/100, elapsed time 2.90
+[IterativeImputer] Change: 1.9202443611257713, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 21/100, elapsed time 3.04
+[IterativeImputer] Change: 1.6606990496546086, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 22/100, elapsed time 3.18
+[IterativeImputer] Change: 1.6559282826221846, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 23/100, elapsed time 3.33
+[IterativeImputer] Change: 1.6520065848505072, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 24/100, elapsed time 3.47
+[IterativeImputer] Change: 1.648782063252183, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 25/100, elapsed time 3.61
+[IterativeImputer] Change: 1.6461831356141814, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 26/100, elapsed time 3.77
+[IterativeImputer] Change: 1.644058054001174, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 27/100, elapsed time 3.91
+[IterativeImputer] Change: 1.6423013079998188, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 28/100, elapsed time 4.06
+[IterativeImputer] Change: 1.6408741216707456, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 29/100, elapsed time 4.20
+[IterativeImputer] Change: 1.6396788922926566, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 30/100, elapsed time 4.35
+[IterativeImputer] Change: 1.638655100233116, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 31/100, elapsed time 4.49
+[IterativeImputer] Change: 1.6377695134752297, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 32/100, elapsed time 4.64
+[IterativeImputer] Change: 1.6369872536064, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 33/100, elapsed time 4.79
+[IterativeImputer] Change: 1.636221623251295, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 34/100, elapsed time 4.95
+[IterativeImputer] Change: 1.6355083766661642, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 35/100, elapsed time 5.11
+[IterativeImputer] Change: 1.634821858203819, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 36/100, elapsed time 5.27
+[IterativeImputer] Change: 1.6341370631609828, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 37/100, elapsed time 5.42
+[IterativeImputer] Change: 1.6334747186241456, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 38/100, elapsed time 5.56
+[IterativeImputer] Change: 1.645652531918897, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 39/100, elapsed time 5.71
+[IterativeImputer] Change: 1.652182711035818, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 40/100, elapsed time 5.88
+[IterativeImputer] Change: 1.6532662904419548, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 41/100, elapsed time 6.02
+[IterativeImputer] Change: 1.649451831600862, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 42/100, elapsed time 6.18
+[IterativeImputer] Change: 1.6408222980663139, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 43/100, elapsed time 6.33
+[IterativeImputer] Change: 1.6294400496414387, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 44/100, elapsed time 6.47
+[IterativeImputer] Change: 1.6287678524729357, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 45/100, elapsed time 6.61
+[IterativeImputer] Change: 1.6281047469396985, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 46/100, elapsed time 6.76
+[IterativeImputer] Change: 1.6274834308429378, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 47/100, elapsed time 6.90
+[IterativeImputer] Change: 1.6270130873718072, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 48/100, elapsed time 7.04
+[IterativeImputer] Change: 1.6262940758389055, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 49/100, elapsed time 7.19
+[IterativeImputer] Change: 1.6257297763508762, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 50/100, elapsed time 7.33
+[IterativeImputer] Change: 1.6252298538321177, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 51/100, elapsed time 7.47
+[IterativeImputer] Change: 1.624722930666042, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 52/100, elapsed time 7.62
+[IterativeImputer] Change: 1.6242577689697895, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 53/100, elapsed time 7.76
+[IterativeImputer] Change: 1.6238212014114874, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 54/100, elapsed time 7.91
+[IterativeImputer] Change: 1.6234519318135652, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 55/100, elapsed time 8.06
+[IterativeImputer] Change: 1.6231115358163457, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 56/100, elapsed time 8.20
+[IterativeImputer] Change: 1.6228249713969374, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 57/100, elapsed time 8.34
+[IterativeImputer] Change: 1.6225670613424206, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 58/100, elapsed time 8.50
+[IterativeImputer] Change: 1.6222797867936543, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 59/100, elapsed time 8.65
+[IterativeImputer] Change: 1.6221342960698018, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 60/100, elapsed time 8.79
+[IterativeImputer] Change: 1.6219870713467206, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 61/100, elapsed time 8.93
+[IterativeImputer] Change: 1.6218646076142422, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 62/100, elapsed time 9.09
+[IterativeImputer] Change: 1.6217730363655758, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 63/100, elapsed time 9.24
+[IterativeImputer] Change: 1.621725788928061, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 64/100, elapsed time 9.38
+[IterativeImputer] Change: 1.6216920357302036, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 65/100, elapsed time 9.54
+[IterativeImputer] Change: 1.621698990708198, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 66/100, elapsed time 9.70
+[IterativeImputer] Change: 1.6217532944875095, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 67/100, elapsed time 9.84
+[IterativeImputer] Change: 1.6218227224444455, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 68/100, elapsed time 9.98
+[IterativeImputer] Change: 1.6218972339192113, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 69/100, elapsed time 10.12
+[IterativeImputer] Change: 1.6232902366910664, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 70/100, elapsed time 10.27
+[IterativeImputer] Change: 1.6249616723710512, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 71/100, elapsed time 10.41
+[IterativeImputer] Change: 1.6261259356463242, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 72/100, elapsed time 10.56
+[IterativeImputer] Change: 1.6281859862659571, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 73/100, elapsed time 10.71
+[IterativeImputer] Change: 1.63006029323919, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 74/100, elapsed time 10.87
+[IterativeImputer] Change: 1.6318311593012644, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 75/100, elapsed time 11.02
+[IterativeImputer] Change: 1.6336233225534909, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 76/100, elapsed time 11.16
+[IterativeImputer] Change: 1.6353960973093213, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 77/100, elapsed time 11.31
+[IterativeImputer] Change: 1.637182751172711, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 78/100, elapsed time 11.45
+[IterativeImputer] Change: 1.6389758111697363, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 79/100, elapsed time 11.60
+[IterativeImputer] Change: 1.6407763042253765, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 80/100, elapsed time 11.74
+[IterativeImputer] Change: 1.6425834310407716, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 81/100, elapsed time 11.89
+[IterativeImputer] Change: 1.6443968858747002, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 82/100, elapsed time 12.04
+[IterativeImputer] Change: 1.64625348689472, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 83/100, elapsed time 12.19
+[IterativeImputer] Change: 1.6481429500945106, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 84/100, elapsed time 12.33
+[IterativeImputer] Change: 1.6500518120410161, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 85/100, elapsed time 12.47
+[IterativeImputer] Change: 1.6519548194561064, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 86/100, elapsed time 12.61
+[IterativeImputer] Change: 1.6538680162736423, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 87/100, elapsed time 12.76
+[IterativeImputer] Change: 1.6552679864808504, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 88/100, elapsed time 12.92
+[IterativeImputer] Change: 1.6574626185722092, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 89/100, elapsed time 13.08
+[IterativeImputer] Change: 1.6594748268725177, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 90/100, elapsed time 13.25
+[IterativeImputer] Change: 1.6613749089305434, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 91/100, elapsed time 13.44
+[IterativeImputer] Change: 1.6632615294758013, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 92/100, elapsed time 13.63
+[IterativeImputer] Change: 1.6651267664591594, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 93/100, elapsed time 13.81
+[IterativeImputer] Change: 1.6669733028122995, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 94/100, elapsed time 14.00
+[IterativeImputer] Change: 1.6688041142649566, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 95/100, elapsed time 14.19
+[IterativeImputer] Change: 1.6706225132059456, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 96/100, elapsed time 14.37
+[IterativeImputer] Change: 1.672451264542782, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 97/100, elapsed time 14.55
+[IterativeImputer] Change: 1.6742766711767634, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 98/100, elapsed time 14.73
+[IterativeImputer] Change: 1.6761039010597747, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 99/100, elapsed time 14.91
+[IterativeImputer] Change: 1.6778935337913161, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 100/100, elapsed time 15.10
+[IterativeImputer] Change: 1.679678914280904, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Completing matrix with shape (241, 48)
+[IterativeImputer] Ending imputation round 1/100, elapsed time 0.01
+[IterativeImputer] Ending imputation round 2/100, elapsed time 0.02
+[IterativeImputer] Ending imputation round 3/100, elapsed time 0.02
+[IterativeImputer] Ending imputation round 4/100, elapsed time 0.03
+[IterativeImputer] Ending imputation round 5/100, elapsed time 0.04
+[IterativeImputer] Ending imputation round 6/100, elapsed time 0.05
+[IterativeImputer] Ending imputation round 7/100, elapsed time 0.05
+[IterativeImputer] Ending imputation round 8/100, elapsed time 0.06
+[IterativeImputer] Ending imputation round 9/100, elapsed time 0.07
+[IterativeImputer] Ending imputation round 10/100, elapsed time 0.08
+[IterativeImputer] Ending imputation round 11/100, elapsed time 0.08
+[IterativeImputer] Ending imputation round 12/100, elapsed time 0.09
+[IterativeImputer] Ending imputation round 13/100, elapsed time 0.10
+[IterativeImputer] Ending imputation round 14/100, elapsed time 0.11
+[IterativeImputer] Ending imputation round 15/100, elapsed time 0.12
+[IterativeImputer] Ending imputation round 16/100, elapsed time 0.13
+[IterativeImputer] Ending imputation round 17/100, elapsed time 0.13
+[IterativeImputer] Ending imputation round 18/100, elapsed time 0.14
+[IterativeImputer] Ending imputation round 19/100, elapsed time 0.15
+[IterativeImputer] Ending imputation round 20/100, elapsed time 0.16
+[IterativeImputer] Ending imputation round 21/100, elapsed time 0.16
+[IterativeImputer] Ending imputation round 22/100, elapsed time 0.17
+[IterativeImputer] Ending imputation round 23/100, elapsed time 0.18
+
+
+
+ +
+ +
+ + +
+
C:\Users\joach\.conda\envs\wsenv\lib\site-packages\sklearn\impute\_iterative.py:685: ConvergenceWarning: [IterativeImputer] Early stopping criterion not reached.
+  warnings.warn("[IterativeImputer] Early stopping criterion not"
+
+
+
+ +
+ +
+ + +
+
[IterativeImputer] Ending imputation round 24/100, elapsed time 0.19
+[IterativeImputer] Ending imputation round 25/100, elapsed time 0.20
+[IterativeImputer] Ending imputation round 26/100, elapsed time 0.20
+[IterativeImputer] Ending imputation round 27/100, elapsed time 0.21
+[IterativeImputer] Ending imputation round 28/100, elapsed time 0.22
+[IterativeImputer] Ending imputation round 29/100, elapsed time 0.23
+[IterativeImputer] Ending imputation round 30/100, elapsed time 0.23
+[IterativeImputer] Ending imputation round 31/100, elapsed time 0.24
+[IterativeImputer] Ending imputation round 32/100, elapsed time 0.25
+[IterativeImputer] Ending imputation round 33/100, elapsed time 0.26
+[IterativeImputer] Ending imputation round 34/100, elapsed time 0.26
+[IterativeImputer] Ending imputation round 35/100, elapsed time 0.27
+[IterativeImputer] Ending imputation round 36/100, elapsed time 0.28
+[IterativeImputer] Ending imputation round 37/100, elapsed time 0.28
+[IterativeImputer] Ending imputation round 38/100, elapsed time 0.29
+[IterativeImputer] Ending imputation round 39/100, elapsed time 0.30
+[IterativeImputer] Ending imputation round 40/100, elapsed time 0.31
+[IterativeImputer] Ending imputation round 41/100, elapsed time 0.31
+[IterativeImputer] Ending imputation round 42/100, elapsed time 0.32
+[IterativeImputer] Ending imputation round 43/100, elapsed time 0.33
+[IterativeImputer] Ending imputation round 44/100, elapsed time 0.33
+[IterativeImputer] Ending imputation round 45/100, elapsed time 0.34
+[IterativeImputer] Ending imputation round 46/100, elapsed time 0.35
+[IterativeImputer] Ending imputation round 47/100, elapsed time 0.35
+[IterativeImputer] Ending imputation round 48/100, elapsed time 0.36
+[IterativeImputer] Ending imputation round 49/100, elapsed time 0.37
+[IterativeImputer] Ending imputation round 50/100, elapsed time 0.37
+[IterativeImputer] Ending imputation round 51/100, elapsed time 0.38
+[IterativeImputer] Ending imputation round 52/100, elapsed time 0.39
+[IterativeImputer] Ending imputation round 53/100, elapsed time 0.39
+[IterativeImputer] Ending imputation round 54/100, elapsed time 0.40
+[IterativeImputer] Ending imputation round 55/100, elapsed time 0.41
+[IterativeImputer] Ending imputation round 56/100, elapsed time 0.41
+[IterativeImputer] Ending imputation round 57/100, elapsed time 0.42
+[IterativeImputer] Ending imputation round 58/100, elapsed time 0.43
+[IterativeImputer] Ending imputation round 59/100, elapsed time 0.43
+[IterativeImputer] Ending imputation round 60/100, elapsed time 0.44
+[IterativeImputer] Ending imputation round 61/100, elapsed time 0.45
+[IterativeImputer] Ending imputation round 62/100, elapsed time 0.45
+[IterativeImputer] Ending imputation round 63/100, elapsed time 0.46
+[IterativeImputer] Ending imputation round 64/100, elapsed time 0.47
+[IterativeImputer] Ending imputation round 65/100, elapsed time 0.47
+[IterativeImputer] Ending imputation round 66/100, elapsed time 0.48
+[IterativeImputer] Ending imputation round 67/100, elapsed time 0.49
+[IterativeImputer] Ending imputation round 68/100, elapsed time 0.49
+[IterativeImputer] Ending imputation round 69/100, elapsed time 0.50
+[IterativeImputer] Ending imputation round 70/100, elapsed time 0.50
+[IterativeImputer] Ending imputation round 71/100, elapsed time 0.51
+[IterativeImputer] Ending imputation round 72/100, elapsed time 0.52
+[IterativeImputer] Ending imputation round 73/100, elapsed time 0.52
+[IterativeImputer] Ending imputation round 74/100, elapsed time 0.53
+[IterativeImputer] Ending imputation round 75/100, elapsed time 0.54
+[IterativeImputer] Ending imputation round 76/100, elapsed time 0.55
+[IterativeImputer] Ending imputation round 77/100, elapsed time 0.55
+[IterativeImputer] Ending imputation round 78/100, elapsed time 0.56
+[IterativeImputer] Ending imputation round 79/100, elapsed time 0.57
+[IterativeImputer] Ending imputation round 80/100, elapsed time 0.57
+[IterativeImputer] Ending imputation round 81/100, elapsed time 0.58
+[IterativeImputer] Ending imputation round 82/100, elapsed time 0.59
+[IterativeImputer] Ending imputation round 83/100, elapsed time 0.59
+[IterativeImputer] Ending imputation round 84/100, elapsed time 0.60
+[IterativeImputer] Ending imputation round 85/100, elapsed time 0.60
+[IterativeImputer] Ending imputation round 86/100, elapsed time 0.61
+[IterativeImputer] Ending imputation round 87/100, elapsed time 0.62
+[IterativeImputer] Ending imputation round 88/100, elapsed time 0.62
+[IterativeImputer] Ending imputation round 89/100, elapsed time 0.63
+[IterativeImputer] Ending imputation round 90/100, elapsed time 0.64
+[IterativeImputer] Ending imputation round 91/100, elapsed time 0.64
+[IterativeImputer] Ending imputation round 92/100, elapsed time 0.65
+[IterativeImputer] Ending imputation round 93/100, elapsed time 0.66
+[IterativeImputer] Ending imputation round 94/100, elapsed time 0.66
+[IterativeImputer] Ending imputation round 95/100, elapsed time 0.67
+[IterativeImputer] Ending imputation round 96/100, elapsed time 0.68
+[IterativeImputer] Ending imputation round 97/100, elapsed time 0.68
+[IterativeImputer] Ending imputation round 98/100, elapsed time 0.69
+[IterativeImputer] Ending imputation round 99/100, elapsed time 0.69
+[IterativeImputer] Ending imputation round 100/100, elapsed time 0.70
+
+
+
+ +
+
+ +
+
+
+
In [33]:
+
+
+
imputed_countryXindicator_year = impute_df(countryXindicator_year, max_iter=100, verbose=2)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
[IterativeImputer] Completing matrix with shape (241, 6)
+[IterativeImputer] Ending imputation round 1/100, elapsed time 0.01
+[IterativeImputer] Change: 1.6443802657682207, scaled tolerance: 0.015 
+[IterativeImputer] Ending imputation round 2/100, elapsed time 0.02
+[IterativeImputer] Change: 0.0830316620808409, scaled tolerance: 0.015 
+[IterativeImputer] Ending imputation round 3/100, elapsed time 0.03
+[IterativeImputer] Change: 0.0289166641679115, scaled tolerance: 0.015 
+[IterativeImputer] Ending imputation round 4/100, elapsed time 0.03
+[IterativeImputer] Change: 0.009636184792338298, scaled tolerance: 0.015 
+[IterativeImputer] Early stopping criterion reached.
+[IterativeImputer] Completing matrix with shape (241, 6)
+[IterativeImputer] Ending imputation round 1/4, elapsed time 0.00
+[IterativeImputer] Ending imputation round 2/4, elapsed time 0.00
+[IterativeImputer] Ending imputation round 3/4, elapsed time 0.00
+[IterativeImputer] Ending imputation round 4/4, elapsed time 0.00
+
+
+
+ +
+
+ +
+
+
+
+

Convert years float to int

+
+
+
+
+
+
In [68]:
+
+
+
imputed_countryXindicator_year = imputed_countryXindicator_year.round(0).astype(int)
+
+ +
+
+
+ +
+
+
+
+

Comparison correlation plot float-precentages-data

Before Imputation

+ +
+
+
+
+
+
In [60]:
+
+
+
corr_calc = countryXindicator_float.corr()
+sns.heatmap(corr_calc, vmin=-1, vmax=1, center=0, xticklabels=False, yticklabels=False, cmap='mako')
+
+ +
+
+
+ +
+
+ + +
+ +
Out[60]:
+ + + + +
+
<AxesSubplot:xlabel='Indicator Name', ylabel='Indicator Name'>
+
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +
+
+ +
+
+
+
+

After imputation

+ +
+
+
+
+
+
In [61]:
+
+
+
corr_calc = imputed_countryXindicator_float.corr()
+sns.heatmap(corr_calc, vmin=-1, vmax=1, center=0, xticklabels=False, yticklabels=False, cmap='mako')
+
+ +
+
+
+ +
+
+ + +
+ +
Out[61]:
+ + + + +
+
<AxesSubplot:xlabel='Indicator Name', ylabel='Indicator Name'>
+
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +
+
+ +
+
+
+
+

Comparison correlation plot yeardata

Before imputation

+ +
+
+
+
+
+
In [53]:
+
+
+
corr_calc = countryXindicator_year.corr()
+sns.heatmap(corr_calc, vmin=-1, vmax=1, center=0, cmap='mako')
+
+ +
+
+
+ +
+
+ + +
+ +
Out[53]:
+ + + + +
+
<AxesSubplot:xlabel='Indicator Name', ylabel='Indicator Name'>
+
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +
+
+ +
+
+
+
+

After imputation

+ +
+
+
+
+
+
In [54]:
+
+
+
corr_calc = imputed_countryXindicator_year.corr()
+sns.heatmap(corr_calc, vmin=-1, vmax=1, center=0, cmap='mako')
+
+ +
+
+
+ +
+
+ + +
+ +
Out[54]:
+ + + + +
+
<AxesSubplot:xlabel='Indicator Name', ylabel='Indicator Name'>
+
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +
+
+ +
+
+
+
+

Merge imputed dataframes

+
+
+
+
+
+
In [55]:
+
+
+
imputed_data = imputed_countryXindicator_year.merge(imputed_countryXindicator_float, how='inner', on="Country Code")
+imputed_data
+
+ +
+
+
+ +
+
+ + +
+ +
Out[55]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Indicator NameDuration of compulsory education (years)Official entrance age to lower secondary education (years)Official entrance age to primary education (years)Theoretical duration of primary education (years)Theoretical duration of secondary education (years)Theoretical duration of upper secondary education (years)Adjusted net enrolment rate, primary, both sexes (%)Gross enrolment ratio, lower secondary, both sexes (%)Gross enrolment ratio, lower secondary, female (%)Gross enrolment ratio, lower secondary, male (%)...Population growth (annual %)Population, female (% of total)Population, male (% of total)Prevalence of HIV, total (% of population ages 15-49)Primary completion rate, both sexes (%)Primary completion rate, female (%)Primary completion rate, male (%)Unemployment, female (% of female labor force) (modeled ILO estimate)Unemployment, male (% of male labor force) (modeled ILO estimate)Unemployment, total (% of total labor force) (modeled ILO estimate)
Country Code
ABW1312665396.63654191.07285790.68907691.406452...0.52465852.46552147.5344791.41642391.12574390.75253591.42594210.3495648.7465259.324957
AFG913766387.41687467.44761749.58044184.329559...2.94323448.45455851.5454420.10000093.31278188.49887897.92035912.7000007.7000008.600000
AGO612666387.44670390.90351390.52700391.325392...3.42802150.99101049.0089901.90000092.48617292.93003092.1437306.7000005.7000006.200000
ALB911657399.516937101.48837399.889503102.980438...-0.29120649.51459950.4854010.100000106.367561104.699371107.90012417.29999917.00000017.100000
AND1012666294.59243891.28108191.06735991.467822...-1.53783649.93739850.062602-0.30109990.51069489.17508391.67197414.79872611.02389411.875731
..................................................................
XKX1012666395.41333991.08456590.72179991.429833...-1.10388649.93739750.062603-0.42303391.46488491.25030491.6197229.6624679.2055259.289344
YEM912666386.15074490.90288190.43990491.274501...2.52025449.47085650.5291440.10000092.60948192.83722492.32681532.70000111.10000016.700001
ZAF914775396.50537691.06260390.91636491.240835...1.58532550.89760449.10239618.90000091.11144491.82484090.44171927.70000123.10000025.200001
ZMB714775393.18174491.01295490.82913391.267250...3.02412350.38476649.61523412.60000091.40617091.90597090.9765308.0000007.3000007.700000
ZWE713676494.62561091.04796790.92732191.251754...2.34564351.33499748.66500313.90000091.32510491.91346790.8062845.1000005.1000005.100000
+

241 rows × 54 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [56]:
+
+
+
bigtable = imputed_data.merge(df_c, how='left', on="Country Code")
+bigtable.columns
+
+ +
+
+
+ +
+
+ + +
+ +
Out[56]:
+ + + + +
+
Index(['Country Code', 'Duration of compulsory education (years)',
+       'Official entrance age to lower secondary education (years)',
+       'Official entrance age to primary education (years)',
+       'Theoretical duration of primary education (years)',
+       'Theoretical duration of secondary education (years)',
+       'Theoretical duration of upper secondary education (years)',
+       'Adjusted net enrolment rate, primary, both sexes (%)',
+       'Gross enrolment ratio, lower secondary, both sexes (%)',
+       'Gross enrolment ratio, lower secondary, female (%)',
+       'Gross enrolment ratio, lower secondary, male (%)',
+       'Gross enrolment ratio, pre-primary, both sexes (%)',
+       'Gross enrolment ratio, pre-primary, female (%)',
+       'Gross enrolment ratio, pre-primary, male (%)',
+       'Gross enrolment ratio, primary, both sexes (%)',
+       'Gross enrolment ratio, primary, female (%)',
+       'Gross enrolment ratio, primary, gender parity index (GPI)',
+       'Gross enrolment ratio, primary, male (%)',
+       'Gross enrolment ratio, secondary, both sexes (%)',
+       'Gross enrolment ratio, secondary, female (%)',
+       'Gross enrolment ratio, secondary, gender parity index (GPI)',
+       'Gross enrolment ratio, secondary, male (%)',
+       'Gross enrolment ratio, upper secondary, both sexes (%)',
+       'Gross intake ratio to Grade 1 of primary education, both sexes (%)',
+       'Gross intake ratio to Grade 1 of primary education, female (%)',
+       'Gross intake ratio to Grade 1 of primary education, male (%)',
+       'Internet users (per 100 people)',
+       'Labor force, female (% of total labor force)',
+       'Mortality rate, under-5 (per 1,000 live births)',
+       'Net enrolment rate, primary, both sexes (%)',
+       'Percentage of enrolment in pre-primary education in private institutions (%)',
+       'Percentage of enrolment in primary education in private institutions (%)',
+       'Percentage of enrolment in secondary education in private institutions (%)',
+       'Percentage of female students enrolled in primary education who are over-age, female (%)',
+       'Percentage of male students enrolled in primary education who are over-age, male (%)',
+       'Percentage of repeaters in primary education, all grades, both sexes (%)',
+       'Percentage of repeaters in primary education, all grades, female (%)',
+       'Percentage of repeaters in primary education, all grades, male (%)',
+       'Percentage of students enrolled in primary education who are over-age, both sexes (%)',
+       'Percentage of students in pre-primary education who are female (%)',
+       'Percentage of students in primary education who are female (%)',
+       'Percentage of students in secondary education who are female (%)',
+       'Percentage of students in secondary general education who are female (%)',
+       'Population ages 0-14 (% of total)',
+       'Population ages 15-64 (% of total)', 'Population growth (annual %)',
+       'Population, female (% of total)', 'Population, male (% of total)',
+       'Prevalence of HIV, total (% of population ages 15-49)',
+       'Primary completion rate, both sexes (%)',
+       'Primary completion rate, female (%)',
+       'Primary completion rate, male (%)',
+       'Unemployment, female (% of female labor force) (modeled ILO estimate)',
+       'Unemployment, male (% of male labor force) (modeled ILO estimate)',
+       'Unemployment, total (% of total labor force) (modeled ILO estimate)',
+       'Short Name', 'Table Name', 'Long Name', '2-alpha code',
+       'Currency Unit', 'Special Notes', 'Region', 'Income Group', 'WB-2 code',
+       'National accounts base year', 'National accounts reference year',
+       'SNA price valuation', 'Lending category', 'Other groups',
+       'System of National Accounts', 'Alternative conversion factor',
+       'PPP survey year', 'Balance of Payments Manual in use',
+       'External debt Reporting status', 'System of trade',
+       'Government Accounting concept', 'IMF data dissemination standard',
+       'Latest population census', 'Latest household survey',
+       'Source of most recent Income and expenditure data',
+       'Vital registration complete', 'Latest agricultural census',
+       'Latest industrial data', 'Latest trade data',
+       'Latest water withdrawal data', 'Unnamed: 31'],
+      dtype='object')
+
+ +
+ +
+
+ +
+
+
+
In [57]:
+
+
+
bigtable
+
+ +
+
+
+ +
+
+ + +
+ +
Out[57]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Country CodeDuration of compulsory education (years)Official entrance age to lower secondary education (years)Official entrance age to primary education (years)Theoretical duration of primary education (years)Theoretical duration of secondary education (years)Theoretical duration of upper secondary education (years)Adjusted net enrolment rate, primary, both sexes (%)Gross enrolment ratio, lower secondary, both sexes (%)Gross enrolment ratio, lower secondary, female (%)...IMF data dissemination standardLatest population censusLatest household surveySource of most recent Income and expenditure dataVital registration completeLatest agricultural censusLatest industrial dataLatest trade dataLatest water withdrawal dataUnnamed: 31
0ABW1312665396.63654191.07285790.689076...NaN2010NaNNaNYesNaNNaN2012.0NaNNaN
1AFG913766387.41687467.44761749.580441...General Data Dissemination System (GDDS)1979Multiple Indicator Cluster Survey (MICS), 2010/11Integrated household survey (IHS), 2008NaN2013/14NaN2012.02000NaN
2AGO612666387.44670390.90351390.527003...General Data Dissemination System (GDDS)1970Malaria Indicator Survey (MIS), 2011Integrated household survey (IHS), 2008NaN2015NaNNaN2005NaN
3ALB911657399.516937101.48837399.889503...General Data Dissemination System (GDDS)2011Demographic and Health Survey (DHS), 2008/09Living Standards Measurement Study Survey (LSM...Yes20122010.02012.02006NaN
4AND1012666294.59243891.28108191.067359...NaN2011. Population figures compiled from adminis...NaNNaNYesNaNNaN2006.0NaNNaN
..................................................................
236XKX1012666395.41333991.08456590.721799...General Data Dissemination System (GDDS)2011NaNIntegrated household survey (IHS), 2011NaNNaNNaNNaNNaNNaN
237YEM912666386.15074490.90288190.439904...General Data Dissemination System (GDDS)2004Demographic and Health Survey (DHS), 2013Expenditure survey/budget survey (ES/BS), 2005NaNNaN2006.02012.02005NaN
238ZAF914775396.50537691.06260390.916364...Special Data Dissemination Standard (SDDS)2011Demographic and Health Survey (DHS), 2003; Wor...Expenditure survey/budget survey (ES/BS), 2010NaN20072010.02012.02000NaN
239ZMB714775393.18174491.01295490.829133...General Data Dissemination System (GDDS)2010Demographic and Health Survey (DHS), 2013Integrated household survey (IHS), 2010NaN2010. Population and Housing Census.NaN2011.02002NaN
240ZWE713676494.62561091.04796790.927321...General Data Dissemination System (GDDS)2012Demographic and Health Survey (DHS), 2010/11Integrated household survey (IHS), 2011/12NaNNaNNaN2012.02002NaN
+

241 rows × 86 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [32]:
+
+
+
bigtable.to_csv("data/unlabeled/edstats_preprocessed.csv")
+
+ +
+
+
+ +
+
+ + +
+ +
Out[32]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Country CodeAdjusted net enrolment rate, primary, both sexes (%)Age population, age 0, female, UNESCOAge population, age 0, total, UNESCOAge population, age 01, female, UNESCOAge population, age 01, total, UNESCOAge population, age 02, female, UNESCOAge population, age 02, total, UNESCOAge population, age 03, female, UNESCOAge population, age 03, total, UNESCO...IMF data dissemination standardLatest population censusLatest household surveySource of most recent Income and expenditure dataVital registration completeLatest agricultural censusLatest industrial dataLatest trade dataLatest water withdrawal dataUnnamed: 31
0ABW99.725971542.0000001.112000e+03572.0000001.170000e+03600.0000001.224000e+03623.0000001.269000e+03...NaN2010NaNNaNYesNaNNaN2012.0NaNNaN
1AFG5789.706514682677.0000001.403010e+06650389.0000001.338500e+06620880.0000001.279403e+06593957.0000001.225345e+06...General Data Dissemination System (GDDS)1979Multiple Indicator Cluster Survey (MICS), 2010/11Integrated household survey (IHS), 2008NaN2013/14NaN2012.02000NaN
2AGO5521.646445414919.0000008.320930e+05396537.0000007.939500e+05379705.0000007.591640e+05364295.0000007.274550e+05...General Data Dissemination System (GDDS)1970Malaria Indicator Survey (MIS), 2011Integrated household survey (IHS), 2008NaN2015NaNNaN2005NaN
3ALB5797.34007523697.0000004.910500e+0424026.0000004.970900e+0424243.0000005.010400e+0424360.0000005.031500e+04...General Data Dissemination System (GDDS)2011Demographic and Health Survey (DHS), 2008/09Living Standards Measurement Study Survey (LSM...Yes20122010.02012.02006NaN
4AND1449.292555-278072.572576-6.716407e+05-178040.068286-7.673874e+05-251546.996823-4.877597e+05-173803.626626-3.196188e+05...NaN2011. Population figures compiled from adminis...NaNNaNYesNaNNaN2006.0NaNNaN
..................................................................
236XKX5764.457814-518585.303776-1.045572e+06-375532.499402-9.679352e+05-384853.639003-6.279717e+05-275863.980435-4.325407e+05...General Data Dissemination System (GDDS)2011NaNIntegrated household survey (IHS), 2011NaNNaNNaNNaNNaNNaN
237YEM5710.914403458859.0000009.360530e+05452601.0000009.230170e+05444988.0000009.072520e+05436223.0000008.891710e+05...General Data Dissemination System (GDDS)2004Demographic and Health Survey (DHS), 2013Expenditure survey/budget survey (ES/BS), 2005NaNNaN2006.02012.02005NaN
238ZAF4555.118457484535.0000009.806630e+05486901.0000009.852150e+05489516.0000009.901940e+05492299.0000009.954450e+05...Special Data Dissemination Standard (SDDS)2011Demographic and Health Survey (DHS), 2003; Wor...Expenditure survey/budget survey (ES/BS), 2010NaN20072010.02012.02000NaN
239ZMB5747.949748226616.0000004.573290e+05220950.0000004.454510e+05215890.0000004.348760e+05211367.0000004.254540e+05...General Data Dissemination System (GDDS)2010Demographic and Health Survey (DHS), 2013Integrated household survey (IHS), 2010NaN2010. Population and Housing Census.NaN2011.02002NaN
240ZWE5806.205918181422.0000003.647610e+05179761.0000003.611010e+05177982.0000003.572610e+05176130.0000003.533210e+05...General Data Dissemination System (GDDS)2012Demographic and Health Survey (DHS), 2010/11Integrated household survey (IHS), 2011/12NaNNaNNaN2012.02002NaN
+

241 rows × 635 columns

+
+
+ +
+ +
+
+ +
+
+
+ + + + + + diff --git a/documentation/WaterSecurity/notebooks/prep_edstats.html b/documentation/WaterSecurity/notebooks/prep_edstats.html new file mode 100644 index 0000000..b4d8c6c --- /dev/null +++ b/documentation/WaterSecurity/notebooks/prep_edstats.html @@ -0,0 +1,16665 @@ + + + + +Notebook + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
In [1]:
+
+
+
import pandas as pd
+import sklearn
+from helpers import *
+import matplotlib.pyplot as plt
+import sys
+sys.path.append("..")
+from data.unlabeled.raw import edstats_co as df_c, edstats_da as df_d, edstats_se as df_s
+import seaborn as sns
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
..\data\unlabeled\raw\__init__.py:41: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.
+  aquastat_eah = pd.read_csv(aquastat_eah_path, skipfooter=8)
+..\data\unlabeled\raw\__init__.py:42: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.
+  aquastat_wr = pd.read_csv(aquastat_wr_path, skipfooter=8)
+..\data\unlabeled\raw\__init__.py:43: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.
+  aquastat_wu = pd.read_csv(aquastat_wu_path, skipfooter=8)
+
+
+
+ +
+
+ +
+
+
+
+

Remember to extract Edstats_csv.zip to Edstats_csv

+
+
+
+
+
+
In [2]:
+
+
+
df_d.columns
+
+ +
+
+
+ +
+
+ + +
+ +
Out[2]:
+ + + + +
+
Index(['Country Name', 'Country Code', 'Indicator Name', 'Indicator Code',
+       '1970', '1971', '1972', '1973', '1974', '1975', '1976', '1977', '1978',
+       '1979', '1980', '1981', '1982', '1983', '1984', '1985', '1986', '1987',
+       '1988', '1989', '1990', '1991', '1992', '1993', '1994', '1995', '1996',
+       '1997', '1998', '1999', '2000', '2001', '2002', '2003', '2004', '2005',
+       '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014',
+       '2015', '2016', '2017', '2020', '2025', '2030', '2035', '2040', '2045',
+       '2050', '2055', '2060', '2065', '2070', '2075', '2080', '2085', '2090',
+       '2095', '2100', 'Unnamed: 69'],
+      dtype='object')
+
+ +
+ +
+
+ +
+
+
+
In [3]:
+
+
+
years = ['2015', '2016', '2017', '2020']
+stripped_df_d = df_d[['Country Code','Indicator Code',*years]]
+print("Non na values in col 2020:",stripped_df_d['2020'].count())
+stripped_df_d
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
Non na values in col 2020: 51436
+
+
+
+ +
+ +
Out[3]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Country CodeIndicator Code2015201620172020
0ARBUIS.NERA.2NaNNaNNaNNaN
1ARBUIS.NERA.2.FNaNNaNNaNNaN
2ARBUIS.NERA.2.GPINaNNaNNaNNaN
3ARBUIS.NERA.2.MNaNNaNNaNNaN
4ARBSE.PRM.TENRNaNNaNNaNNaN
.....................
886925ZWEUIS.LP.AG15T24.MNaNNaNNaNNaN
886926ZWESE.ADT.1524.LT.ZSNaNNaNNaNNaN
886927ZWESE.ADT.1524.LT.FE.ZSNaNNaNNaNNaN
886928ZWESE.ADT.1524.LT.FM.ZSNaNNaNNaNNaN
886929ZWESE.ADT.1524.LT.MA.ZSNaNNaNNaNNaN
+

886930 rows × 6 columns

+
+
+ +
+ +
+
+ +
+
+
+
+

Merge colums to remove null values

+
+
+
+
+
+
In [4]:
+
+
+
for year in years[:-1]:
+    fill_missing_with_column(stripped_df_d, '2020',year)
+print("Non na values in col 2020:", stripped_df_d['2020'].count())
+stripped_df_d
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
Non na values in col 2020: 132991
+
+
+
+ +
+ +
+ + +
+
C:\Users\joach\code-projects\WaterSecurity\unlabeled_preprocessing\helpers.py:15: SettingWithCopyWarning: 
+A value is trying to be set on a copy of a slice from a DataFrame.
+Try using .loc[row_indexer,col_indexer] = value instead
+
+See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
+  df[into] = df[into].combine_first(df[fro])
+C:\Users\joach\.conda\envs\wsenv\lib\site-packages\pandas\core\frame.py:4308: SettingWithCopyWarning: 
+A value is trying to be set on a copy of a slice from a DataFrame
+
+See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
+  return super().drop(
+
+
+
+ +
+ +
Out[4]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Country CodeIndicator Code2020
0ARBUIS.NERA.2NaN
1ARBUIS.NERA.2.FNaN
2ARBUIS.NERA.2.GPINaN
3ARBUIS.NERA.2.MNaN
4ARBSE.PRM.TENRNaN
............
886925ZWEUIS.LP.AG15T24.MNaN
886926ZWESE.ADT.1524.LT.ZSNaN
886927ZWESE.ADT.1524.LT.FE.ZSNaN
886928ZWESE.ADT.1524.LT.FM.ZSNaN
886929ZWESE.ADT.1524.LT.MA.ZSNaN
+

886930 rows × 3 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [5]:
+
+
+
df_d_withseries = stripped_df_d.merge(df_s, how='left', left_on='Indicator Code', right_on='Series Code')
+df_d_withseries.drop(['Indicator Code'], inplace=True, axis=1)
+
+ +
+
+
+ +
+
+
+
In [6]:
+
+
+
df_d_withseries.columns
+
+ +
+
+
+ +
+
+ + +
+ +
Out[6]:
+ + + + +
+
Index(['Country Code', '2020', 'Series Code', 'Topic', 'Indicator Name',
+       'Short definition', 'Long definition', 'Unit of measure', 'Periodicity',
+       'Base Period', 'Other notes', 'Aggregation method',
+       'Limitations and exceptions', 'Notes from original source',
+       'General comments', 'Source', 'Statistical concept and methodology',
+       'Development relevance', 'Related source links', 'Other web links',
+       'Related indicators', 'License Type', 'Unnamed: 20'],
+      dtype='object')
+
+ +
+ +
+
+ +
+
+
+
+

Rearange table to indicator on column

+
+
+
+
+
+
In [7]:
+
+
+
countryXindicator = df_d_withseries.pivot_table('2020',['Country Code'],'Indicator Name')
+countryXindicator
+
+ +
+
+
+ +
+
+ + +
+ +
Out[7]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Indicator NameAdjusted net enrolment rate, lower secondary, both sexes (%)Adjusted net enrolment rate, lower secondary, female (%)Adjusted net enrolment rate, lower secondary, gender parity index (GPI)Adjusted net enrolment rate, lower secondary, male (%)Adjusted net enrolment rate, primary, both sexes (%)Adjusted net enrolment rate, primary, female (%)Adjusted net enrolment rate, primary, gender parity index (GPI)Adjusted net enrolment rate, primary, male (%)Adjusted net enrolment rate, upper secondary, both sexes (%)Adjusted net enrolment rate, upper secondary, female (%)...Under-age enrolment ratio in secondary education, female (%)Under-age enrolment ratio in secondary education, male (%)Unemployment, female (% of female labor force) (modeled ILO estimate)Unemployment, male (% of male labor force) (modeled ILO estimate)Unemployment, total (% of total labor force) (modeled ILO estimate)Youth illiterate population, 15-24 years, % femaleYouth literacy rate, population 15-24 years, both sexes (%)Youth literacy rate, population 15-24 years, female (%)Youth literacy rate, population 15-24 years, gender parity index (GPI)Youth literacy rate, population 15-24 years, male (%)
Country Code
ABWNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AFGNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaN12.7000007.78.600000NaNNaNNaNNaNNaN
AGONaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaN6.7000005.76.200000NaNNaNNaNNaNNaN
ALBNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaN17.29999917.017.100000NaNNaNNaNNaNNaN
ANDNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaN47.80890100.00000100.000001.00000100.00000
..................................................................
XKXNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
YEMNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaN32.70000111.116.700001NaNNaNNaNNaNNaN
ZAFNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaN27.70000123.125.20000134.3480898.9557899.229041.0055298.68459
ZMBNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaN8.0000007.37.700000NaNNaNNaNNaNNaN
ZWENaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaN5.1000005.15.100000NaNNaNNaNNaNNaN
+

241 rows × 2047 columns

+
+
+ +
+ +
+
+ +
+
+
+
+

Find columns that contain "number", "Projection" or "$"

+
+
+
+
+
+
In [8]:
+
+
+
projection_col = [colname for colname in countryXindicator.columns if "Projection" in colname]
+number = [colname for colname in countryXindicator.columns if "number" in colname]
+dollar = [colname for colname in countryXindicator.columns if "$" in colname]
+
+ +
+
+
+ +
+
+
+
+

And remove them

+
+
+
+
+
+
In [9]:
+
+
+
countryXindicator.drop(projection_col + number+ dollar,inplace=True,axis=1)
+countryXindicator.shape
+
+ +
+
+
+ +
+
+ + +
+ +
Out[9]:
+ + + + +
+
(241, 1502)
+
+ +
+ +
+
+ +
+
+
+
+

Remove population data

+
+
+
+
+
+
In [10]:
+
+
+
countryXindicator.drop(['Population, total'], axis=1, inplace=True)
+
+ +
+
+
+ +
+
+
+
+

See how much of the data is missing and drop columns where more than 50% of the values are null

+
+
+
+
+
+
In [11]:
+
+
+
print_missing_percentages(countryXindicator)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
Max, min and mean number of missing values for the columns
+Max: 99.5850622406639 %
+Min: 3.7344398340248963 %
+Mean: 81.31204369977415 %
+
+
+
+ +
+ +
Out[11]:
+ + + + +
+
(3.7344398340248963, 99.5850622406639)
+
+ +
+ +
+
+ +
+
+
+
In [12]:
+
+
+
dropColumnHalf(countryXindicator)
+
+ +
+
+
+ +
+
+
+
In [13]:
+
+
+
print_missing_percentages(countryXindicator)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
Max, min and mean number of missing values for the columns
+Max: 49.79253112033195 %
+Min: 3.7344398340248963 %
+Mean: 26.60212079299217 %
+
+
+
+ +
+ +
Out[13]:
+ + + + +
+
(3.7344398340248963, 49.79253112033195)
+
+ +
+ +
+
+ +
+
+
+
In [14]:
+
+
+
countryXindicator.shape
+
+ +
+
+
+ +
+
+ + +
+ +
Out[14]:
+ + + + +
+
(241, 243)
+
+ +
+ +
+
+ +
+
+
+
In [15]:
+
+
+
 countryXindicator
+
+ +
+
+
+ +
+
+ + +
+ +
Out[15]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Indicator NameAdjusted net enrolment rate, primary, both sexes (%)Age population, age 0, female, UNESCOAge population, age 0, total, UNESCOAge population, age 01, female, UNESCOAge population, age 01, total, UNESCOAge population, age 02, female, UNESCOAge population, age 02, total, UNESCOAge population, age 03, female, UNESCOAge population, age 03, total, UNESCOAge population, age 04, female, UNESCO...Prevalence of HIV, total (% of population ages 15-49)Primary completion rate, both sexes (%)Primary completion rate, female (%)Primary completion rate, male (%)Theoretical duration of primary education (years)Theoretical duration of secondary education (years)Theoretical duration of upper secondary education (years)Unemployment, female (% of female labor force) (modeled ILO estimate)Unemployment, male (% of male labor force) (modeled ILO estimate)Unemployment, total (% of total labor force) (modeled ILO estimate)
Country Code
ABWNaN542.01112.0572.01170.0600.01224.0623.01269.0643.0...NaNNaNNaNNaN6.05.03.0NaNNaNNaN
AFGNaN682677.01403010.0650389.01338500.0620880.01279403.0593957.01225345.0569425.0...0.1NaNNaNNaN6.06.03.012.7000007.78.600000
AGONaN414919.0832093.0396537.0793950.0379705.0759164.0364295.0727455.0350180.0...1.9NaNNaNNaN6.06.03.06.7000005.76.200000
ALBNaN23697.049105.024026.049709.024243.050104.024360.050315.024397.0...0.1106.367561104.699371107.9001245.07.03.017.29999917.017.100000
ANDNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaN6.06.02.0NaNNaNNaN
..................................................................
XKXNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
YEMNaN458859.0936053.0452601.0923017.0444988.0907252.0436223.0889171.0426514.0...0.1NaNNaNNaN6.06.03.032.70000111.116.700001
ZAFNaN484535.0980663.0486901.0985215.0489516.0990194.0492299.0995445.0495165.0...18.9NaNNaNNaN7.05.03.027.70000123.125.200001
ZMBNaN226616.0457329.0220950.0445451.0215890.0434876.0211367.0425454.0207311.0...12.6NaNNaNNaN7.05.03.08.0000007.37.700000
ZWENaN181422.0364761.0179761.0361101.0177982.0357261.0176130.0353321.0174240.0...13.9NaNNaNNaN7.06.04.05.1000005.15.100000
+

241 rows × 243 columns

+
+
+ +
+ +
+
+ +
+
+
+
+

Split dataset into a dataframe containing year-data and a dataframe for the float-precentages-data

This i done for better imputation results

+ +
+
+
+
+
+
In [16]:
+
+
+
int_cols = find_all_integer_columns(countryXindicator)
+
+ +
+
+
+ +
+
+
+
In [17]:
+
+
+
countryXindicator_float = countryXindicator.drop(int_cols, axis=1)
+print(countryXindicator_float.index.to_list())
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
['ABW', 'AFG', 'AGO', 'ALB', 'AND', 'ARB', 'ARE', 'ARG', 'ARM', 'ASM', 'ATG', 'AUS', 'AUT', 'AZE', 'BDI', 'BEL', 'BEN', 'BFA', 'BGD', 'BGR', 'BHR', 'BHS', 'BIH', 'BLR', 'BLZ', 'BMU', 'BOL', 'BRA', 'BRB', 'BRN', 'BTN', 'BWA', 'CAF', 'CAN', 'CHE', 'CHI', 'CHL', 'CHN', 'CIV', 'CMR', 'COD', 'COG', 'COL', 'COM', 'CPV', 'CRI', 'CUB', 'CUW', 'CYM', 'CYP', 'CZE', 'DEU', 'DJI', 'DMA', 'DNK', 'DOM', 'DZA', 'EAP', 'EAS', 'ECA', 'ECS', 'ECU', 'EGY', 'EMU', 'ERI', 'ESP', 'EST', 'ETH', 'EUU', 'FIN', 'FJI', 'FRA', 'FRO', 'FSM', 'GAB', 'GBR', 'GEO', 'GHA', 'GIB', 'GIN', 'GMB', 'GNB', 'GNQ', 'GRC', 'GRD', 'GRL', 'GTM', 'GUM', 'GUY', 'HIC', 'HKG', 'HND', 'HPC', 'HRV', 'HTI', 'HUN', 'IDN', 'IMN', 'IND', 'IRL', 'IRN', 'IRQ', 'ISL', 'ISR', 'ITA', 'JAM', 'JOR', 'JPN', 'KAZ', 'KEN', 'KGZ', 'KHM', 'KIR', 'KNA', 'KOR', 'KWT', 'LAC', 'LAO', 'LBN', 'LBR', 'LBY', 'LCA', 'LCN', 'LDC', 'LIC', 'LIE', 'LKA', 'LMC', 'LMY', 'LSO', 'LTU', 'LUX', 'LVA', 'MAC', 'MAR', 'MCO', 'MDA', 'MDG', 'MDV', 'MEA', 'MEX', 'MHL', 'MIC', 'MKD', 'MLI', 'MLT', 'MMR', 'MNA', 'MNE', 'MNG', 'MNP', 'MOZ', 'MRT', 'MUS', 'MWI', 'MYS', 'NAC', 'NAM', 'NCL', 'NER', 'NGA', 'NIC', 'NLD', 'NOR', 'NPL', 'NRU', 'NZL', 'OED', 'OMN', 'PAK', 'PAN', 'PER', 'PHL', 'PLW', 'PNG', 'POL', 'PRI', 'PRK', 'PRT', 'PRY', 'PSE', 'PYF', 'QAT', 'ROU', 'RUS', 'RWA', 'SAS', 'SAU', 'SDN', 'SEN', 'SGP', 'SLB', 'SLE', 'SLV', 'SMR', 'SOM', 'SRB', 'SSA', 'SSD', 'SSF', 'STP', 'SUR', 'SVK', 'SVN', 'SWE', 'SWZ', 'SXM', 'SYC', 'SYR', 'TCA', 'TCD', 'TGO', 'THA', 'TJK', 'TKM', 'TLS', 'TON', 'TTO', 'TUN', 'TUR', 'TUV', 'TZA', 'UGA', 'UKR', 'UMC', 'URY', 'USA', 'UZB', 'VCT', 'VEN', 'VGB', 'VIR', 'VNM', 'VUT', 'WLD', 'WSM', 'XKX', 'YEM', 'ZAF', 'ZMB', 'ZWE']
+
+
+
+ +
+
+ +
+
+
+
In [18]:
+
+
+
countryXindicator_year = countryXindicator[int_cols]
+countryXindicator_year
+
+ +
+
+
+ +
+
+ + +
+ +
Out[18]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Indicator NameAge population, age 0, female, UNESCOAge population, age 0, total, UNESCOAge population, age 01, female, UNESCOAge population, age 01, total, UNESCOAge population, age 02, female, UNESCOAge population, age 02, total, UNESCOAge population, age 03, female, UNESCOAge population, age 03, total, UNESCOAge population, age 04, female, UNESCOAge population, age 04, total, UNESCO...Population, ages 7-13, malePopulation, ages 7-13, totalPopulation, ages 7-9, femalePopulation, ages 7-9, malePopulation, ages 7-9, totalPopulation, femalePopulation, maleTheoretical duration of primary education (years)Theoretical duration of secondary education (years)Theoretical duration of upper secondary education (years)
Country Code
ABW542.01112.0572.01170.0600.01224.0623.01269.0643.01310.0...5152.010124.02095.02169.04264.054743.049598.06.05.03.0
AFG682677.01403010.0650389.01338500.0620880.01279403.0593957.01225345.0569425.01175957.0...3481981.06728457.01475542.01580498.03056040.016346869.017389625.06.06.03.0
AGO414919.0832093.0396537.0793950.0379705.0759164.0364295.0727455.0350180.0698548.0...1988558.03995534.0913109.0904577.01817686.014205741.013653564.06.06.03.0
ALB23697.049105.024026.049709.024243.050104.024360.050315.024397.050378.0...179160.0346732.072246.077107.0149353.01426369.01454334.05.07.03.0
ANDNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaN6.06.02.0
..................................................................
XKXNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
YEM458859.0936053.0452601.0923017.0444988.0907252.0436223.0889171.0426514.0869195.0...2614331.05137180.01147011.01189006.02336017.013315678.013600529.06.06.03.0
ZAF484535.0980663.0486901.0985215.0489516.0990194.0492299.0995445.0495165.01000810.0...3615273.07175459.01516934.01543083.03060017.027999778.027012199.07.05.03.0
ZMB226616.0457329.0220950.0445451.0215890.0434876.0211367.0425454.0207311.0417041.0...1334582.02657396.0583300.0588617.01171917.08112243.07988344.07.05.03.0
ZWE181422.0364761.0179761.0361101.0177982.0357261.0176130.0353321.0174240.0349351.0...1156372.02310111.0501606.0502943.01004549.08099354.07678097.07.06.04.0
+

241 rows × 195 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [19]:
+
+
+
countryXindicator_year = countryXindicator_year[[colname for colname in countryXindicator_year.columns if "years" in colname]]
+countryXindicator_year
+
+ +
+
+
+ +
+
+ + +
+ +
Out[19]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Indicator NameDuration of compulsory education (years)Official entrance age to lower secondary education (years)Official entrance age to primary education (years)Theoretical duration of primary education (years)Theoretical duration of secondary education (years)Theoretical duration of upper secondary education (years)
Country Code
ABW13.012.06.06.05.03.0
AFG9.013.07.06.06.03.0
AGO6.012.06.06.06.03.0
ALB9.011.06.05.07.03.0
AND10.012.06.06.06.02.0
.....................
XKXNaNNaNNaNNaNNaNNaN
YEM9.012.06.06.06.03.0
ZAF9.014.07.07.05.03.0
ZMB7.014.07.07.05.03.0
ZWE7.013.06.07.06.04.0
+

241 rows × 6 columns

+
+
+ +
+ +
+
+ +
+
+
+
+

Impute both dataframes

+
+
+
+
+
+
In [20]:
+
+
+
imputed_countryXindicator_float = impute_df(countryXindicator_float, max_iter=100, verbose=2)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
[IterativeImputer] Completing matrix with shape (241, 48)
+[IterativeImputer] Ending imputation round 1/100, elapsed time 0.23
+[IterativeImputer] Change: 185.571939565928, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 2/100, elapsed time 0.42
+[IterativeImputer] Change: 84.11443482287976, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 3/100, elapsed time 0.62
+[IterativeImputer] Change: 40.004149972043805, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 4/100, elapsed time 0.82
+[IterativeImputer] Change: 20.57199335577451, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 5/100, elapsed time 1.01
+[IterativeImputer] Change: 12.447852809025877, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 6/100, elapsed time 1.21
+[IterativeImputer] Change: 10.982023559420153, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 7/100, elapsed time 1.41
+[IterativeImputer] Change: 9.335158590713679, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 8/100, elapsed time 1.62
+[IterativeImputer] Change: 8.566696528569699, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 9/100, elapsed time 1.83
+[IterativeImputer] Change: 7.68743911493866, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 10/100, elapsed time 2.03
+[IterativeImputer] Change: 6.844171756725839, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 11/100, elapsed time 2.24
+[IterativeImputer] Change: 6.065545725434555, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 12/100, elapsed time 2.44
+[IterativeImputer] Change: 5.36616411150322, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 13/100, elapsed time 2.64
+[IterativeImputer] Change: 4.744028755257943, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 14/100, elapsed time 2.84
+[IterativeImputer] Change: 4.1901923804245715, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 15/100, elapsed time 3.04
+[IterativeImputer] Change: 3.70294072516266, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 16/100, elapsed time 3.24
+[IterativeImputer] Change: 3.2688619527108522, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 17/100, elapsed time 3.44
+[IterativeImputer] Change: 2.88345738531942, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 18/100, elapsed time 3.64
+[IterativeImputer] Change: 2.532294563247444, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 19/100, elapsed time 3.84
+[IterativeImputer] Change: 2.2119869217502828, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 20/100, elapsed time 4.05
+[IterativeImputer] Change: 1.9202443611257713, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 21/100, elapsed time 4.26
+[IterativeImputer] Change: 1.6606990496546086, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 22/100, elapsed time 4.46
+[IterativeImputer] Change: 1.6559282826221846, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 23/100, elapsed time 4.66
+[IterativeImputer] Change: 1.6520065848505072, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 24/100, elapsed time 4.87
+[IterativeImputer] Change: 1.648782063252183, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 25/100, elapsed time 5.07
+[IterativeImputer] Change: 1.6461831356141814, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 26/100, elapsed time 5.27
+[IterativeImputer] Change: 1.644058054001174, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 27/100, elapsed time 5.48
+[IterativeImputer] Change: 1.6423013079998188, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 28/100, elapsed time 5.68
+[IterativeImputer] Change: 1.6408741216707456, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 29/100, elapsed time 5.87
+[IterativeImputer] Change: 1.6396788922926566, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 30/100, elapsed time 6.08
+[IterativeImputer] Change: 1.638655100233116, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 31/100, elapsed time 6.28
+[IterativeImputer] Change: 1.6377695134752297, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 32/100, elapsed time 6.48
+[IterativeImputer] Change: 1.6369872536064, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 33/100, elapsed time 6.68
+[IterativeImputer] Change: 1.636221623251295, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 34/100, elapsed time 6.89
+[IterativeImputer] Change: 1.6355083766661642, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 35/100, elapsed time 7.09
+[IterativeImputer] Change: 1.634821858203819, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 36/100, elapsed time 7.30
+[IterativeImputer] Change: 1.6341370631609828, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 37/100, elapsed time 7.50
+[IterativeImputer] Change: 1.6334747186241456, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 38/100, elapsed time 7.72
+[IterativeImputer] Change: 1.645652531918897, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 39/100, elapsed time 7.92
+[IterativeImputer] Change: 1.652182711035818, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 40/100, elapsed time 8.13
+[IterativeImputer] Change: 1.6532662904419548, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 41/100, elapsed time 8.33
+[IterativeImputer] Change: 1.649451831600862, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 42/100, elapsed time 8.51
+[IterativeImputer] Change: 1.6408222980663139, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 43/100, elapsed time 8.72
+[IterativeImputer] Change: 1.6294400496414387, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 44/100, elapsed time 8.92
+[IterativeImputer] Change: 1.6287678524729357, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 45/100, elapsed time 9.12
+[IterativeImputer] Change: 1.6281047469396985, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 46/100, elapsed time 9.32
+[IterativeImputer] Change: 1.6274834308429378, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 47/100, elapsed time 9.52
+[IterativeImputer] Change: 1.6270130873718072, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 48/100, elapsed time 9.72
+[IterativeImputer] Change: 1.6262940758389055, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 49/100, elapsed time 9.95
+[IterativeImputer] Change: 1.6257297763508762, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 50/100, elapsed time 10.16
+[IterativeImputer] Change: 1.6252298538321177, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 51/100, elapsed time 10.36
+[IterativeImputer] Change: 1.624722930666042, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 52/100, elapsed time 10.57
+[IterativeImputer] Change: 1.6242577689697895, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 53/100, elapsed time 10.78
+[IterativeImputer] Change: 1.6238212014114874, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 54/100, elapsed time 10.99
+[IterativeImputer] Change: 1.6234519318135652, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 55/100, elapsed time 11.19
+[IterativeImputer] Change: 1.6231115358163457, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 56/100, elapsed time 11.40
+[IterativeImputer] Change: 1.6228249713969374, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 57/100, elapsed time 11.59
+[IterativeImputer] Change: 1.6225670613424206, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 58/100, elapsed time 11.80
+[IterativeImputer] Change: 1.6222797867936543, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 59/100, elapsed time 12.00
+[IterativeImputer] Change: 1.6221342960698018, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 60/100, elapsed time 12.20
+[IterativeImputer] Change: 1.6219870713467206, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 61/100, elapsed time 12.39
+[IterativeImputer] Change: 1.6218646076142422, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 62/100, elapsed time 12.60
+[IterativeImputer] Change: 1.6217730363655758, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 63/100, elapsed time 12.80
+[IterativeImputer] Change: 1.621725788928061, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 64/100, elapsed time 13.00
+[IterativeImputer] Change: 1.6216920357302036, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 65/100, elapsed time 13.21
+[IterativeImputer] Change: 1.621698990708198, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 66/100, elapsed time 13.41
+[IterativeImputer] Change: 1.6217532944875095, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 67/100, elapsed time 13.61
+[IterativeImputer] Change: 1.6218227224444455, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 68/100, elapsed time 13.82
+[IterativeImputer] Change: 1.6218972339192113, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 69/100, elapsed time 14.01
+[IterativeImputer] Change: 1.6232902366910664, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 70/100, elapsed time 14.21
+[IterativeImputer] Change: 1.6249616723710512, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 71/100, elapsed time 14.41
+[IterativeImputer] Change: 1.6261259356463242, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 72/100, elapsed time 14.62
+[IterativeImputer] Change: 1.6281859862659571, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 73/100, elapsed time 14.82
+[IterativeImputer] Change: 1.63006029323919, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 74/100, elapsed time 15.03
+[IterativeImputer] Change: 1.6318311593012644, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 75/100, elapsed time 15.24
+[IterativeImputer] Change: 1.6336233225534909, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 76/100, elapsed time 15.44
+[IterativeImputer] Change: 1.6353960973093213, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 77/100, elapsed time 15.65
+[IterativeImputer] Change: 1.637182751172711, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 78/100, elapsed time 15.86
+[IterativeImputer] Change: 1.6389758111697363, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 79/100, elapsed time 16.06
+[IterativeImputer] Change: 1.6407763042253765, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 80/100, elapsed time 16.25
+[IterativeImputer] Change: 1.6425834310407716, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 81/100, elapsed time 16.45
+[IterativeImputer] Change: 1.6443968858747002, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 82/100, elapsed time 16.67
+[IterativeImputer] Change: 1.64625348689472, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 83/100, elapsed time 16.87
+[IterativeImputer] Change: 1.6481429500945106, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 84/100, elapsed time 17.07
+[IterativeImputer] Change: 1.6500518120410161, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 85/100, elapsed time 17.28
+[IterativeImputer] Change: 1.6519548194561064, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 86/100, elapsed time 17.48
+[IterativeImputer] Change: 1.6538680162736423, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 87/100, elapsed time 17.68
+[IterativeImputer] Change: 1.6552679864808504, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 88/100, elapsed time 17.88
+[IterativeImputer] Change: 1.6574626185722092, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 89/100, elapsed time 18.09
+[IterativeImputer] Change: 1.6594748268725177, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 90/100, elapsed time 18.30
+[IterativeImputer] Change: 1.6613749089305434, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 91/100, elapsed time 18.50
+[IterativeImputer] Change: 1.6632615294758013, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 92/100, elapsed time 18.70
+[IterativeImputer] Change: 1.6651267664591594, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 93/100, elapsed time 18.90
+[IterativeImputer] Change: 1.6669733028122995, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 94/100, elapsed time 19.11
+[IterativeImputer] Change: 1.6688041142649566, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 95/100, elapsed time 19.31
+[IterativeImputer] Change: 1.6706225132059456, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 96/100, elapsed time 19.52
+[IterativeImputer] Change: 1.672451264542782, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 97/100, elapsed time 19.72
+[IterativeImputer] Change: 1.6742766711767634, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 98/100, elapsed time 19.93
+[IterativeImputer] Change: 1.6761039010597747, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 99/100, elapsed time 20.13
+[IterativeImputer] Change: 1.6778935337913161, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Ending imputation round 100/100, elapsed time 20.33
+[IterativeImputer] Change: 1.679678914280904, scaled tolerance: 0.19410198974609402 
+[IterativeImputer] Completing matrix with shape (241, 48)
+[IterativeImputer] Ending imputation round 1/100, elapsed time 0.01
+[IterativeImputer] Ending imputation round 2/100, elapsed time 0.02
+[IterativeImputer] Ending imputation round 3/100, elapsed time 0.02
+[IterativeImputer] Ending imputation round 4/100, elapsed time 0.03
+[IterativeImputer] Ending imputation round 5/100, elapsed time 0.04
+[IterativeImputer] Ending imputation round 6/100, elapsed time 0.05
+[IterativeImputer] Ending imputation round 7/100, elapsed time 0.05
+[IterativeImputer] Ending imputation round 8/100, elapsed time 0.06
+[IterativeImputer] Ending imputation round 9/100, elapsed time 0.07
+[IterativeImputer] Ending imputation round 10/100, elapsed time 0.07
+[IterativeImputer] Ending imputation round 11/100, elapsed time 0.08
+[IterativeImputer] Ending imputation round 12/100, elapsed time 0.09
+[IterativeImputer] Ending imputation round 13/100, elapsed time 0.09
+[IterativeImputer] Ending imputation round 14/100, elapsed time 0.10
+[IterativeImputer] Ending imputation round 15/100, elapsed time 0.11
+[IterativeImputer] Ending imputation round 16/100, elapsed time 0.12
+[IterativeImputer] Ending imputation round 17/100, elapsed time 0.12
+[IterativeImputer] Ending imputation round 18/100, elapsed time 0.13
+[IterativeImputer] Ending imputation round 19/100, elapsed time 0.14
+[IterativeImputer] Ending imputation round 20/100, elapsed time 0.14
+[IterativeImputer] Ending imputation round 21/100, elapsed time 0.15
+[IterativeImputer] Ending imputation round 22/100, elapsed time 0.16
+[IterativeImputer] Ending imputation round 23/100, elapsed time 0.16
+[IterativeImputer] Ending imputation round 24/100, elapsed time 0.17
+[IterativeImputer] Ending imputation round 25/100, elapsed time 0.18
+[IterativeImputer] Ending imputation round 26/100, elapsed time 0.19
+
+
+
+ +
+ +
+ + +
+
C:\Users\joach\.conda\envs\wsenv\lib\site-packages\sklearn\impute\_iterative.py:685: ConvergenceWarning: [IterativeImputer] Early stopping criterion not reached.
+  warnings.warn("[IterativeImputer] Early stopping criterion not"
+
+
+
+ +
+ +
+ + +
+
[IterativeImputer] Ending imputation round 27/100, elapsed time 0.20
+[IterativeImputer] Ending imputation round 28/100, elapsed time 0.20
+[IterativeImputer] Ending imputation round 29/100, elapsed time 0.21
+[IterativeImputer] Ending imputation round 30/100, elapsed time 0.22
+[IterativeImputer] Ending imputation round 31/100, elapsed time 0.22
+[IterativeImputer] Ending imputation round 32/100, elapsed time 0.23
+[IterativeImputer] Ending imputation round 33/100, elapsed time 0.24
+[IterativeImputer] Ending imputation round 34/100, elapsed time 0.24
+[IterativeImputer] Ending imputation round 35/100, elapsed time 0.25
+[IterativeImputer] Ending imputation round 36/100, elapsed time 0.25
+[IterativeImputer] Ending imputation round 37/100, elapsed time 0.26
+[IterativeImputer] Ending imputation round 38/100, elapsed time 0.27
+[IterativeImputer] Ending imputation round 39/100, elapsed time 0.27
+[IterativeImputer] Ending imputation round 40/100, elapsed time 0.28
+[IterativeImputer] Ending imputation round 41/100, elapsed time 0.28
+[IterativeImputer] Ending imputation round 42/100, elapsed time 0.29
+[IterativeImputer] Ending imputation round 43/100, elapsed time 0.30
+[IterativeImputer] Ending imputation round 44/100, elapsed time 0.30
+[IterativeImputer] Ending imputation round 45/100, elapsed time 0.31
+[IterativeImputer] Ending imputation round 46/100, elapsed time 0.31
+[IterativeImputer] Ending imputation round 47/100, elapsed time 0.32
+[IterativeImputer] Ending imputation round 48/100, elapsed time 0.33
+[IterativeImputer] Ending imputation round 49/100, elapsed time 0.33
+[IterativeImputer] Ending imputation round 50/100, elapsed time 0.34
+[IterativeImputer] Ending imputation round 51/100, elapsed time 0.34
+[IterativeImputer] Ending imputation round 52/100, elapsed time 0.35
+[IterativeImputer] Ending imputation round 53/100, elapsed time 0.36
+[IterativeImputer] Ending imputation round 54/100, elapsed time 0.36
+[IterativeImputer] Ending imputation round 55/100, elapsed time 0.37
+[IterativeImputer] Ending imputation round 56/100, elapsed time 0.37
+[IterativeImputer] Ending imputation round 57/100, elapsed time 0.38
+[IterativeImputer] Ending imputation round 58/100, elapsed time 0.39
+[IterativeImputer] Ending imputation round 59/100, elapsed time 0.39
+[IterativeImputer] Ending imputation round 60/100, elapsed time 0.40
+[IterativeImputer] Ending imputation round 61/100, elapsed time 0.41
+[IterativeImputer] Ending imputation round 62/100, elapsed time 0.41
+[IterativeImputer] Ending imputation round 63/100, elapsed time 0.42
+[IterativeImputer] Ending imputation round 64/100, elapsed time 0.42
+[IterativeImputer] Ending imputation round 65/100, elapsed time 0.43
+[IterativeImputer] Ending imputation round 66/100, elapsed time 0.44
+[IterativeImputer] Ending imputation round 67/100, elapsed time 0.44
+[IterativeImputer] Ending imputation round 68/100, elapsed time 0.45
+[IterativeImputer] Ending imputation round 69/100, elapsed time 0.46
+[IterativeImputer] Ending imputation round 70/100, elapsed time 0.46
+[IterativeImputer] Ending imputation round 71/100, elapsed time 0.47
+[IterativeImputer] Ending imputation round 72/100, elapsed time 0.48
+[IterativeImputer] Ending imputation round 73/100, elapsed time 0.48
+[IterativeImputer] Ending imputation round 74/100, elapsed time 0.49
+[IterativeImputer] Ending imputation round 75/100, elapsed time 0.49
+[IterativeImputer] Ending imputation round 76/100, elapsed time 0.50
+[IterativeImputer] Ending imputation round 77/100, elapsed time 0.51
+[IterativeImputer] Ending imputation round 78/100, elapsed time 0.51
+[IterativeImputer] Ending imputation round 79/100, elapsed time 0.52
+[IterativeImputer] Ending imputation round 80/100, elapsed time 0.52
+[IterativeImputer] Ending imputation round 81/100, elapsed time 0.53
+[IterativeImputer] Ending imputation round 82/100, elapsed time 0.54
+[IterativeImputer] Ending imputation round 83/100, elapsed time 0.54
+[IterativeImputer] Ending imputation round 84/100, elapsed time 0.55
+[IterativeImputer] Ending imputation round 85/100, elapsed time 0.55
+[IterativeImputer] Ending imputation round 86/100, elapsed time 0.56
+[IterativeImputer] Ending imputation round 87/100, elapsed time 0.57
+[IterativeImputer] Ending imputation round 88/100, elapsed time 0.58
+[IterativeImputer] Ending imputation round 89/100, elapsed time 0.58
+[IterativeImputer] Ending imputation round 90/100, elapsed time 0.59
+[IterativeImputer] Ending imputation round 91/100, elapsed time 0.59
+[IterativeImputer] Ending imputation round 92/100, elapsed time 0.60
+[IterativeImputer] Ending imputation round 93/100, elapsed time 0.61
+[IterativeImputer] Ending imputation round 94/100, elapsed time 0.62
+[IterativeImputer] Ending imputation round 95/100, elapsed time 0.62
+[IterativeImputer] Ending imputation round 96/100, elapsed time 0.63
+[IterativeImputer] Ending imputation round 97/100, elapsed time 0.64
+[IterativeImputer] Ending imputation round 98/100, elapsed time 0.64
+[IterativeImputer] Ending imputation round 99/100, elapsed time 0.65
+[IterativeImputer] Ending imputation round 100/100, elapsed time 0.65
+
+
+
+ +
+
+ +
+
+
+
In [21]:
+
+
+
imputed_countryXindicator_year = impute_df(countryXindicator_year, max_iter=100, verbose=2)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
[IterativeImputer] Completing matrix with shape (241, 6)
+[IterativeImputer] Ending imputation round 1/100, elapsed time 0.01
+[IterativeImputer] Change: 1.6443802657682207, scaled tolerance: 0.015 
+[IterativeImputer] Ending imputation round 2/100, elapsed time 0.02
+[IterativeImputer] Change: 0.0830316620808409, scaled tolerance: 0.015 
+[IterativeImputer] Ending imputation round 3/100, elapsed time 0.03
+[IterativeImputer] Change: 0.0289166641679115, scaled tolerance: 0.015 
+[IterativeImputer] Ending imputation round 4/100, elapsed time 0.04
+[IterativeImputer] Change: 0.009636184792338298, scaled tolerance: 0.015 
+[IterativeImputer] Early stopping criterion reached.
+[IterativeImputer] Completing matrix with shape (241, 6)
+[IterativeImputer] Ending imputation round 1/4, elapsed time 0.00
+[IterativeImputer] Ending imputation round 2/4, elapsed time 0.00
+[IterativeImputer] Ending imputation round 3/4, elapsed time 0.00
+[IterativeImputer] Ending imputation round 4/4, elapsed time 0.00
+
+
+
+ +
+
+ +
+
+
+
+

Convert years float to int

+
+
+
+
+
+
In [22]:
+
+
+
imputed_countryXindicator_year = imputed_countryXindicator_year.round(0).astype(int)
+
+ +
+
+
+ +
+
+
+
+

Comparison correlation plot float-precentages-data

Before Imputation

+ +
+
+
+
+
+
In [23]:
+
+
+
corr_calc = countryXindicator_float.corr()
+sns.heatmap(corr_calc, vmin=-1, vmax=1, center=0, xticklabels=False, yticklabels=False, cmap='mako')
+
+ +
+
+
+ +
+
+ + +
+ +
Out[23]:
+ + + + +
+
<AxesSubplot:xlabel='Indicator Name', ylabel='Indicator Name'>
+
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +
+
+ +
+
+
+
+

After imputation

+ +
+
+
+
+
+
In [24]:
+
+
+
corr_calc = imputed_countryXindicator_float.corr()
+sns.heatmap(corr_calc, vmin=-1, vmax=1, center=0, xticklabels=False, yticklabels=False, cmap='mako')
+
+ +
+
+
+ +
+
+ + +
+ +
Out[24]:
+ + + + +
+
<AxesSubplot:xlabel='Indicator Name', ylabel='Indicator Name'>
+
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +
+
+ +
+
+
+
+

Comparison correlation plot yeardata

Before imputation

+ +
+
+
+
+
+
In [25]:
+
+
+
corr_calc = countryXindicator_year.corr()
+sns.heatmap(corr_calc, vmin=-1, vmax=1, center=0, cmap='mako')
+
+ +
+
+
+ +
+
+ + +
+ +
Out[25]:
+ + + + +
+
<AxesSubplot:xlabel='Indicator Name', ylabel='Indicator Name'>
+
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +
+
+ +
+
+
+
+

After imputation

+ +
+
+
+
+
+
In [26]:
+
+
+
corr_calc = imputed_countryXindicator_year.corr()
+sns.heatmap(corr_calc, vmin=-1, vmax=1, center=0, cmap='mako')
+
+ +
+
+
+ +
+
+ + +
+ +
Out[26]:
+ + + + +
+
<AxesSubplot:xlabel='Indicator Name', ylabel='Indicator Name'>
+
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +
+
+ +
+
+
+
+

Merge imputed dataframes

+
+
+
+
+
+
In [27]:
+
+
+
imputed_data = imputed_countryXindicator_year.merge(imputed_countryXindicator_float, how='inner', on="Country Code")
+imputed_data
+
+ +
+
+
+ +
+
+ + +
+ +
Out[27]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Indicator NameDuration of compulsory education (years)Official entrance age to lower secondary education (years)Official entrance age to primary education (years)Theoretical duration of primary education (years)Theoretical duration of secondary education (years)Theoretical duration of upper secondary education (years)Adjusted net enrolment rate, primary, both sexes (%)Gross enrolment ratio, lower secondary, both sexes (%)Gross enrolment ratio, lower secondary, female (%)Gross enrolment ratio, lower secondary, male (%)...Population growth (annual %)Population, female (% of total)Population, male (% of total)Prevalence of HIV, total (% of population ages 15-49)Primary completion rate, both sexes (%)Primary completion rate, female (%)Primary completion rate, male (%)Unemployment, female (% of female labor force) (modeled ILO estimate)Unemployment, male (% of male labor force) (modeled ILO estimate)Unemployment, total (% of total labor force) (modeled ILO estimate)
Country Code
ABW1312665396.63654191.07285790.68907691.406452...0.52465852.46552147.5344791.41642391.12574390.75253591.42594210.3495648.7465259.324957
AFG913766387.41687467.44761749.58044184.329559...2.94323448.45455851.5454420.10000093.31278188.49887897.92035912.7000007.7000008.600000
AGO612666387.44670390.90351390.52700391.325392...3.42802150.99101049.0089901.90000092.48617292.93003092.1437306.7000005.7000006.200000
ALB911657399.516937101.48837399.889503102.980438...-0.29120649.51459950.4854010.100000106.367561104.699371107.90012417.29999917.00000017.100000
AND1012666294.59243891.28108191.06735991.467822...-1.53783649.93739850.062602-0.30109990.51069489.17508391.67197414.79872611.02389411.875731
..................................................................
XKX1012666395.41333991.08456590.72179991.429833...-1.10388649.93739750.062603-0.42303391.46488491.25030491.6197229.6624679.2055259.289344
YEM912666386.15074490.90288190.43990491.274501...2.52025449.47085650.5291440.10000092.60948192.83722492.32681532.70000111.10000016.700001
ZAF914775396.50537691.06260390.91636491.240835...1.58532550.89760449.10239618.90000091.11144491.82484090.44171927.70000123.10000025.200001
ZMB714775393.18174491.01295490.82913391.267250...3.02412350.38476649.61523412.60000091.40617091.90597090.9765308.0000007.3000007.700000
ZWE713676494.62561091.04796790.92732191.251754...2.34564351.33499748.66500313.90000091.32510491.91346790.8062845.1000005.1000005.100000
+

241 rows × 54 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [28]:
+
+
+
bigtable = imputed_data.merge(df_c, how='left', on="Country Code")
+bigtable.columns
+
+ +
+
+
+ +
+
+ + +
+ +
Out[28]:
+ + + + +
+
Index(['Country Code', 'Duration of compulsory education (years)',
+       'Official entrance age to lower secondary education (years)',
+       'Official entrance age to primary education (years)',
+       'Theoretical duration of primary education (years)',
+       'Theoretical duration of secondary education (years)',
+       'Theoretical duration of upper secondary education (years)',
+       'Adjusted net enrolment rate, primary, both sexes (%)',
+       'Gross enrolment ratio, lower secondary, both sexes (%)',
+       'Gross enrolment ratio, lower secondary, female (%)',
+       'Gross enrolment ratio, lower secondary, male (%)',
+       'Gross enrolment ratio, pre-primary, both sexes (%)',
+       'Gross enrolment ratio, pre-primary, female (%)',
+       'Gross enrolment ratio, pre-primary, male (%)',
+       'Gross enrolment ratio, primary, both sexes (%)',
+       'Gross enrolment ratio, primary, female (%)',
+       'Gross enrolment ratio, primary, gender parity index (GPI)',
+       'Gross enrolment ratio, primary, male (%)',
+       'Gross enrolment ratio, secondary, both sexes (%)',
+       'Gross enrolment ratio, secondary, female (%)',
+       'Gross enrolment ratio, secondary, gender parity index (GPI)',
+       'Gross enrolment ratio, secondary, male (%)',
+       'Gross enrolment ratio, upper secondary, both sexes (%)',
+       'Gross intake ratio to Grade 1 of primary education, both sexes (%)',
+       'Gross intake ratio to Grade 1 of primary education, female (%)',
+       'Gross intake ratio to Grade 1 of primary education, male (%)',
+       'Internet users (per 100 people)',
+       'Labor force, female (% of total labor force)',
+       'Mortality rate, under-5 (per 1,000 live births)',
+       'Net enrolment rate, primary, both sexes (%)',
+       'Percentage of enrolment in pre-primary education in private institutions (%)',
+       'Percentage of enrolment in primary education in private institutions (%)',
+       'Percentage of enrolment in secondary education in private institutions (%)',
+       'Percentage of female students enrolled in primary education who are over-age, female (%)',
+       'Percentage of male students enrolled in primary education who are over-age, male (%)',
+       'Percentage of repeaters in primary education, all grades, both sexes (%)',
+       'Percentage of repeaters in primary education, all grades, female (%)',
+       'Percentage of repeaters in primary education, all grades, male (%)',
+       'Percentage of students enrolled in primary education who are over-age, both sexes (%)',
+       'Percentage of students in pre-primary education who are female (%)',
+       'Percentage of students in primary education who are female (%)',
+       'Percentage of students in secondary education who are female (%)',
+       'Percentage of students in secondary general education who are female (%)',
+       'Population ages 0-14 (% of total)',
+       'Population ages 15-64 (% of total)', 'Population growth (annual %)',
+       'Population, female (% of total)', 'Population, male (% of total)',
+       'Prevalence of HIV, total (% of population ages 15-49)',
+       'Primary completion rate, both sexes (%)',
+       'Primary completion rate, female (%)',
+       'Primary completion rate, male (%)',
+       'Unemployment, female (% of female labor force) (modeled ILO estimate)',
+       'Unemployment, male (% of male labor force) (modeled ILO estimate)',
+       'Unemployment, total (% of total labor force) (modeled ILO estimate)',
+       'Short Name', 'Table Name', 'Long Name', '2-alpha code',
+       'Currency Unit', 'Special Notes', 'Region', 'Income Group', 'WB-2 code',
+       'National accounts base year', 'National accounts reference year',
+       'SNA price valuation', 'Lending category', 'Other groups',
+       'System of National Accounts', 'Alternative conversion factor',
+       'PPP survey year', 'Balance of Payments Manual in use',
+       'External debt Reporting status', 'System of trade',
+       'Government Accounting concept', 'IMF data dissemination standard',
+       'Latest population census', 'Latest household survey',
+       'Source of most recent Income and expenditure data',
+       'Vital registration complete', 'Latest agricultural census',
+       'Latest industrial data', 'Latest trade data',
+       'Latest water withdrawal data', 'Unnamed: 31'],
+      dtype='object')
+
+ +
+ +
+
+ +
+
+
+
In [29]:
+
+
+
bigtable.set_index('Country Code', inplace=True)
+
+ +
+
+
+ +
+
+
+
In [30]:
+
+
+
bigtable
+
+ +
+
+
+ +
+
+ + +
+ +
Out[30]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Duration of compulsory education (years)Official entrance age to lower secondary education (years)Official entrance age to primary education (years)Theoretical duration of primary education (years)Theoretical duration of secondary education (years)Theoretical duration of upper secondary education (years)Adjusted net enrolment rate, primary, both sexes (%)Gross enrolment ratio, lower secondary, both sexes (%)Gross enrolment ratio, lower secondary, female (%)Gross enrolment ratio, lower secondary, male (%)...IMF data dissemination standardLatest population censusLatest household surveySource of most recent Income and expenditure dataVital registration completeLatest agricultural censusLatest industrial dataLatest trade dataLatest water withdrawal dataUnnamed: 31
Country Code
ABW1312665396.63654191.07285790.68907691.406452...NaN2010NaNNaNYesNaNNaN2012.0NaNNaN
AFG913766387.41687467.44761749.58044184.329559...General Data Dissemination System (GDDS)1979Multiple Indicator Cluster Survey (MICS), 2010/11Integrated household survey (IHS), 2008NaN2013/14NaN2012.02000NaN
AGO612666387.44670390.90351390.52700391.325392...General Data Dissemination System (GDDS)1970Malaria Indicator Survey (MIS), 2011Integrated household survey (IHS), 2008NaN2015NaNNaN2005NaN
ALB911657399.516937101.48837399.889503102.980438...General Data Dissemination System (GDDS)2011Demographic and Health Survey (DHS), 2008/09Living Standards Measurement Study Survey (LSM...Yes20122010.02012.02006NaN
AND1012666294.59243891.28108191.06735991.467822...NaN2011. Population figures compiled from adminis...NaNNaNYesNaNNaN2006.0NaNNaN
..................................................................
XKX1012666395.41333991.08456590.72179991.429833...General Data Dissemination System (GDDS)2011NaNIntegrated household survey (IHS), 2011NaNNaNNaNNaNNaNNaN
YEM912666386.15074490.90288190.43990491.274501...General Data Dissemination System (GDDS)2004Demographic and Health Survey (DHS), 2013Expenditure survey/budget survey (ES/BS), 2005NaNNaN2006.02012.02005NaN
ZAF914775396.50537691.06260390.91636491.240835...Special Data Dissemination Standard (SDDS)2011Demographic and Health Survey (DHS), 2003; Wor...Expenditure survey/budget survey (ES/BS), 2010NaN20072010.02012.02000NaN
ZMB714775393.18174491.01295490.82913391.267250...General Data Dissemination System (GDDS)2010Demographic and Health Survey (DHS), 2013Integrated household survey (IHS), 2010NaN2010. Population and Housing Census.NaN2011.02002NaN
ZWE713676494.62561091.04796790.92732191.251754...General Data Dissemination System (GDDS)2012Demographic and Health Survey (DHS), 2010/11Integrated household survey (IHS), 2011/12NaNNaNNaN2012.02002NaN
+

241 rows × 85 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [31]:
+
+
+
bigtable.to_csv("../data/unlabeled/preprocessed/edstats_preprocessed.csv")
+
+ +
+
+
+ +
+
+
+
In [ ]:
+
+
+
 
+
+ +
+
+
+ +
+
+
+ + + + + + diff --git a/documentation/WaterSecurity/notebooks/prep_hdro_v2-checkpoint.html b/documentation/WaterSecurity/notebooks/prep_hdro_v2-checkpoint.html new file mode 100644 index 0000000..8f3ab4f --- /dev/null +++ b/documentation/WaterSecurity/notebooks/prep_hdro_v2-checkpoint.html @@ -0,0 +1,85672 @@ + + + + +Notebook + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
In [159]:
+
+
+
import pandas as pd 
+from pandas.plotting import scatter_matrix
+import numpy as np
+import json
+from helpers import *
+from sklearn.preprocessing import StandardScaler
+from sklearn.decomposition import PCA
+import sys
+import matplotlib.pyplot as plt
+import seaborn as sns
+!pip install plotly
+import plotly.express as px
+sys.path.append("..")
+from data.unlabeled import hdro_inicator_values as inicator_values, hdro_country_name as country_name, hdro_indicator_name as indicator_name
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
Requirement already satisfied: plotly in /opt/anaconda3/lib/python3.7/site-packages (4.14.3)
+Requirement already satisfied: retrying>=1.3.3 in /opt/anaconda3/lib/python3.7/site-packages (from plotly) (1.3.3)
+Requirement already satisfied: six in /opt/anaconda3/lib/python3.7/site-packages (from plotly) (1.12.0)
+
+
+
+ +
+
+ +
+
+
+
In [148]:
+
+
+
#print(inicator_values)
+#print(country_name)
+#print(indicator_name)
+
+ +
+
+
+ +
+
+
+
+

Unwrap values to create good df

+
+
+
+
+
+
In [149]:
+
+
+
df_inicator_values = pd.DataFrame(inicator_values).T
+df_inicator_values.columns = [indicator_name[nm] for nm in df_inicator_values.columns]
+df_inicator_values = df_inicator_values.applymap(lambda x: x['2019'] if pd.notnull(x) else x)
+df_inicator_values
+
+ +
+
+
+ +
+
+ + +
+ +
Out[149]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Population with at least some secondary education (% ages 25 and older)Population with at least some secondary education, female (% ages 25 and older)Population with at least some secondary education, male (% ages 25 and older)Mean years of schooling, female (years)Mean years of schooling, male (years)Share of seats in parliament (% held by women)Adolescent birth rate (births per 1,000 women ages 15-19)Vulnerable employment (% of total employment)Total population (millions)Urban population (%)...Gross enrolment ratio, pre-primary (% of preschool-age children)Percentage of primary schools with access to the internetPercentage of secondary schools with access to the internetGross enrolment ratio, tertiary (% of tertiary school-age population)Share of graduates in science, technology, engineering and mathematics programmes at tertiary level, female (%)Share of graduates in science, technology, engineering and mathematics programmes at tertiary level, male (%)Share of graduates from science, technology, engineering and mathematics programmes in tertiary education who are female (%)Share of graduates from science, technology, engineering and mathematics programmes in tertiary education who are male (%)Primary school teachers trained to teach (%)Pupil-teacher ratio, primary school (pupils per teacher)
AFG26.08013.22036.9201.9486.00627.24468.95779.72638.04225.8...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AGO30.23223.13338.0564.0236.35930.000150.52665.99531.82566.2...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ALB93.17493.70092.4979.70210.61429.50819.64252.8522.88161.2...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AND72.32771.48473.32710.43910.56446.429NaNNaN0.07788.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ARG57.15859.16154.82811.12310.72939.87762.78221.80544.78192.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
..................................................................
WSM74.94279.12771.583NaNNaN10.00023.88629.9830.19718.1...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
YEM28.02019.92036.9182.8805.1460.97160.35245.62729.16237.3...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ZAF75.47874.97778.20710.03110.29145.33367.90810.29858.55866.9...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ZMB44.44038.48854.0686.2838.17617.964120.11278.13417.86144.1...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ZWE64.93559.79270.7838.0668.92334.57186.13564.73914.64532.2...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
+

195 rows × 98 columns

+
+
+ +
+ +
+
+ +
+
+
+
+

Display the max, min and mean number of null values per column

+
+
+
+
+
+
In [150]:
+
+
+
print_missing_percentages(df_inicator_values)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
Max, min and mean number of missing values for the columns
+Max: 98.97435897435898 %
+Min: 0.0 %
+Mean: 37.566718995290415 %
+
+
+
+ +
+ +
Out[150]:
+ + + + +
+
(0.0, 98.97435897435898)
+
+ +
+ +
+
+ +
+
+
+
+

There is a high number of missing values, we therefore remove columns where more than 50% of the data is missing

+
+
+
+
+
+
In [151]:
+
+
+
dropColumnHalf(df_inicator_values)
+
+ +
+
+
+ +
+
+
+
+

Again see the max, min and mean number of missing values per column

+
+
+
+
+
+
In [152]:
+
+
+
min_missing, max_missing = print_missing_percentages(df_inicator_values)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
Max, min and mean number of missing values for the columns
+Max: 49.743589743589745 %
+Min: 0.0 %
+Mean: 10.616150019135096 %
+
+
+
+ +
+
+ +
+
+
+
In [153]:
+
+
+
df_inicator_values.describe()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[153]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Population with at least some secondary education (% ages 25 and older)Population with at least some secondary education, female (% ages 25 and older)Population with at least some secondary education, male (% ages 25 and older)Mean years of schooling, female (years)Mean years of schooling, male (years)Share of seats in parliament (% held by women)Adolescent birth rate (births per 1,000 women ages 15-19)Vulnerable employment (% of total employment)Total population (millions)Urban population (%)...Gender Development Index (GDI)Estimated gross national income per capita, female (2017 PPP $)Estimated gross national income per capita, male (2017 PPP $)Human Development Index (HDI), femaleHuman Development Index (HDI), maleInequality-adjusted income indexOverall loss in HDI due to inequality (%)Inequality in income (%)Coefficient of human inequalityInequality-adjusted HDI (IHDI)
count175.000000167.000000167.000000174.000000174.000000193.000000185.000000180.000000195.000000195.000000...167.000000178.000000178.000000167.000000167.000000156.000000152.000000156.000000152.000000152.000000
mean61.06807461.73601265.8235878.4800179.13340222.98129548.30934638.25801139.39142659.257436...0.93899414440.99851124458.3313540.7026830.7421860.54506419.38914523.40138519.0025990.595250
std29.61079829.28405026.3953583.4213322.80298411.82878440.52883427.774415146.48585523.231038...0.07455915359.93598623943.4826280.1658670.1431940.1727899.9487189.7440049.7773240.190002
min0.0000001.7380009.0000001.0700002.2560000.1000000.2830000.1440000.01100013.200000...0.488000186.041000640.1050000.2700000.4320000.1760004.4440008.5000004.4240000.232000
25%37.29650036.92500045.3565005.8500006.73375014.76500013.17700012.5382502.08100041.200000...0.9085002925.6142506275.9337500.5770000.6215000.40475010.79225016.60300010.5940000.431500
50%64.82800068.06700070.6820009.1110009.25250021.09400040.53600032.5335008.77200060.000000...0.9650008399.44250016951.3570000.7300000.7600000.52750017.93450021.77950017.5260000.604000
75%89.14500087.99050090.91650011.23050011.55100030.00000070.50400063.34550028.56250078.000000...0.98600022583.77950035488.4760000.8315000.8485000.69175027.61525028.62500027.0125000.767250
max100.000000100.000000100.00000013.88200014.43100055.660000186.53800094.5810001433.784000100.000000...1.03600071387.276000107833.0290000.9490000.9650000.85800045.30700056.99600044.1670000.899000
+

8 rows × 67 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [43]:
+
+
+
#Find columns that only contain integers or null values
+#find_all_integer_columns(df_inicator_values)
+
+ +
+
+
+ +
+
+
+
In [154]:
+
+
+
df_inicator_values.columns.values
+
+ +
+
+
+ +
+
+ + +
+ +
Out[154]:
+ + + + +
+
array(['Population with at least some secondary education (% ages 25 and older)',
+       'Population with at least some secondary education, female (% ages 25 and older)',
+       'Population with at least some secondary education, male (% ages 25 and older)',
+       'Mean years of schooling, female (years)',
+       'Mean years of schooling, male (years)',
+       'Share of seats in parliament (% held by women)',
+       'Adolescent birth rate (births per 1,000 women ages 15-19)',
+       'Vulnerable employment (% of total employment)',
+       'Total population (millions)', 'Urban population (%)',
+       'Labour force participation rate (% ages 15 and older), female',
+       'Labour force participation rate (% ages 15 and older), male',
+       'Sex ratio at birth (male to female births)',
+       'Remittances, inflows (% of GDP)',
+       'Foreign direct investment, net inflows (% of GDP)',
+       'Population ages 15?64 (millions)',
+       'Infants lacking immunization, measles (% of one-year-olds)',
+       'Infants lacking immunization, DTP (% of one-year-olds)',
+       'Gross fixed capital formation (% of GDP)',
+       'Gender Inequality Index (GII)',
+       'Life expectancy at birth (years)',
+       'Expected years of schooling (years)',
+       'Inequality-adjusted education index',
+       'Inequality-adjusted life expectancy index',
+       'Inequality in education (%)', 'Inequality in life expectancy (%)',
+       'Mean years of schooling (years)', 'Life expectancy index',
+       'Income index', 'Education index',
+       'Unemployment, youth (% ages 15?24)',
+       'Private capital flows (% of GDP)',
+       'Life expectancy at birth, female (years)',
+       'Life expectancy at birth, male (years)',
+       'Young age (0-14) dependency ratio (per 100 people ages 15-64)',
+       'Old-age (65 and older) dependency ratio (per 100 people ages 15-64)',
+       'Expected years of schooling, female (years)',
+       'Expected years of schooling, male (years)',
+       'Population ages 65 and older (millions)',
+       'Population under age 5 (millions)',
+       'Exports and imports (% of GDP)', 'Human Development Index (HDI)',
+       'Unemployment, total (% of labour force)', 'HDI rank',
+       'Youth not in school or employment (% ages 15-24)',
+       'Labour force participation rate (% ages 15 and older)',
+       'Employment to population ratio (% ages 15 and older)',
+       'Employment in agriculture (% of total employment)',
+       'Employment in services (% of total employment)',
+       'Working poor at PPP$3.20 a day (% of total employment)',
+       'Total unemployment rate (female to male ratio)',
+       'Youth unemployment rate (female to male ratio)',
+       'Share of employment in nonagriculture, female (% of total employment in nonagriculture)',
+       'Gross capital formation (% of GDP)',
+       'Gross domestic product (GDP), total (2017 PPP $ billions)',
+       'GDP per capita (2017 PPP $)',
+       'Gross national income (GNI) per capita (constant 2017 PPP$)',
+       'Gender Development Index (GDI)',
+       'Estimated gross national income per capita, female (2017 PPP $)',
+       'Estimated gross national income per capita, male (2017 PPP $)',
+       'Human Development Index (HDI), female',
+       'Human Development Index (HDI), male',
+       'Inequality-adjusted income index',
+       'Overall loss in HDI due to inequality (%)',
+       'Inequality in income (%)', 'Coefficient of human inequality',
+       'Inequality-adjusted HDI (IHDI)'], dtype=object)
+
+ +
+ +
+
+ +
+
+
+
In [161]:
+
+
+
size = df_inicator_values.shape[1]
+corr = df_inicator_values.corr()
+plt.subplots(figsize=(20,20))
+sns.heatmap(corr, vmin=-1, vmax=1, center=0, xticklabels=range(size), yticklabels=range(size),cmap='mako')
+
+ +
+
+
+ +
+
+ + +
+ +
Out[161]:
+ + + + +
+
<matplotlib.axes._subplots.AxesSubplot at 0x7f8a6180c0d0>
+
+ +
+ +
+ +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+
+
+
In [167]:
+
+
+
percentage_columns = []
+money_columns = []
+index_columns = []
+year_columns = []
+rest = []
+
+for column in df_inicator_values.columns.values:
+    if '%' in column:
+        percentage_columns.append(column)
+    elif '$' in column:
+        money_columns.append(column)
+    elif 'years' in column:
+        year_columns.append(column)
+    elif 'index' in column.lower():
+        index_columns.append(column)
+    else:
+        rest.append(column)
+
+print(percentage_columns,'\n',len(percentage_columns))
+print(money_columns,'\n',len(money_columns))
+print(index_columns,'\n',len(index_columns))
+print(year_columns,'\n',len(year_columns))
+print(rest,'\n',len(rest))
+
+print(len(percentage_columns)+len(money_columns)+len(index_columns)+len(year_columns)+len(rest))
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
['Population with at least some secondary education (% ages 25 and older)', 'Population with at least some secondary education, female (% ages 25 and older)', 'Population with at least some secondary education, male (% ages 25 and older)', 'Share of seats in parliament (% held by women)', 'Vulnerable employment (% of total employment)', 'Urban population (%)', 'Labour force participation rate (% ages 15 and older), female', 'Labour force participation rate (% ages 15 and older), male', 'Remittances, inflows (% of GDP)', 'Foreign direct investment, net inflows (% of GDP)', 'Infants lacking immunization, measles (% of one-year-olds)', 'Infants lacking immunization, DTP (% of one-year-olds)', 'Gross fixed capital formation (% of GDP)', 'Inequality in education (%)', 'Inequality in life expectancy (%)', 'Unemployment, youth (% ages 15?24)', 'Private capital flows (% of GDP)', 'Exports and imports (% of GDP)', 'Unemployment, total (% of labour force)', 'Youth not in school or employment (% ages 15-24)', 'Labour force participation rate (% ages 15 and older)', 'Employment to population ratio (% ages 15 and older)', 'Employment in agriculture (% of total employment)', 'Employment in services (% of total employment)', 'Working poor at PPP$3.20 a day (% of total employment)', 'Share of employment in nonagriculture, female (% of total employment in nonagriculture)', 'Gross capital formation (% of GDP)', 'Overall loss in HDI due to inequality (%)', 'Inequality in income (%)'] 
+ 29
+['Gross domestic product (GDP), total (2017 PPP $ billions)', 'GDP per capita (2017 PPP $)', 'Gross national income (GNI) per capita (constant 2017 PPP$)', 'Estimated gross national income per capita, female (2017 PPP $)', 'Estimated gross national income per capita, male (2017 PPP $)'] 
+ 5
+['Gender Inequality Index (GII)', 'Inequality-adjusted education index', 'Inequality-adjusted life expectancy index', 'Life expectancy index', 'Income index', 'Education index', 'Human Development Index (HDI)', 'Gender Development Index (GDI)', 'Human Development Index (HDI), female', 'Human Development Index (HDI), male', 'Inequality-adjusted income index'] 
+ 11
+['Mean years of schooling, female (years)', 'Mean years of schooling, male (years)', 'Life expectancy at birth (years)', 'Expected years of schooling (years)', 'Mean years of schooling (years)', 'Life expectancy at birth, female (years)', 'Life expectancy at birth, male (years)', 'Expected years of schooling, female (years)', 'Expected years of schooling, male (years)'] 
+ 9
+['Adolescent birth rate (births per 1,000 women ages 15-19)', 'Total population (millions)', 'Sex ratio at birth (male to female births)', 'Population ages 15?64 (millions)', 'Young age (0-14) dependency ratio (per 100 people ages 15-64)', 'Old-age (65 and older) dependency ratio (per 100 people ages 15-64)', 'Population ages 65 and older (millions)', 'Population under age 5 (millions)', 'HDI rank', 'Total unemployment rate (female to male ratio)', 'Youth unemployment rate (female to male ratio)', 'Coefficient of human inequality', 'Inequality-adjusted HDI (IHDI)'] 
+ 13
+67
+
+
+
+ +
+
+ +
+
+
+
+

Dataframe is splitted

+
+
+
+
+
+
In [168]:
+
+
+
split_df1 = df_inicator_values[percentage_columns]
+split_df2 = df_inicator_values[money_columns]
+split_df3 = df_inicator_values[index_columns]
+split_df4 = df_inicator_values[year_columns]
+split_df5 = df_inicator_values[rest]
+
+ +
+
+
+ +
+
+
+
In [170]:
+
+
+
print('- Dataframe 1 -')
+min1, max1 = print_missing_percentages(split_df1)
+print('- Dataframe 2 -')
+min2, max2 = print_missing_percentages(split_df2)
+print('- Dataframe 3 -')
+min3, max3 = print_missing_percentages(split_df3)
+print('- Dataframe 4 -')
+min4, max4 = print_missing_percentages(split_df4)
+print('- Dataframe 5 -')
+min5, max5 = print_missing_percentages(split_df5)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
- Dataframe 1 -
+Max, min and mean number of missing values for the columns
+Max: 49.743589743589745 %
+Min: 0.0 %
+Mean: 14.624226348364274 %
+- Dataframe 2 -
+Max, min and mean number of missing values for the columns
+Max: 8.717948717948717 %
+Min: 2.051282051282051 %
+Mean: 6.153846153846153 %
+- Dataframe 3 -
+Max, min and mean number of missing values for the columns
+Max: 20.0 %
+Min: 2.051282051282051 %
+Mean: 9.790209790209792 %
+- Dataframe 4 -
+Max, min and mean number of missing values for the columns
+Max: 10.76923076923077 %
+Min: 1.0256410256410255 %
+Mean: 5.584045584045585 %
+- Dataframe 5 -
+Max, min and mean number of missing values for the columns
+Max: 22.05128205128205 %
+Min: 0.0 %
+Mean: 7.57396449704142 %
+
+
+
+ +
+
+ +
+
+
+
+

Imputation of the individual datasets

idf --> stands for imputed dataframe

+
+
+
+
+
+
In [176]:
+
+
+
idf1 = impute_df(split_df1, max_iter= int(max1), verbose=2)
+size = idf1.shape[1]
+corr = idf1.corr()
+plt.subplots(figsize=(20,20))
+sns.heatmap(corr, vmin=-1, vmax=1, center=0, xticklabels=range(size), yticklabels=range(size))
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
[IterativeImputer] Completing matrix with shape (195, 29)
+[IterativeImputer] Ending imputation round 1/49, elapsed time 0.59
+[IterativeImputer] Ending imputation round 2/49, elapsed time 0.64
+[IterativeImputer] Ending imputation round 3/49, elapsed time 0.70
+[IterativeImputer] Ending imputation round 4/49, elapsed time 0.76
+[IterativeImputer] Ending imputation round 5/49, elapsed time 0.83
+[IterativeImputer] Ending imputation round 6/49, elapsed time 0.89
+[IterativeImputer] Ending imputation round 7/49, elapsed time 0.94
+[IterativeImputer] Ending imputation round 8/49, elapsed time 1.00
+[IterativeImputer] Ending imputation round 9/49, elapsed time 1.06
+[IterativeImputer] Ending imputation round 10/49, elapsed time 1.13
+[IterativeImputer] Ending imputation round 11/49, elapsed time 1.18
+[IterativeImputer] Ending imputation round 12/49, elapsed time 1.23
+[IterativeImputer] Ending imputation round 13/49, elapsed time 1.30
+[IterativeImputer] Ending imputation round 14/49, elapsed time 1.36
+[IterativeImputer] Ending imputation round 15/49, elapsed time 1.42
+[IterativeImputer] Ending imputation round 16/49, elapsed time 1.48
+[IterativeImputer] Ending imputation round 17/49, elapsed time 1.58
+[IterativeImputer] Ending imputation round 18/49, elapsed time 1.65
+[IterativeImputer] Ending imputation round 19/49, elapsed time 1.71
+[IterativeImputer] Ending imputation round 20/49, elapsed time 1.78
+[IterativeImputer] Ending imputation round 21/49, elapsed time 1.88
+[IterativeImputer] Ending imputation round 22/49, elapsed time 1.94
+[IterativeImputer] Ending imputation round 23/49, elapsed time 2.04
+[IterativeImputer] Ending imputation round 24/49, elapsed time 2.13
+[IterativeImputer] Ending imputation round 25/49, elapsed time 2.21
+[IterativeImputer] Ending imputation round 26/49, elapsed time 2.28
+[IterativeImputer] Ending imputation round 27/49, elapsed time 2.46
+[IterativeImputer] Ending imputation round 28/49, elapsed time 2.53
+[IterativeImputer] Ending imputation round 29/49, elapsed time 2.60
+[IterativeImputer] Ending imputation round 30/49, elapsed time 2.66
+[IterativeImputer] Ending imputation round 31/49, elapsed time 2.76
+[IterativeImputer] Ending imputation round 32/49, elapsed time 2.85
+[IterativeImputer] Ending imputation round 33/49, elapsed time 2.95
+[IterativeImputer] Ending imputation round 34/49, elapsed time 3.06
+[IterativeImputer] Ending imputation round 35/49, elapsed time 3.16
+[IterativeImputer] Ending imputation round 36/49, elapsed time 3.23
+[IterativeImputer] Ending imputation round 37/49, elapsed time 3.29
+[IterativeImputer] Ending imputation round 38/49, elapsed time 3.36
+[IterativeImputer] Ending imputation round 39/49, elapsed time 3.40
+[IterativeImputer] Ending imputation round 40/49, elapsed time 3.46
+[IterativeImputer] Ending imputation round 41/49, elapsed time 3.55
+[IterativeImputer] Ending imputation round 42/49, elapsed time 3.60
+[IterativeImputer] Ending imputation round 43/49, elapsed time 3.66
+[IterativeImputer] Ending imputation round 44/49, elapsed time 3.71
+[IterativeImputer] Ending imputation round 45/49, elapsed time 3.77
+[IterativeImputer] Ending imputation round 46/49, elapsed time 3.83
+[IterativeImputer] Ending imputation round 47/49, elapsed time 3.90
+[IterativeImputer] Ending imputation round 48/49, elapsed time 4.00
+[IterativeImputer] Ending imputation round 49/49, elapsed time 4.05
+[IterativeImputer] Completing matrix with shape (195, 29)
+[IterativeImputer] Ending imputation round 1/49, elapsed time 0.00
+[IterativeImputer] Ending imputation round 2/49, elapsed time 0.01
+[IterativeImputer] Ending imputation round 3/49, elapsed time 0.01
+[IterativeImputer] Ending imputation round 4/49, elapsed time 0.02
+[IterativeImputer] Ending imputation round 5/49, elapsed time 0.02
+[IterativeImputer] Ending imputation round 6/49, elapsed time 0.02
+[IterativeImputer] Ending imputation round 7/49, elapsed time 0.03
+[IterativeImputer] Ending imputation round 8/49, elapsed time 0.03
+[IterativeImputer] Ending imputation round 9/49, elapsed time 0.04
+[IterativeImputer] Ending imputation round 10/49, elapsed time 0.04
+[IterativeImputer] Ending imputation round 11/49, elapsed time 0.05
+[IterativeImputer] Ending imputation round 12/49, elapsed time 0.05
+[IterativeImputer] Ending imputation round 13/49, elapsed time 0.05
+[IterativeImputer] Ending imputation round 14/49, elapsed time 0.06
+[IterativeImputer] Ending imputation round 15/49, elapsed time 0.06
+[IterativeImputer] Ending imputation round 16/49, elapsed time 0.07
+[IterativeImputer] Ending imputation round 17/49, elapsed time 0.07
+[IterativeImputer] Ending imputation round 18/49, elapsed time 0.07
+[IterativeImputer] Ending imputation round 19/49, elapsed time 0.08
+[IterativeImputer] Ending imputation round 20/49, elapsed time 0.08
+[IterativeImputer] Ending imputation round 21/49, elapsed time 0.09
+[IterativeImputer] Ending imputation round 22/49, elapsed time 0.09
+[IterativeImputer] Ending imputation round 23/49, elapsed time 0.10
+[IterativeImputer] Ending imputation round 24/49, elapsed time 0.10
+[IterativeImputer] Ending imputation round 25/49, elapsed time 0.10
+[IterativeImputer] Ending imputation round 26/49, elapsed time 0.11
+[IterativeImputer] Ending imputation round 27/49, elapsed time 0.12
+[IterativeImputer] Ending imputation round 28/49, elapsed time 0.12
+[IterativeImputer] Ending imputation round 29/49, elapsed time 0.12
+[IterativeImputer] Ending imputation round 30/49, elapsed time 0.13
+[IterativeImputer] Ending imputation round 31/49, elapsed time 0.14
+[IterativeImputer] Ending imputation round 32/49, elapsed time 0.14/opt/anaconda3/lib/python3.7/site-packages/sklearn/impute/_iterative.py:603: ConvergenceWarning:
+
+[IterativeImputer] Early stopping criterion not reached.
+
+
+[IterativeImputer] Ending imputation round 33/49, elapsed time 0.16
+[IterativeImputer] Ending imputation round 34/49, elapsed time 0.17
+[IterativeImputer] Ending imputation round 35/49, elapsed time 0.18
+[IterativeImputer] Ending imputation round 36/49, elapsed time 0.19
+[IterativeImputer] Ending imputation round 37/49, elapsed time 0.19
+[IterativeImputer] Ending imputation round 38/49, elapsed time 0.21
+[IterativeImputer] Ending imputation round 39/49, elapsed time 0.22
+[IterativeImputer] Ending imputation round 40/49, elapsed time 0.23
+[IterativeImputer] Ending imputation round 41/49, elapsed time 0.24
+[IterativeImputer] Ending imputation round 42/49, elapsed time 0.24
+[IterativeImputer] Ending imputation round 43/49, elapsed time 0.25
+[IterativeImputer] Ending imputation round 44/49, elapsed time 0.25
+[IterativeImputer] Ending imputation round 45/49, elapsed time 0.25
+[IterativeImputer] Ending imputation round 46/49, elapsed time 0.26
+[IterativeImputer] Ending imputation round 47/49, elapsed time 0.27
+[IterativeImputer] Ending imputation round 48/49, elapsed time 0.28
+[IterativeImputer] Ending imputation round 49/49, elapsed time 0.28
+
+
+
+ +
+ +
Out[176]:
+ + + + +
+
<matplotlib.axes._subplots.AxesSubplot at 0x7f8a43103150>
+
+ +
+ +
+ +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+
+
+
In [181]:
+
+
+
idf2 = impute_df(split_df2, max_iter= int(max2), verbose=2)
+size = idf2.shape[1]
+corr = idf2.corr()
+fig = plt.subplots(figsize=(15,15))
+sns.heatmap(corr, vmin=-1, vmax=1, center=0, xticklabels=range(size), yticklabels=range(size))
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
[IterativeImputer] Completing matrix with shape (195, 5)
+[IterativeImputer] Ending imputation round 1/8, elapsed time 0.05
+[IterativeImputer] Ending imputation round 2/8, elapsed time 0.08
+[IterativeImputer] Ending imputation round 3/8, elapsed time 0.10
+[IterativeImputer] Ending imputation round 4/8, elapsed time 0.20
+[IterativeImputer] Ending imputation round 5/8, elapsed time 0.25
+[IterativeImputer] Ending imputation round 6/8, elapsed time 0.26
+[IterativeImputer] Ending imputation round 7/8, elapsed time 0.27
+[IterativeImputer] Ending imputation round 8/8, elapsed time 0.29
+[IterativeImputer] Completing matrix with shape (195, 5)
+[IterativeImputer] Ending imputation round 1/8, elapsed time 0.00
+[IterativeImputer] Ending imputation round 2/8, elapsed time 0.01
+[IterativeImputer] Ending imputation round 3/8, elapsed time 0.01
+[IterativeImputer] Ending imputation round 4/8, elapsed time 0.01
+[IterativeImputer] Ending imputation round 5/8, elapsed time 0.02
+[IterativeImputer] Ending imputation round 6/8, elapsed time 0.02
+[IterativeImputer] Ending imputation round 7/8, elapsed time 0.02
+[IterativeImputer] Ending imputation round 8/8, elapsed time 0.03
+/opt/anaconda3/lib/python3.7/site-packages/sklearn/impute/_iterative.py:603: ConvergenceWarning:
+
+[IterativeImputer] Early stopping criterion not reached.
+
+
+
+
+ +
+ +
Out[181]:
+ + + + +
+
<matplotlib.axes._subplots.AxesSubplot at 0x7f8a42f7d1d0>
+
+ +
+ +
+ +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+
+
+
In [183]:
+
+
+
idf3 = impute_df(split_df3, max_iter= int(max3), verbose=2)
+size = idf3.shape[1]
+corr = idf3.corr()
+fig = plt.subplots(figsize=(15,15))
+sns.heatmap(corr, vmin=-1, vmax=1, center=0, xticklabels=range(size), yticklabels=range(size))
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
[IterativeImputer] Completing matrix with shape (195, 11)
+[IterativeImputer] Ending imputation round 1/20, elapsed time 0.05
+[IterativeImputer] Ending imputation round 2/20, elapsed time 0.09
+[IterativeImputer] Ending imputation round 3/20, elapsed time 0.11
+[IterativeImputer] Ending imputation round 4/20, elapsed time 0.14
+[IterativeImputer] Ending imputation round 5/20, elapsed time 0.17
+[IterativeImputer] Ending imputation round 6/20, elapsed time 0.20
+[IterativeImputer] Ending imputation round 7/20, elapsed time 0.23
+[IterativeImputer] Ending imputation round 8/20, elapsed time 0.29
+[IterativeImputer] Ending imputation round 9/20, elapsed time 0.35
+[IterativeImputer] Ending imputation round 10/20, elapsed time 0.40
+[IterativeImputer] Ending imputation round 11/20, elapsed time 0.43
+[IterativeImputer] Ending imputation round 12/20, elapsed time 0.48
+[IterativeImputer] Ending imputation round 13/20, elapsed time 0.52
+[IterativeImputer] Ending imputation round 14/20, elapsed time 0.55
+[IterativeImputer] Ending imputation round 15/20, elapsed time 0.58
+[IterativeImputer] Ending imputation round 16/20, elapsed time 0.61
+[IterativeImputer] Ending imputation round 17/20, elapsed time 0.63
+[IterativeImputer] Ending imputation round 18/20, elapsed time 0.66
+[IterativeImputer] Ending imputation round 19/20, elapsed time 0.69
+[IterativeImputer] Ending imputation round 20/20, elapsed time 0.74
+[IterativeImputer] Completing matrix with shape (195, 11)
+[IterativeImputer] Ending imputation round 1/20, elapsed time 0.00
+[IterativeImputer] Ending imputation round 2/20, elapsed time 0.01
+[IterativeImputer] Ending imputation round 3/20, elapsed time 0.01
+[IterativeImputer] Ending imputation round 4/20, elapsed time 0.02
+[IterativeImputer] Ending imputation round 5/20, elapsed time 0.02
+[IterativeImputer] Ending imputation round 6/20, elapsed time 0.03
+[IterativeImputer] Ending imputation round 7/20, elapsed time 0.03
+[IterativeImputer] Ending imputation round 8/20, elapsed time 0.03
+[IterativeImputer] Ending imputation round 9/20, elapsed time 0.04
+[IterativeImputer] Ending imputation round 10/20, elapsed time 0.04
+[IterativeImputer] Ending imputation round 11/20, elapsed time 0.04
+[IterativeImputer] Ending imputation round 12/20, elapsed time 0.05
+[IterativeImputer] Ending imputation round 13/20, elapsed time 0.05
+[IterativeImputer] Ending imputation round 14/20, elapsed time 0.06
+[IterativeImputer] Ending imputation round 15/20, elapsed time 0.07
+[IterativeImputer] Ending imputation round 16/20, elapsed time 0.07
+[IterativeImputer] Ending imputation round 17/20, elapsed time 0.07
+[IterativeImputer] Ending imputation round 18/20, elapsed time 0.08
+[IterativeImputer] Ending imputation round 19/20, elapsed time 0.08
+[IterativeImputer] Ending imputation round 20/20, elapsed time 0.08
+/opt/anaconda3/lib/python3.7/site-packages/sklearn/impute/_iterative.py:603: ConvergenceWarning:
+
+[IterativeImputer] Early stopping criterion not reached.
+
+
+
+
+ +
+ +
Out[183]:
+ + + + +
+
<matplotlib.axes._subplots.AxesSubplot at 0x7f8a43781d50>
+
+ +
+ +
+ +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+
+
+
In [184]:
+
+
+
idf4 = impute_df(split_df4, max_iter= int(max4), verbose=2)
+size = idf4.shape[1]
+corr = idf4.corr()
+fig = plt.subplots(figsize=(15,15))
+sns.heatmap(corr, vmin=-1, vmax=1, center=0, xticklabels=range(size), yticklabels=range(size))
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
[IterativeImputer] Completing matrix with shape (195, 9)
+[IterativeImputer] Ending imputation round 1/10, elapsed time 0.03
+[IterativeImputer] Ending imputation round 2/10, elapsed time 0.04
+[IterativeImputer] Ending imputation round 3/10, elapsed time 0.05
+[IterativeImputer] Ending imputation round 4/10, elapsed time 0.07
+[IterativeImputer] Ending imputation round 5/10, elapsed time 0.09
+[IterativeImputer] Ending imputation round 6/10, elapsed time 0.10
+[IterativeImputer] Ending imputation round 7/10, elapsed time 0.12
+[IterativeImputer] Ending imputation round 8/10, elapsed time 0.13
+[IterativeImputer] Ending imputation round 9/10, elapsed time 0.15
+[IterativeImputer] Ending imputation round 10/10, elapsed time 0.17
+[IterativeImputer] Completing matrix with shape (195, 9)
+[IterativeImputer] Ending imputation round 1/10, elapsed time 0.01
+[IterativeImputer] Ending imputation round 2/10, elapsed time 0.02
+/opt/anaconda3/lib/python3.7/site-packages/sklearn/impute/_iterative.py:603: ConvergenceWarning:
+
+[IterativeImputer] Early stopping criterion not reached.
+
+[IterativeImputer] Ending imputation round 3/10, elapsed time 0.04
+[IterativeImputer] Ending imputation round 4/10, elapsed time 0.05
+[IterativeImputer] Ending imputation round 5/10, elapsed time 0.05
+[IterativeImputer] Ending imputation round 6/10, elapsed time 0.06
+[IterativeImputer] Ending imputation round 7/10, elapsed time 0.06
+[IterativeImputer] Ending imputation round 8/10, elapsed time 0.07
+[IterativeImputer] Ending imputation round 9/10, elapsed time 0.07
+[IterativeImputer] Ending imputation round 10/10, elapsed time 0.07
+
+
+
+ +
+ +
Out[184]:
+ + + + +
+
<matplotlib.axes._subplots.AxesSubplot at 0x7f8a4378a490>
+
+ +
+ +
+ +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+
+
+
In [185]:
+
+
+
idf5 = impute_df(split_df5, max_iter= int(max5), verbose=2)
+size = idf5.shape[1]
+corr = idf5.corr()
+fig = plt.subplots(figsize=(15,15))
+sns.heatmap(corr, vmin=-1, vmax=1, center=0, xticklabels=range(size), yticklabels=range(size))
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
[IterativeImputer] Completing matrix with shape (195, 13)
+[IterativeImputer] Ending imputation round 1/22, elapsed time 0.07
+[IterativeImputer] Ending imputation round 2/22, elapsed time 0.13
+[IterativeImputer] Ending imputation round 3/22, elapsed time 0.15
+[IterativeImputer] Ending imputation round 4/22, elapsed time 0.18
+[IterativeImputer] Ending imputation round 5/22, elapsed time 0.21
+[IterativeImputer] Ending imputation round 6/22, elapsed time 0.25
+[IterativeImputer] Ending imputation round 7/22, elapsed time 0.31
+[IterativeImputer] Ending imputation round 8/22, elapsed time 0.34
+[IterativeImputer] Ending imputation round 9/22, elapsed time 0.37
+[IterativeImputer] Ending imputation round 10/22, elapsed time 0.39
+[IterativeImputer] Ending imputation round 11/22, elapsed time 0.41
+[IterativeImputer] Ending imputation round 12/22, elapsed time 0.43
+[IterativeImputer] Ending imputation round 13/22, elapsed time 0.46
+[IterativeImputer] Ending imputation round 14/22, elapsed time 0.49
+[IterativeImputer] Ending imputation round 15/22, elapsed time 0.52
+[IterativeImputer] Ending imputation round 16/22, elapsed time 0.54
+[IterativeImputer] Ending imputation round 17/22, elapsed time 0.56
+[IterativeImputer] Ending imputation round 18/22, elapsed time 0.58
+[IterativeImputer] Early stopping criterion reached.
+[IterativeImputer] Completing matrix with shape (195, 13)
+[IterativeImputer] Ending imputation round 1/18, elapsed time 0.00
+[IterativeImputer] Ending imputation round 2/18, elapsed time 0.01
+[IterativeImputer] Ending imputation round 3/18, elapsed time 0.01
+[IterativeImputer] Ending imputation round 4/18, elapsed time 0.01
+[IterativeImputer] Ending imputation round 5/18, elapsed time 0.01
+[IterativeImputer] Ending imputation round 6/18, elapsed time 0.02
+[IterativeImputer] Ending imputation round 7/18, elapsed time 0.02
+[IterativeImputer] Ending imputation round 8/18, elapsed time 0.02
+[IterativeImputer] Ending imputation round 9/18, elapsed time 0.02
+[IterativeImputer] Ending imputation round 10/18, elapsed time 0.03
+[IterativeImputer] Ending imputation round 11/18, elapsed time 0.03
+[IterativeImputer] Ending imputation round 12/18, elapsed time 0.03
+[IterativeImputer] Ending imputation round 13/18, elapsed time 0.04
+[IterativeImputer] Ending imputation round 14/18, elapsed time 0.04
+[IterativeImputer] Ending imputation round 15/18, elapsed time 0.04
+[IterativeImputer] Ending imputation round 16/18, elapsed time 0.04
+[IterativeImputer] Ending imputation round 17/18, elapsed time 0.05
+[IterativeImputer] Ending imputation round 18/18, elapsed time 0.05
+
+
+
+ +
+ +
Out[185]:
+ + + + +
+
<matplotlib.axes._subplots.AxesSubplot at 0x7f8a443c31d0>
+
+ +
+ +
+ +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+
+
+
+

Imputation of the whole dataset

+
+
+
+
+
+
In [9]:
+
+
+
iter_number = (max_missing + min_missing) // 2
+print(iter_number)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
24.0
+
+
+
+ +
+
+ +
+
+
+
In [137]:
+
+
+
imputed_df = impute_df(df_inicator_values, max_iter=int(iter_number), verbose=2)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
[IterativeImputer] Completing matrix with shape (195, 67)
+[IterativeImputer] Ending imputation round 1/24, elapsed time 0.63
+[IterativeImputer] Ending imputation round 2/24, elapsed time 1.17
+[IterativeImputer] Ending imputation round 3/24, elapsed time 1.49
+[IterativeImputer] Ending imputation round 4/24, elapsed time 1.85
+[IterativeImputer] Ending imputation round 5/24, elapsed time 2.17
+[IterativeImputer] Ending imputation round 6/24, elapsed time 2.54
+[IterativeImputer] Ending imputation round 7/24, elapsed time 2.92
+[IterativeImputer] Ending imputation round 8/24, elapsed time 3.16
+[IterativeImputer] Ending imputation round 9/24, elapsed time 3.45
+[IterativeImputer] Ending imputation round 10/24, elapsed time 3.69
+[IterativeImputer] Ending imputation round 11/24, elapsed time 3.96
+[IterativeImputer] Ending imputation round 12/24, elapsed time 4.20
+[IterativeImputer] Ending imputation round 13/24, elapsed time 4.63
+[IterativeImputer] Ending imputation round 14/24, elapsed time 4.97
+[IterativeImputer] Ending imputation round 15/24, elapsed time 5.29
+[IterativeImputer] Ending imputation round 16/24, elapsed time 5.53
+[IterativeImputer] Ending imputation round 17/24, elapsed time 5.84
+[IterativeImputer] Ending imputation round 18/24, elapsed time 6.17
+[IterativeImputer] Ending imputation round 19/24, elapsed time 6.50
+[IterativeImputer] Ending imputation round 20/24, elapsed time 6.87
+[IterativeImputer] Ending imputation round 21/24, elapsed time 7.12
+[IterativeImputer] Ending imputation round 22/24, elapsed time 7.53
+[IterativeImputer] Ending imputation round 23/24, elapsed time 7.83
+[IterativeImputer] Ending imputation round 24/24, elapsed time 8.42
+[IterativeImputer] Completing matrix with shape (195, 67)
+[IterativeImputer] Ending imputation round 1/24, elapsed time 0.01
+[IterativeImputer] Ending imputation round 2/24, elapsed time 0.03
+[IterativeImputer] Ending imputation round 3/24, elapsed time 0.05
+[IterativeImputer] Ending imputation round 4/24, elapsed time 0.07
+[IterativeImputer] Ending imputation round 5/24, elapsed time 0.08
+[IterativeImputer] Ending imputation round 6/24, elapsed time 0.10
+[IterativeImputer] Ending imputation round 7/24, elapsed time 0.11
+[IterativeImputer] Ending imputation round 8/24, elapsed time 0.13
+[IterativeImputer] Ending imputation round 9/24, elapsed time 0.14
+[IterativeImputer] Ending imputation round 10/24, elapsed time 0.16
+[IterativeImputer] Ending imputation round 11/24, elapsed time 0.17
+[IterativeImputer] Ending imputation round 12/24, elapsed time 0.19
+/opt/anaconda3/lib/python3.7/site-packages/sklearn/impute/_iterative.py:603: ConvergenceWarning:
+
+[IterativeImputer] Early stopping criterion not reached.
+
+[IterativeImputer] Ending imputation round 13/24, elapsed time 0.21
+[IterativeImputer] Ending imputation round 14/24, elapsed time 0.23
+[IterativeImputer] Ending imputation round 15/24, elapsed time 0.23
+[IterativeImputer] Ending imputation round 16/24, elapsed time 0.25
+[IterativeImputer] Ending imputation round 17/24, elapsed time 0.26
+[IterativeImputer] Ending imputation round 18/24, elapsed time 0.27
+[IterativeImputer] Ending imputation round 19/24, elapsed time 0.28
+[IterativeImputer] Ending imputation round 20/24, elapsed time 0.29
+[IterativeImputer] Ending imputation round 21/24, elapsed time 0.30
+[IterativeImputer] Ending imputation round 22/24, elapsed time 0.32
+[IterativeImputer] Ending imputation round 23/24, elapsed time 0.32
+[IterativeImputer] Ending imputation round 24/24, elapsed time 0.33
+
+
+
+ +
+
+ +
+
+
+
In [12]:
+
+
+
display(imputed_df)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Population with at least some secondary education (% ages 25 and older)Population with at least some secondary education, female (% ages 25 and older)Population with at least some secondary education, male (% ages 25 and older)Mean years of schooling, female (years)Mean years of schooling, male (years)Share of seats in parliament (% held by women)Adolescent birth rate (births per 1,000 women ages 15-19)Vulnerable employment (% of total employment)Total population (millions)Urban population (%)...Gender Development Index (GDI)Estimated gross national income per capita, female (2017 PPP $)Estimated gross national income per capita, male (2017 PPP $)Human Development Index (HDI), femaleHuman Development Index (HDI), maleInequality-adjusted income indexOverall loss in HDI due to inequality (%)Inequality in income (%)Coefficient of human inequalityInequality-adjusted HDI (IHDI)
AFG26.08013.22036.9201.9480006.00600027.24468.95700079.72600038.04225.8...0.659000819.3850003565.865000.3910000.5930000.36129232.76232723.40239532.3670910.334824
AGO30.23223.13338.0564.0230006.35900030.000150.52600065.99500031.82566.2...0.9030005205.0490007022.231000.5520000.6110000.44200031.67000028.90000031.7330000.397000
ALB93.17493.70092.4979.70200010.61400029.50819.64200052.8520002.88161.2...0.96700011004.45500016884.667000.7800000.8070000.64800010.94300013.17900010.8930000.708000
AND72.32771.48473.32710.43900010.56400046.42921.56873511.9974870.07788.0...0.91564241463.35618767486.522320.8342490.9010730.72951416.48387923.40398416.0003410.748567
ARG57.15859.16154.82811.12300010.72900039.87762.78200021.80500044.78192.0...0.99300014872.16700027825.757000.8350000.8400000.60600013.72800025.15900013.2380000.729000
..................................................................
WSM74.94279.12771.58311.11950910.42049210.00023.88600029.9830000.19718.1...0.9442194054.3750008410.109000.6863800.7246720.49150813.06313123.40316212.7673830.614683
YEM28.02019.92036.9182.8800005.1460000.97160.35200045.62700029.16237.3...0.488000186.0410002980.035000.2700000.5530000.32700031.70200021.80000030.8670000.321000
ZAF75.47874.97778.20710.03100010.29100045.33367.90800010.29800058.55866.9...0.9860009247.75100015094.546000.7020000.7120000.31200033.99200056.99600031.1630000.468000
ZMB44.44038.48854.0686.2830008.17600017.964120.11200078.13400017.86144.1...0.9580003379.5490003270.422000.5690000.5930000.29200031.33600044.84000030.5920000.401000
ZWE64.93559.79270.7838.0660008.92300034.57186.13500064.73900014.64532.2...0.9310002374.6120002984.896000.5500000.5900000.35300022.76700028.76900022.5250000.441000
+

195 rows × 67 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [14]:
+
+
+
#scatter_matrix(imputed_df, figsize=(size, size)) Takes a lot of time to work, visualization is not that great. But it can stay, just in case
+
+ +
+
+
+ +
+
+
+
In [15]:
+
+
+
#sns.heatmap(corr, annot = True, vmin=-1, vmax=1, center= 0, fmt='.1g', cmap= 'coolwarm', linewidths=1, linecolor='black', square=True, yticklabels=False, xticklabels=False)
+size = imputed_df.shape[1]
+corr = imputed_df.corr()
+plt.subplots(figsize=(20,20))
+sns.heatmap(corr, vmin=-1, vmax=1, center=0, xticklabels=range(size), yticklabels=range(size),cmap='mako')
+
+ +
+
+
+ +
+
+ + +
+ +
Out[15]:
+ + + + +
+
<matplotlib.axes._subplots.AxesSubplot at 0x7f8a6be8cdd0>
+
+ +
+ +
+ +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+
+
+
In [42]:
+
+
+
map_columns = {}
+count = 0
+for col in imputed_df.columns:
+    map_columns[count] = col
+    count += 1
+
+print(map_columns)
+
+#Makes it easier to check the correlations
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
{0: 'Population with at least some secondary education (% ages 25 and older)', 1: 'Population with at least some secondary education, female (% ages 25 and older)', 2: 'Population with at least some secondary education, male (% ages 25 and older)', 3: 'Mean years of schooling, female (years)', 4: 'Mean years of schooling, male (years)', 5: 'Share of seats in parliament (% held by women)', 6: 'Adolescent birth rate (births per 1,000 women ages 15-19)', 7: 'Vulnerable employment (% of total employment)', 8: 'Total population (millions)', 9: 'Urban population (%)', 10: 'Labour force participation rate (% ages 15 and older), female', 11: 'Labour force participation rate (% ages 15 and older), male', 12: 'Sex ratio at birth (male to female births)', 13: 'Remittances, inflows (% of GDP)', 14: 'Foreign direct investment, net inflows (% of GDP)', 15: 'Population ages 15?64 (millions)', 16: 'Infants lacking immunization, measles (% of one-year-olds)', 17: 'Infants lacking immunization, DTP (% of one-year-olds)', 18: 'Gross fixed capital formation (% of GDP)', 19: 'Gender Inequality Index (GII)', 20: 'Life expectancy at birth (years)', 21: 'Expected years of schooling (years)', 22: 'Inequality-adjusted education index', 23: 'Inequality-adjusted life expectancy index', 24: 'Inequality in education (%)', 25: 'Inequality in life expectancy (%)', 26: 'Mean years of schooling (years)', 27: 'Life expectancy index', 28: 'Income index', 29: 'Education index', 30: 'Unemployment, youth (% ages 15?24)', 31: 'Private capital flows (% of GDP)', 32: 'Life expectancy at birth, female (years)', 33: 'Life expectancy at birth, male (years)', 34: 'Young age (0-14) dependency ratio (per 100 people ages 15-64)', 35: 'Old-age (65 and older) dependency ratio (per 100 people ages 15-64)', 36: 'Expected years of schooling, female (years)', 37: 'Expected years of schooling, male (years)', 38: 'Population ages 65 and older (millions)', 39: 'Population under age 5 (millions)', 40: 'Exports and imports (% of GDP)', 41: 'Human Development Index (HDI)', 42: 'Unemployment, total (% of labour force)', 43: 'HDI rank', 44: 'Youth not in school or employment (% ages 15-24)', 45: 'Labour force participation rate (% ages 15 and older)', 46: 'Employment to population ratio (% ages 15 and older)', 47: 'Employment in agriculture (% of total employment)', 48: 'Employment in services (% of total employment)', 49: 'Working poor at PPP$3.20 a day (% of total employment)', 50: 'Total unemployment rate (female to male ratio)', 51: 'Youth unemployment rate (female to male ratio)', 52: 'Share of employment in nonagriculture, female (% of total employment in nonagriculture)', 53: 'Gross capital formation (% of GDP)', 54: 'Gross domestic product (GDP), total (2017 PPP $ billions)', 55: 'GDP per capita (2017 PPP $)', 56: 'Gross national income (GNI) per capita (constant 2017 PPP$)', 57: 'Gender Development Index (GDI)', 58: 'Estimated gross national income per capita, female (2017 PPP $)', 59: 'Estimated gross national income per capita, male (2017 PPP $)', 60: 'Human Development Index (HDI), female', 61: 'Human Development Index (HDI), male', 62: 'Inequality-adjusted income index', 63: 'Overall loss in HDI due to inequality (%)', 64: 'Inequality in income (%)', 65: 'Coefficient of human inequality', 66: 'Inequality-adjusted HDI (IHDI)'}
+
+
+
+ +
+
+ +
+
+
+
In [43]:
+
+
+
x = imputed_df.loc[:, imputed_df.columns].values
+print(x)
+x = StandardScaler().fit_transform(x)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
[[26.08       13.22       36.92       ... 23.40239465 32.36709094
+   0.33482394]
+ [30.232      23.133      38.056      ... 28.9        31.733
+   0.397     ]
+ [93.174      93.7        92.497      ... 13.179      10.893
+   0.708     ]
+ ...
+ [75.478      74.977      78.207      ... 56.996      31.163
+   0.468     ]
+ [44.44       38.488      54.068      ... 44.84       30.592
+   0.401     ]
+ [64.935      59.792      70.783      ... 28.769      22.525
+   0.441     ]]
+
+
+
+ +
+
+ +
+
+
+
In [44]:
+
+
+
print(imputed_df.shape)
+print(x.shape)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
(195, 67)
+(195, 67)
+
+
+
+ +
+
+ +
+
+
+
In [45]:
+
+
+
display(x)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + + + +
+
array([[-1.23937651e+00, -1.53575927e+00, -9.67770574e-01, ...,
+         1.00848260e-04,  1.54283328e+00, -1.49474833e+00],
+       [-1.09115273e+00, -1.20078779e+00, -9.25717124e-01, ...,
+         6.32931604e-01,  1.47104631e+00, -1.14014979e+00],
+       [ 1.15583694e+00,  1.18375092e+00,  1.08962783e+00, ...,
+        -1.17671672e+00, -8.88300426e-01,  6.33525610e-01],
+       ...,
+       [ 5.24100909e-01,  5.51079584e-01,  5.60628007e-01, ...,
+         3.86706934e+00,  1.40651524e+00, -7.35227114e-01],
+       [-5.83936096e-01, -6.81924979e-01, -3.32970786e-01, ...,
+         2.46778907e+00,  1.34187095e+00, -1.11733725e+00],
+       [ 1.47722465e-01,  3.79612664e-02,  2.85799827e-01, ...,
+         6.17852160e-01,  4.28586392e-01, -8.89211795e-01]])
+
+ +
+ +
+
+ +
+
+
+
+

We want to check if the mean of the normalized dataset is 0 and std is 1

It looks like it

+
+
+
+
+
+
In [34]:
+
+
+
np.mean(x), np.std(x)
+
+ +
+
+
+ +
+
+ + +
+ +
Out[34]:
+ + + + +
+
(-7.613929047563262e-18, 1.0)
+
+ +
+ +
+
+ +
+
+
+
+

To show the normalized data

+
+
+
+
+
+
In [50]:
+
+
+
feat_cols = imputed_df.columns.values.tolist()
+#print(feat_cols)
+normalized_imputed_df = pd.DataFrame(x, columns=feat_cols)
+normalized_imputed_df.head()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[50]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Population with at least some secondary education (% ages 25 and older)Population with at least some secondary education, female (% ages 25 and older)Population with at least some secondary education, male (% ages 25 and older)Mean years of schooling, female (years)Mean years of schooling, male (years)Share of seats in parliament (% held by women)Adolescent birth rate (births per 1,000 women ages 15-19)Vulnerable employment (% of total employment)Total population (millions)Urban population (%)...Gender Development Index (GDI)Estimated gross national income per capita, female (2017 PPP $)Estimated gross national income per capita, male (2017 PPP $)Human Development Index (HDI), femaleHuman Development Index (HDI), maleInequality-adjusted income indexOverall loss in HDI due to inequality (%)Inequality in income (%)Coefficient of human inequalityInequality-adjusted HDI (IHDI)
0-1.239377-1.535759-0.967771-1.942292-1.1127270.3618380.5332601.562488-0.009236-1.443911...-3.734095-0.874370-0.860080-1.896431-1.038168-1.1500081.5201660.0001011.542833-1.494748
1-1.091153-1.200788-0.925717-1.319112-0.9838280.5964482.5770451.053248-0.0517860.299618...-0.448076-0.599552-0.722613-0.896440-0.908711-0.6647131.3985830.6329321.471046-1.140150
21.1558371.1837511.0896280.3864500.5698970.554566-0.7023720.565815-0.2498840.083835...0.413830-0.236145-0.3303620.5196970.5009340.573955-0.908449-1.176717-0.8883000.633526
30.4116120.4330470.3799760.6077920.5516401.994999-0.654096-0.949352-0.2690751.240433...-0.2778181.6724971.6821870.8566421.1775101.064095-0.2917180.000284-0.3100860.864885
4-0.1299120.016639-0.3048360.8132160.6118901.4372470.378540-0.5856220.0368871.413060...0.7639800.0062170.1047900.8613080.7382720.321411-0.5984630.202304-0.6228170.753291
+

5 rows × 67 columns

+
+
+ +
+ +
+
+ +
+
+
+
+

Now we start with the PCA Part

+
+
+
+
+
+
In [109]:
+
+
+
num_components = 3
+pca_imputed = PCA(n_components=num_components)
+pComponents_imputed = pca_imputed.fit_transform(x)
+component_col = ['PC'+str(i+1) for i in range(num_components)]
+print(component_col)
+
+percentage_list = [element * 100 for element in pca_imputed.explained_variance_ratio_]
+percentage_list = ['%.2f' % elem for elem in percentage_list]
+print(percentage_list)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
['PC1', 'PC2', 'PC3']
+['49.80', '7.90', '7.20']
+
+
+
+ +
+
+ +
+
+
+
+

PC stands for principal components

+
+
+
+
+
+
In [82]:
+
+
+
pc_imputed_df = pd.DataFrame(data = pComponents_imputed, columns = component_col)
+print(pc_imputed_df.shape)
+pc_imputed_df.head()
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
(195, 3)
+
+
+
+ +
+ +
Out[82]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PC1PC2PC3
08.7406083.668457-0.157376
17.364151-2.6641020.136981
2-3.2658692.200737-0.526536
3-5.434715-1.268159-0.277446
4-3.9716860.572238-0.254418
+
+
+ +
+ +
+
+ +
+
+
+
In [111]:
+
+
+
print('Explained variation percentage per principal component: {}'.format(percentage_list))
+total_explained_percentage = (sum(pca_imputed.explained_variance_ratio_)*100)
+print('Total percentage of the explained data by',pca_imputed.n_components,'components is: %.2f' %total_explained_percentage)
+print('Percentage of the information that is lost for using',pca_imputed.n_components,'components is: %.2f' %(100-total_explained_percentage))
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
Explained variation percentage per principal component: ['49.80', '7.90', '7.20']
+Total percentage of the explained data by 3 components is: 64.90
+Percentage of the information that is lost for using 3 components is: 35.10
+
+
+
+ +
+
+ +
+
+
+
+

Outliers are a big problem as it can be seen from the graph

+
+
+
+
+
+
In [117]:
+
+
+
l_dict = {}
+for i in range(len(percentage_list)):
+    l_dict[str(i)] = 'PC'+str(i+1)+' '+str(percentage_list[i])+'%'
+
+print(l_dict)
+
+fig = px.scatter_3d(
+    pComponents_imputed, x=0, y=1, z=2,
+    title=f'Total Explained Variance: {total_explained_percentage:.2f}%',
+    labels=l_dict
+)
+
+fig.show()
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
{'0': 'PC1 49.80%', '1': 'PC2 7.90%', '2': 'PC3 7.20%'}
+
+
+
+ +
+ +
+ + + + + +
+ +
+
+ +
+
+
+
In [ ]:
+
+
+
imputed_df.to_csv("data/unlabeled/hdro_preprocessed.csv")
+
+ +
+
+
+ +
+
+
+ + + + + + diff --git a/documentation/WaterSecurity/notebooks/prep_hdro_v2.html b/documentation/WaterSecurity/notebooks/prep_hdro_v2.html new file mode 100644 index 0000000..0aad399 --- /dev/null +++ b/documentation/WaterSecurity/notebooks/prep_hdro_v2.html @@ -0,0 +1,85511 @@ + + + + +Notebook + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
In [1]:
+
+
+
import pandas as pd 
+from pandas.plotting import scatter_matrix
+import numpy as np
+import json
+from helpers import *
+from sklearn.preprocessing import StandardScaler
+from sklearn.decomposition import PCA
+import sys
+import matplotlib.pyplot as plt
+import seaborn as sns
+import plotly.express as px
+sys.path.append("..")
+from data.unlabeled.raw import hdro_inicator_values as inicator_values, hdro_country_name as country_name, hdro_indicator_name as indicator_name
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
Something went wrong loading the Economic Fitness Dataset [Errno 2] File b'../data/unlabeled/raw/Economic_Fitness_CSV\\Country.csv' does not exist: b'../data/unlabeled/raw/Economic_Fitness_CSV\\Country.csv'
+Something went wrong loading the Education Dataset [Errno 2] File b'../data/unlabeled/raw/Edstats_csv/EdStatsCountry.csv' does not exist: b'../data/unlabeled/raw/Edstats_csv/EdStatsCountry.csv'
+../data/unlabeled/raw/__init__.py:41: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.
+  aquastat_eah = pd.read_csv(aquastat_eah_path, skipfooter=8)
+../data/unlabeled/raw/__init__.py:42: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.
+  aquastat_wr = pd.read_csv(aquastat_wr_path, skipfooter=8)
+../data/unlabeled/raw/__init__.py:43: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.
+  aquastat_wu = pd.read_csv(aquastat_wu_path, skipfooter=8)
+
+
+
+ +
+
+ +
+
+
+
In [2]:
+
+
+
#print(inicator_values)
+#print(country_name)
+#print(indicator_name)
+
+ +
+
+
+ +
+
+
+
+

Unwrap values to create good df

+
+
+
+
+
+
In [3]:
+
+
+
df_inicator_values = pd.DataFrame(inicator_values).T
+df_inicator_values.columns = [indicator_name[nm] for nm in df_inicator_values.columns]
+df_inicator_values = df_inicator_values.applymap(lambda x: x['2019'] if pd.notnull(x) else x)
+df_inicator_values
+
+ +
+
+
+ +
+
+ + +
+ +
Out[3]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Population with at least some secondary education (% ages 25 and older)Population with at least some secondary education, female (% ages 25 and older)Population with at least some secondary education, male (% ages 25 and older)Mean years of schooling, female (years)Mean years of schooling, male (years)Share of seats in parliament (% held by women)Adolescent birth rate (births per 1,000 women ages 15-19)Vulnerable employment (% of total employment)Total population (millions)Urban population (%)...Gross enrolment ratio, pre-primary (% of preschool-age children)Percentage of primary schools with access to the internetPercentage of secondary schools with access to the internetGross enrolment ratio, tertiary (% of tertiary school-age population)Share of graduates in science, technology, engineering and mathematics programmes at tertiary level, female (%)Share of graduates in science, technology, engineering and mathematics programmes at tertiary level, male (%)Share of graduates from science, technology, engineering and mathematics programmes in tertiary education who are female (%)Share of graduates from science, technology, engineering and mathematics programmes in tertiary education who are male (%)Primary school teachers trained to teach (%)Pupil-teacher ratio, primary school (pupils per teacher)
AFG26.08013.22036.9201.9486.00627.24468.95779.72638.04225.8...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AGO30.23223.13338.0564.0236.35930.000150.52665.99531.82566.2...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ALB93.17493.70092.4979.70210.61429.50819.64252.8522.88161.2...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AND72.32771.48473.32710.43910.56446.429NaNNaN0.07788.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ARG57.15859.16154.82811.12310.72939.87762.78221.80544.78192.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
..................................................................
WSM74.94279.12771.583NaNNaN10.00023.88629.9830.19718.1...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
YEM28.02019.92036.9182.8805.1460.97160.35245.62729.16237.3...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ZAF75.47874.97778.20710.03110.29145.33367.90810.29858.55866.9...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ZMB44.44038.48854.0686.2838.17617.964120.11278.13417.86144.1...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ZWE64.93559.79270.7838.0668.92334.57186.13564.73914.64532.2...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
+

195 rows × 98 columns

+
+
+ +
+ +
+
+ +
+
+
+
+

Display the max, min and mean number of null values per column

+
+
+
+
+
+
In [4]:
+
+
+
print_missing_percentages(df_inicator_values)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
Max, min and mean number of missing values for the columns
+Max: 98.97435897435898 %
+Min: 0.0 %
+Mean: 37.566718995290415 %
+
+
+
+ +
+ +
Out[4]:
+ + + + +
+
(0.0, 98.97435897435898)
+
+ +
+ +
+
+ +
+
+
+
+

There is a high number of missing values, we therefore remove columns where more than 50% of the data is missing

+
+
+
+
+
+
In [5]:
+
+
+
dropColumnHalf(df_inicator_values)
+
+ +
+
+
+ +
+
+
+
+

Again see the max, min and mean number of missing values per column

+
+
+
+
+
+
In [6]:
+
+
+
min_missing, max_missing = print_missing_percentages(df_inicator_values)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
Max, min and mean number of missing values for the columns
+Max: 49.743589743589745 %
+Min: 0.0 %
+Mean: 10.616150019135096 %
+
+
+
+ +
+
+ +
+
+
+
In [7]:
+
+
+
df_inicator_values.describe()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[7]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Population with at least some secondary education (% ages 25 and older)Population with at least some secondary education, female (% ages 25 and older)Population with at least some secondary education, male (% ages 25 and older)Mean years of schooling, female (years)Mean years of schooling, male (years)Share of seats in parliament (% held by women)Adolescent birth rate (births per 1,000 women ages 15-19)Vulnerable employment (% of total employment)Total population (millions)Urban population (%)...Gender Development Index (GDI)Estimated gross national income per capita, female (2017 PPP $)Estimated gross national income per capita, male (2017 PPP $)Human Development Index (HDI), femaleHuman Development Index (HDI), maleInequality-adjusted income indexOverall loss in HDI due to inequality (%)Inequality in income (%)Coefficient of human inequalityInequality-adjusted HDI (IHDI)
count175.000000167.000000167.000000174.000000174.000000193.000000185.000000180.000000195.000000195.000000...167.000000178.000000178.000000167.000000167.000000156.000000152.000000156.000000152.000000152.000000
mean61.06807461.73601265.8235878.4800179.13340222.98129548.30934638.25801139.39142659.257436...0.93899414440.99851124458.3313540.7026830.7421860.54506419.38914523.40138519.0025990.595250
std29.61079829.28405026.3953583.4213322.80298411.82878440.52883427.774415146.48585523.231038...0.07455915359.93598623943.4826280.1658670.1431940.1727899.9487189.7440049.7773240.190002
min0.0000001.7380009.0000001.0700002.2560000.1000000.2830000.1440000.01100013.200000...0.488000186.041000640.1050000.2700000.4320000.1760004.4440008.5000004.4240000.232000
25%37.29650036.92500045.3565005.8500006.73375014.76500013.17700012.5382502.08100041.200000...0.9085002925.6142506275.9337500.5770000.6215000.40475010.79225016.60300010.5940000.431500
50%64.82800068.06700070.6820009.1110009.25250021.09400040.53600032.5335008.77200060.000000...0.9650008399.44250016951.3570000.7300000.7600000.52750017.93450021.77950017.5260000.604000
75%89.14500087.99050090.91650011.23050011.55100030.00000070.50400063.34550028.56250078.000000...0.98600022583.77950035488.4760000.8315000.8485000.69175027.61525028.62500027.0125000.767250
max100.000000100.000000100.00000013.88200014.43100055.660000186.53800094.5810001433.784000100.000000...1.03600071387.276000107833.0290000.9490000.9650000.85800045.30700056.99600044.1670000.899000
+

8 rows × 67 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [11]:
+
+
+
#Find columns that only contain integers or null values
+#find_all_integer_columns(df_inicator_values)
+
+ +
+
+
+ +
+
+
+
In [8]:
+
+
+
# Column values are shown
+
+df_inicator_values.columns.values
+
+ +
+
+
+ +
+
+ + +
+ +
Out[8]:
+ + + + +
+
array(['Population with at least some secondary education (% ages 25 and older)',
+       'Population with at least some secondary education, female (% ages 25 and older)',
+       'Population with at least some secondary education, male (% ages 25 and older)',
+       'Mean years of schooling, female (years)',
+       'Mean years of schooling, male (years)',
+       'Share of seats in parliament (% held by women)',
+       'Adolescent birth rate (births per 1,000 women ages 15-19)',
+       'Vulnerable employment (% of total employment)',
+       'Total population (millions)', 'Urban population (%)',
+       'Labour force participation rate (% ages 15 and older), female',
+       'Labour force participation rate (% ages 15 and older), male',
+       'Sex ratio at birth (male to female births)',
+       'Remittances, inflows (% of GDP)',
+       'Foreign direct investment, net inflows (% of GDP)',
+       'Population ages 15?64 (millions)',
+       'Infants lacking immunization, measles (% of one-year-olds)',
+       'Infants lacking immunization, DTP (% of one-year-olds)',
+       'Gross fixed capital formation (% of GDP)',
+       'Gender Inequality Index (GII)',
+       'Life expectancy at birth (years)',
+       'Expected years of schooling (years)',
+       'Inequality-adjusted education index',
+       'Inequality-adjusted life expectancy index',
+       'Inequality in education (%)', 'Inequality in life expectancy (%)',
+       'Mean years of schooling (years)', 'Life expectancy index',
+       'Income index', 'Education index',
+       'Unemployment, youth (% ages 15?24)',
+       'Private capital flows (% of GDP)',
+       'Life expectancy at birth, female (years)',
+       'Life expectancy at birth, male (years)',
+       'Young age (0-14) dependency ratio (per 100 people ages 15-64)',
+       'Old-age (65 and older) dependency ratio (per 100 people ages 15-64)',
+       'Expected years of schooling, female (years)',
+       'Expected years of schooling, male (years)',
+       'Population ages 65 and older (millions)',
+       'Population under age 5 (millions)',
+       'Exports and imports (% of GDP)', 'Human Development Index (HDI)',
+       'Unemployment, total (% of labour force)', 'HDI rank',
+       'Youth not in school or employment (% ages 15-24)',
+       'Labour force participation rate (% ages 15 and older)',
+       'Employment to population ratio (% ages 15 and older)',
+       'Employment in agriculture (% of total employment)',
+       'Employment in services (% of total employment)',
+       'Working poor at PPP$3.20 a day (% of total employment)',
+       'Total unemployment rate (female to male ratio)',
+       'Youth unemployment rate (female to male ratio)',
+       'Share of employment in nonagriculture, female (% of total employment in nonagriculture)',
+       'Gross capital formation (% of GDP)',
+       'Gross domestic product (GDP), total (2017 PPP $ billions)',
+       'GDP per capita (2017 PPP $)',
+       'Gross national income (GNI) per capita (constant 2017 PPP$)',
+       'Gender Development Index (GDI)',
+       'Estimated gross national income per capita, female (2017 PPP $)',
+       'Estimated gross national income per capita, male (2017 PPP $)',
+       'Human Development Index (HDI), female',
+       'Human Development Index (HDI), male',
+       'Inequality-adjusted income index',
+       'Overall loss in HDI due to inequality (%)',
+       'Inequality in income (%)', 'Coefficient of human inequality',
+       'Inequality-adjusted HDI (IHDI)'], dtype=object)
+
+ +
+ +
+
+ +
+
+
+
+

Initial Correlation Matrix

+
+
+
+
+
+
In [13]:
+
+
+
size = df_inicator_values.shape[1]
+corr = df_inicator_values.corr()
+plt.subplots(figsize=(20,20))
+sns.heatmap(corr, vmin=-1, vmax=1, center=0, xticklabels=range(size), yticklabels=range(size),cmap='mako')
+
+ +
+
+
+ +
+
+ + +
+ +
Out[13]:
+ + + + +
+
<AxesSubplot:>
+
+ +
+ +
+ +
+ + + +
+ + + + + + + + 2021-05-12T09:28:20.328956 + image/svg+xml + + + Matplotlib v3.4.1, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+
+
+
+

Division of the columns

+
+
+
+
+
+
In [9]:
+
+
+
percentage_columns = []
+money_columns = []
+index_columns = []
+year_columns = []
+millions_columns = []
+rest = []
+
+for column in df_inicator_values.columns.values:
+    if '%' in column:
+        percentage_columns.append(column)
+    elif '$' in column:
+        money_columns.append(column)
+    elif 'years' in column:
+        year_columns.append(column)
+    elif 'index' in column.lower():
+        index_columns.append(column)
+    elif 'millions' in column.lower():
+        millions_columns.append(column)
+    else:
+        rest.append(column)
+
+print(percentage_columns,'\n',len(percentage_columns))
+print(money_columns,'\n',len(money_columns))
+print(index_columns,'\n',len(index_columns))
+print(year_columns,'\n',len(year_columns))
+print(millions_columns,'\n',len(millions_columns))
+print(rest,'\n',len(rest))
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
['Population with at least some secondary education (% ages 25 and older)', 'Population with at least some secondary education, female (% ages 25 and older)', 'Population with at least some secondary education, male (% ages 25 and older)', 'Share of seats in parliament (% held by women)', 'Vulnerable employment (% of total employment)', 'Urban population (%)', 'Labour force participation rate (% ages 15 and older), female', 'Labour force participation rate (% ages 15 and older), male', 'Remittances, inflows (% of GDP)', 'Foreign direct investment, net inflows (% of GDP)', 'Infants lacking immunization, measles (% of one-year-olds)', 'Infants lacking immunization, DTP (% of one-year-olds)', 'Gross fixed capital formation (% of GDP)', 'Inequality in education (%)', 'Inequality in life expectancy (%)', 'Unemployment, youth (% ages 15?24)', 'Private capital flows (% of GDP)', 'Exports and imports (% of GDP)', 'Unemployment, total (% of labour force)', 'Youth not in school or employment (% ages 15-24)', 'Labour force participation rate (% ages 15 and older)', 'Employment to population ratio (% ages 15 and older)', 'Employment in agriculture (% of total employment)', 'Employment in services (% of total employment)', 'Working poor at PPP$3.20 a day (% of total employment)', 'Share of employment in nonagriculture, female (% of total employment in nonagriculture)', 'Gross capital formation (% of GDP)', 'Overall loss in HDI due to inequality (%)', 'Inequality in income (%)'] 
+ 29
+['Gross domestic product (GDP), total (2017 PPP $ billions)', 'GDP per capita (2017 PPP $)', 'Gross national income (GNI) per capita (constant 2017 PPP$)', 'Estimated gross national income per capita, female (2017 PPP $)', 'Estimated gross national income per capita, male (2017 PPP $)'] 
+ 5
+['Gender Inequality Index (GII)', 'Inequality-adjusted education index', 'Inequality-adjusted life expectancy index', 'Life expectancy index', 'Income index', 'Education index', 'Human Development Index (HDI)', 'Gender Development Index (GDI)', 'Human Development Index (HDI), female', 'Human Development Index (HDI), male', 'Inequality-adjusted income index'] 
+ 11
+['Mean years of schooling, female (years)', 'Mean years of schooling, male (years)', 'Life expectancy at birth (years)', 'Expected years of schooling (years)', 'Mean years of schooling (years)', 'Life expectancy at birth, female (years)', 'Life expectancy at birth, male (years)', 'Expected years of schooling, female (years)', 'Expected years of schooling, male (years)'] 
+ 9
+['Total population (millions)', 'Population ages 15?64 (millions)', 'Population ages 65 and older (millions)', 'Population under age 5 (millions)'] 
+ 4
+['Adolescent birth rate (births per 1,000 women ages 15-19)', 'Sex ratio at birth (male to female births)', 'Young age (0-14) dependency ratio (per 100 people ages 15-64)', 'Old-age (65 and older) dependency ratio (per 100 people ages 15-64)', 'HDI rank', 'Total unemployment rate (female to male ratio)', 'Youth unemployment rate (female to male ratio)', 'Coefficient of human inequality', 'Inequality-adjusted HDI (IHDI)'] 
+ 9
+
+
+
+ +
+
+ +
+
+
+
+

Dataframe is splitted

+
+
+
+
+
+
In [10]:
+
+
+
split_df1 = df_inicator_values[percentage_columns]
+split_df2 = df_inicator_values[money_columns]
+split_df3 = df_inicator_values[index_columns]
+split_df4 = df_inicator_values[year_columns]
+split_df5 = df_inicator_values[millions_columns]
+split_df6 = df_inicator_values[rest]
+
+ +
+
+
+ +
+
+
+
In [11]:
+
+
+
print('- Dataframe 1 -')
+min1, max1 = print_missing_percentages(split_df1)
+print('- Dataframe 2 -')
+min2, max2 = print_missing_percentages(split_df2)
+print('- Dataframe 3 -')
+min3, max3 = print_missing_percentages(split_df3)
+print('- Dataframe 4 -')
+min4, max4 = print_missing_percentages(split_df4)
+print('- Dataframe 5 -')
+min5, max5 = print_missing_percentages(split_df5)
+print('- Dataframe 6 -')
+min6, max6 = print_missing_percentages(split_df6)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
- Dataframe 1 -
+Max, min and mean number of missing values for the columns
+Max: 49.743589743589745 %
+Min: 0.0 %
+Mean: 14.624226348364274 %
+- Dataframe 2 -
+Max, min and mean number of missing values for the columns
+Max: 8.717948717948717 %
+Min: 2.051282051282051 %
+Mean: 6.153846153846153 %
+- Dataframe 3 -
+Max, min and mean number of missing values for the columns
+Max: 20.0 %
+Min: 2.051282051282051 %
+Mean: 9.790209790209792 %
+- Dataframe 4 -
+Max, min and mean number of missing values for the columns
+Max: 10.76923076923077 %
+Min: 1.0256410256410255 %
+Mean: 5.584045584045585 %
+- Dataframe 5 -
+Max, min and mean number of missing values for the columns
+Max: 5.128205128205129 %
+Min: 0.0 %
+Mean: 3.8461538461538467 %
+- Dataframe 6 -
+Max, min and mean number of missing values for the columns
+Max: 22.05128205128205 %
+Min: 3.076923076923077 %
+Mean: 9.230769230769232 %
+
+
+
+ +
+
+ +
+
+
+
+

Imputation of the individual datasets

idf --> stands for imputed dataframe

+
+
+
+
+
+
In [12]:
+
+
+
if max1 < 10:
+    max1 = 10
+
+idf1 = impute_df(split_df1, max_iter= int(max1), verbose=2)
+size = idf1.shape[1]
+corr = idf1.corr()
+plt.subplots(figsize=(20,20))
+sns.heatmap(corr, vmin=-1, vmax=1, center=0, xticklabels=range(size), yticklabels=range(size))
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
[IterativeImputer] Completing matrix with shape (195, 29)
+[IterativeImputer] Ending imputation round 1/49, elapsed time 0.22
+[IterativeImputer] Ending imputation round 2/49, elapsed time 0.30
+[IterativeImputer] Ending imputation round 3/49, elapsed time 0.42
+[IterativeImputer] Ending imputation round 4/49, elapsed time 0.49
+[IterativeImputer] Ending imputation round 5/49, elapsed time 0.56
+[IterativeImputer] Ending imputation round 6/49, elapsed time 0.63
+[IterativeImputer] Ending imputation round 7/49, elapsed time 0.73
+[IterativeImputer] Ending imputation round 8/49, elapsed time 0.81
+[IterativeImputer] Ending imputation round 9/49, elapsed time 0.92
+[IterativeImputer] Ending imputation round 10/49, elapsed time 0.97
+[IterativeImputer] Ending imputation round 11/49, elapsed time 1.03
+[IterativeImputer] Ending imputation round 12/49, elapsed time 1.08
+[IterativeImputer] Ending imputation round 13/49, elapsed time 1.13
+[IterativeImputer] Ending imputation round 14/49, elapsed time 1.21
+[IterativeImputer] Ending imputation round 15/49, elapsed time 1.30
+[IterativeImputer] Ending imputation round 16/49, elapsed time 1.41
+[IterativeImputer] Ending imputation round 17/49, elapsed time 1.50
+[IterativeImputer] Ending imputation round 18/49, elapsed time 1.60
+[IterativeImputer] Ending imputation round 19/49, elapsed time 1.69
+[IterativeImputer] Ending imputation round 20/49, elapsed time 1.75
+[IterativeImputer] Ending imputation round 21/49, elapsed time 1.81
+[IterativeImputer] Ending imputation round 22/49, elapsed time 1.86
+[IterativeImputer] Ending imputation round 23/49, elapsed time 1.92
+[IterativeImputer] Ending imputation round 24/49, elapsed time 1.98
+[IterativeImputer] Ending imputation round 25/49, elapsed time 2.06
+[IterativeImputer] Ending imputation round 26/49, elapsed time 2.18
+[IterativeImputer] Ending imputation round 27/49, elapsed time 2.26
+[IterativeImputer] Ending imputation round 28/49, elapsed time 2.35
+[IterativeImputer] Ending imputation round 29/49, elapsed time 2.43
+[IterativeImputer] Ending imputation round 30/49, elapsed time 2.50
+[IterativeImputer] Ending imputation round 31/49, elapsed time 2.57
+[IterativeImputer] Ending imputation round 32/49, elapsed time 2.63
+[IterativeImputer] Ending imputation round 33/49, elapsed time 2.71
+[IterativeImputer] Ending imputation round 34/49, elapsed time 2.77
+[IterativeImputer] Ending imputation round 35/49, elapsed time 2.90
+[IterativeImputer] Ending imputation round 36/49, elapsed time 2.97
+[IterativeImputer] Ending imputation round 37/49, elapsed time 3.09
+[IterativeImputer] Ending imputation round 38/49, elapsed time 3.16
+[IterativeImputer] Ending imputation round 39/49, elapsed time 3.22
+[IterativeImputer] Ending imputation round 40/49, elapsed time 3.27
+[IterativeImputer] Ending imputation round 41/49, elapsed time 3.32
+[IterativeImputer] Ending imputation round 42/49, elapsed time 3.37
+[IterativeImputer] Ending imputation round 43/49, elapsed time 3.44
+[IterativeImputer] Ending imputation round 44/49, elapsed time 3.51
+[IterativeImputer] Ending imputation round 45/49, elapsed time 3.61
+[IterativeImputer] Ending imputation round 46/49, elapsed time 3.68
+[IterativeImputer] Ending imputation round 47/49, elapsed time 3.75
+[IterativeImputer] Ending imputation round 48/49, elapsed time 3.80
+[IterativeImputer] Ending imputation round 49/49, elapsed time 3.86
+[IterativeImputer] Completing matrix with shape (195, 29)
+[IterativeImputer] Ending imputation round 1/49, elapsed time 0.00
+[IterativeImputer] Ending imputation round 2/49, elapsed time 0.01
+[IterativeImputer] Ending imputation round 3/49, elapsed time 0.01
+[IterativeImputer] Ending imputation round 4/49, elapsed time 0.01
+[IterativeImputer] Ending imputation round 5/49, elapsed time 0.02
+[IterativeImputer] Ending imputation round 6/49, elapsed time 0.02
+[IterativeImputer] Ending imputation round 7/49, elapsed time 0.02
+[IterativeImputer] Ending imputation round 8/49, elapsed time 0.03
+[IterativeImputer] Ending imputation round 9/49, elapsed time 0.03
+[IterativeImputer] Ending imputation round 10/49, elapsed time 0.03
+[IterativeImputer] Ending imputation round 11/49, elapsed time 0.04
+[IterativeImputer] Ending imputation round 12/49, elapsed time 0.04
+[IterativeImputer] Ending imputation round 13/49, elapsed time 0.04
+[IterativeImputer] Ending imputation round 14/49, elapsed time 0.05
+[IterativeImputer] Ending imputation round 15/49, elapsed time 0.05
+[IterativeImputer] Ending imputation round 16/49, elapsed time 0.05
+[IterativeImputer] Ending imputation round 17/49, elapsed time 0.06
+[IterativeImputer] Ending imputation round 18/49, elapsed time 0.06
+[IterativeImputer] Ending imputation round 19/49, elapsed time 0.07
+[IterativeImputer] Ending imputation round 20/49, elapsed time 0.07
+[IterativeImputer] Ending imputation round 21/49, elapsed time 0.07
+[IterativeImputer] Ending imputation round 22/49, elapsed time 0.08
+[IterativeImputer] Ending imputation round 23/49, elapsed time 0.08
+[IterativeImputer] Ending imputation round 24/49, elapsed time 0.08
+[IterativeImputer] Ending imputation round 25/49, elapsed time 0.09
+[IterativeImputer] Ending imputation round 26/49, elapsed time 0.09
+[IterativeImputer] Ending imputation round 27/49, elapsed time 0.09
+[IterativeImputer] Ending imputation round 28/49, elapsed time 0.10
+[IterativeImputer] Ending imputation round 29/49, elapsed time 0.10
+[IterativeImputer] Ending imputation round 30/49, elapsed time 0.10
+[IterativeImputer] Ending imputation round 31/49, elapsed time 0.11
+[IterativeImputer] Ending imputation round 32/49, elapsed time 0.11
+[IterativeImputer] Ending imputation round 33/49, elapsed time 0.11
+[IterativeImputer] Ending imputation round 34/49, elapsed time 0.11
+[IterativeImputer] Ending imputation round 35/49, elapsed time 0.12
+[IterativeImputer] Ending imputation round 36/49, elapsed time 0.12
+[IterativeImputer] Ending imputation round 37/49, elapsed time 0.12
+[IterativeImputer] Ending imputation round 38/49, elapsed time 0.13
+[IterativeImputer] Ending imputation round 39/49, elapsed time 0.13
+[IterativeImputer] Ending imputation round 40/49, elapsed time 0.13
+[IterativeImputer] Ending imputation round 41/49, elapsed time 0.14
+[IterativeImputer] Ending imputation round 42/49, elapsed time 0.14
+[IterativeImputer] Ending imputation round 43/49, elapsed time 0.14
+[IterativeImputer] Ending imputation round 44/49, elapsed time 0.15
+[IterativeImputer] Ending imputation round 45/49, elapsed time 0.15
+[IterativeImputer] Ending imputation round 46/49, elapsed time 0.15
+[IterativeImputer] Ending imputation round 47/49, elapsed time 0.16
+[IterativeImputer] Ending imputation round 48/49, elapsed time 0.16
+[IterativeImputer] Ending imputation round 49/49, elapsed time 0.16
+/opt/anaconda3/lib/python3.7/site-packages/sklearn/impute/_iterative.py:603: ConvergenceWarning: [IterativeImputer] Early stopping criterion not reached.
+  " reached.", ConvergenceWarning)
+
+
+
+ +
+ +
Out[12]:
+ + + + +
+
<matplotlib.axes._subplots.AxesSubplot at 0x7f96dc9daa10>
+
+ +
+ +
+ +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+
+
+
In [13]:
+
+
+
if max2 < 10:
+    max2 = 10
+
+idf2 = impute_df(split_df2, max_iter= int(max2), verbose=2)
+size = idf2.shape[1]
+corr = idf2.corr()
+fig = plt.subplots(figsize=(15,15))
+sns.heatmap(corr, vmin=-1, vmax=1, center=0, xticklabels=range(size), yticklabels=range(size))
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
[IterativeImputer] Completing matrix with shape (195, 5)
+[IterativeImputer] Ending imputation round 1/10, elapsed time 0.08
+[IterativeImputer] Ending imputation round 2/10, elapsed time 0.10
+[IterativeImputer] Ending imputation round 3/10, elapsed time 0.11
+[IterativeImputer] Ending imputation round 4/10, elapsed time 0.14
+[IterativeImputer] Ending imputation round 5/10, elapsed time 0.15
+[IterativeImputer] Ending imputation round 6/10, elapsed time 0.16
+[IterativeImputer] Ending imputation round 7/10, elapsed time 0.17
+[IterativeImputer] Ending imputation round 8/10, elapsed time 0.18
+[IterativeImputer] Ending imputation round 9/10, elapsed time 0.21
+[IterativeImputer] Ending imputation round 10/10, elapsed time 0.22
+[IterativeImputer] Completing matrix with shape (195, 5)
+[IterativeImputer] Ending imputation round 1/10, elapsed time 0.00
+[IterativeImputer] Ending imputation round 2/10, elapsed time 0.00
+[IterativeImputer] Ending imputation round 3/10, elapsed time 0.00
+[IterativeImputer] Ending imputation round 4/10, elapsed time 0.00
+[IterativeImputer] Ending imputation round 5/10, elapsed time 0.01
+[IterativeImputer] Ending imputation round 6/10, elapsed time 0.01
+[IterativeImputer] Ending imputation round 7/10, elapsed time 0.01
+[IterativeImputer] Ending imputation round 8/10, elapsed time 0.02
+[IterativeImputer] Ending imputation round 9/10, elapsed time 0.02
+[IterativeImputer] Ending imputation round 10/10, elapsed time 0.02
+/opt/anaconda3/lib/python3.7/site-packages/sklearn/impute/_iterative.py:603: ConvergenceWarning: [IterativeImputer] Early stopping criterion not reached.
+  " reached.", ConvergenceWarning)
+
+
+
+ +
+ +
Out[13]:
+ + + + +
+
<matplotlib.axes._subplots.AxesSubplot at 0x7f96dca54bd0>
+
+ +
+ +
+ +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+
+
+
In [14]:
+
+
+
if max3 < 10:
+    max3 = 10
+
+idf3 = impute_df(split_df3, max_iter= int(max3), verbose=2)
+size = idf3.shape[1]
+corr = idf3.corr()
+fig = plt.subplots(figsize=(15,15))
+sns.heatmap(corr, vmin=-1, vmax=1, center=0, xticklabels=range(size), yticklabels=range(size))
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
[IterativeImputer] Completing matrix with shape (195, 11)
+[IterativeImputer] Ending imputation round 1/20, elapsed time 0.09
+[IterativeImputer] Ending imputation round 2/20, elapsed time 0.18
+[IterativeImputer] Ending imputation round 3/20, elapsed time 0.20
+[IterativeImputer] Ending imputation round 4/20, elapsed time 0.22
+[IterativeImputer] Ending imputation round 5/20, elapsed time 0.24
+[IterativeImputer] Ending imputation round 6/20, elapsed time 0.26
+[IterativeImputer] Ending imputation round 7/20, elapsed time 0.29
+[IterativeImputer] Ending imputation round 8/20, elapsed time 0.37
+[IterativeImputer] Ending imputation round 9/20, elapsed time 0.39
+[IterativeImputer] Ending imputation round 10/20, elapsed time 0.41
+[IterativeImputer] Ending imputation round 11/20, elapsed time 0.43
+[IterativeImputer] Ending imputation round 12/20, elapsed time 0.45
+[IterativeImputer] Ending imputation round 13/20, elapsed time 0.47
+[IterativeImputer] Ending imputation round 14/20, elapsed time 0.49
+[IterativeImputer] Ending imputation round 15/20, elapsed time 0.54
+[IterativeImputer] Ending imputation round 16/20, elapsed time 0.59
+[IterativeImputer] Ending imputation round 17/20, elapsed time 0.62
+[IterativeImputer] Ending imputation round 18/20, elapsed time 0.64
+[IterativeImputer] Ending imputation round 19/20, elapsed time 0.66
+[IterativeImputer] Ending imputation round 20/20, elapsed time 0.68
+[IterativeImputer] Completing matrix with shape (195, 11)
+[IterativeImputer] Ending imputation round 1/20, elapsed time 0.00
+[IterativeImputer] Ending imputation round 2/20, elapsed time 0.01
+[IterativeImputer] Ending imputation round 3/20, elapsed time 0.01
+[IterativeImputer] Ending imputation round 4/20, elapsed time 0.01
+[IterativeImputer] Ending imputation round 5/20, elapsed time 0.01
+[IterativeImputer] Ending imputation round 6/20, elapsed time 0.01
+[IterativeImputer] Ending imputation round 7/20, elapsed time 0.01
+[IterativeImputer] Ending imputation round 8/20, elapsed time 0.02
+[IterativeImputer] Ending imputation round 9/20, elapsed time 0.02
+[IterativeImputer] Ending imputation round 10/20, elapsed time 0.02
+[IterativeImputer] Ending imputation round 11/20, elapsed time 0.02
+[IterativeImputer] Ending imputation round 12/20, elapsed time 0.02
+[IterativeImputer] Ending imputation round 13/20, elapsed time 0.03
+[IterativeImputer] Ending imputation round 14/20, elapsed time 0.03
+[IterativeImputer] Ending imputation round 15/20, elapsed time 0.03
+[IterativeImputer] Ending imputation round 16/20, elapsed time 0.03
+[IterativeImputer] Ending imputation round 17/20, elapsed time 0.03
+[IterativeImputer] Ending imputation round 18/20, elapsed time 0.03
+[IterativeImputer] Ending imputation round 19/20, elapsed time 0.04
+[IterativeImputer] Ending imputation round 20/20, elapsed time 0.04
+/opt/anaconda3/lib/python3.7/site-packages/sklearn/impute/_iterative.py:603: ConvergenceWarning: [IterativeImputer] Early stopping criterion not reached.
+  " reached.", ConvergenceWarning)
+
+
+
+ +
+ +
Out[14]:
+ + + + +
+
<matplotlib.axes._subplots.AxesSubplot at 0x7f96dca79190>
+
+ +
+ +
+ +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+
+
+
In [15]:
+
+
+
if max4 < 10:
+    max4 = 10
+
+idf4 = impute_df(split_df4, max_iter= int(max4), verbose=2)
+size = idf4.shape[1]
+corr = idf4.corr()
+fig = plt.subplots(figsize=(15,15))
+sns.heatmap(corr, vmin=-1, vmax=1, center=0, xticklabels=range(size), yticklabels=range(size))
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
[IterativeImputer] Completing matrix with shape (195, 9)
+[IterativeImputer] Ending imputation round 1/10, elapsed time 0.06
+[IterativeImputer] Ending imputation round 2/10, elapsed time 0.08
+[IterativeImputer] Ending imputation round 3/10, elapsed time 0.09
+[IterativeImputer] Ending imputation round 4/10, elapsed time 0.11
+[IterativeImputer] Ending imputation round 5/10, elapsed time 0.12
+[IterativeImputer] Ending imputation round 6/10, elapsed time 0.13
+[IterativeImputer] Ending imputation round 7/10, elapsed time 0.14
+[IterativeImputer] Ending imputation round 8/10, elapsed time 0.15
+[IterativeImputer] Ending imputation round 9/10, elapsed time 0.16
+[IterativeImputer] Ending imputation round 10/10, elapsed time 0.18
+[IterativeImputer] Completing matrix with shape (195, 9)
+[IterativeImputer] Ending imputation round 1/10, elapsed time 0.00
+[IterativeImputer] Ending imputation round 2/10, elapsed time 0.00
+[IterativeImputer] Ending imputation round 3/10, elapsed time 0.00
+[IterativeImputer] Ending imputation round 4/10, elapsed time 0.01
+[IterativeImputer] Ending imputation round 5/10, elapsed time 0.01
+[IterativeImputer] Ending imputation round 6/10, elapsed time 0.01
+[IterativeImputer] Ending imputation round 7/10, elapsed time 0.01
+[IterativeImputer] Ending imputation round 8/10, elapsed time 0.01
+[IterativeImputer] Ending imputation round 9/10, elapsed time 0.01
+[IterativeImputer] Ending imputation round 10/10, elapsed time 0.01
+/opt/anaconda3/lib/python3.7/site-packages/sklearn/impute/_iterative.py:603: ConvergenceWarning: [IterativeImputer] Early stopping criterion not reached.
+  " reached.", ConvergenceWarning)
+
+
+
+ +
+ +
Out[15]:
+ + + + +
+
<matplotlib.axes._subplots.AxesSubplot at 0x7f96dcaaca90>
+
+ +
+ +
+ +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+
+
+
In [16]:
+
+
+
if max5 < 10:
+    max5 = 10
+
+idf5 = impute_df(split_df5, max_iter= int(max5), verbose=2)
+size = idf5.shape[1]
+corr = idf5.corr()
+fig = plt.subplots(figsize=(15,15))
+sns.heatmap(corr, vmin=-1, vmax=1, center=0, xticklabels=range(size), yticklabels=range(size))
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
[IterativeImputer] Completing matrix with shape (195, 4)
+[IterativeImputer] Ending imputation round 1/10, elapsed time 0.03
+[IterativeImputer] Ending imputation round 2/10, elapsed time 0.04
+[IterativeImputer] Ending imputation round 3/10, elapsed time 0.04
+[IterativeImputer] Ending imputation round 4/10, elapsed time 0.04
+[IterativeImputer] Ending imputation round 5/10, elapsed time 0.05
+[IterativeImputer] Ending imputation round 6/10, elapsed time 0.05
+[IterativeImputer] Ending imputation round 7/10, elapsed time 0.06
+[IterativeImputer] Ending imputation round 8/10, elapsed time 0.08
+[IterativeImputer] Early stopping criterion reached.
+[IterativeImputer] Completing matrix with shape (195, 4)
+[IterativeImputer] Ending imputation round 1/8, elapsed time 0.00
+[IterativeImputer] Ending imputation round 2/8, elapsed time 0.00
+[IterativeImputer] Ending imputation round 3/8, elapsed time 0.00
+[IterativeImputer] Ending imputation round 4/8, elapsed time 0.00
+[IterativeImputer] Ending imputation round 5/8, elapsed time 0.00
+[IterativeImputer] Ending imputation round 6/8, elapsed time 0.00
+[IterativeImputer] Ending imputation round 7/8, elapsed time 0.00
+[IterativeImputer] Ending imputation round 8/8, elapsed time 0.00
+
+
+
+ +
+ +
Out[16]:
+ + + + +
+
<matplotlib.axes._subplots.AxesSubplot at 0x7f96dcaaa210>
+
+ +
+ +
+ +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+
+
+
In [17]:
+
+
+
if max6 < 10:
+    max6 = 10
+
+idf6 = impute_df(split_df6, max_iter= int(max6), verbose=2)
+size = idf6.shape[1]
+corr = idf6.corr()
+plt.subplots(figsize=(20,20))
+sns.heatmap(corr, vmin=-1, vmax=1, center=0, xticklabels=range(size), yticklabels=range(size))
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
[IterativeImputer] Completing matrix with shape (195, 9)
+[IterativeImputer] Ending imputation round 1/22, elapsed time 0.12
+[IterativeImputer] Ending imputation round 2/22, elapsed time 0.14
+[IterativeImputer] Ending imputation round 3/22, elapsed time 0.15
+[IterativeImputer] Ending imputation round 4/22, elapsed time 0.16
+[IterativeImputer] Ending imputation round 5/22, elapsed time 0.17
+[IterativeImputer] Ending imputation round 6/22, elapsed time 0.18
+[IterativeImputer] Ending imputation round 7/22, elapsed time 0.20
+[IterativeImputer] Early stopping criterion reached.
+[IterativeImputer] Completing matrix with shape (195, 9)
+[IterativeImputer] Ending imputation round 1/7, elapsed time 0.00
+[IterativeImputer] Ending imputation round 2/7, elapsed time 0.01
+[IterativeImputer] Ending imputation round 3/7, elapsed time 0.01
+[IterativeImputer] Ending imputation round 4/7, elapsed time 0.01
+[IterativeImputer] Ending imputation round 5/7, elapsed time 0.01
+[IterativeImputer] Ending imputation round 6/7, elapsed time 0.01
+[IterativeImputer] Ending imputation round 7/7, elapsed time 0.02
+
+
+
+ +
+ +
Out[17]:
+ + + + +
+
<matplotlib.axes._subplots.AxesSubplot at 0x7f96dcad8550>
+
+ +
+ +
+ +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+
+
+
+

Dataframe is merged and displayed below

+
+
+
+
+
+
In [18]:
+
+
+
# 29 - 5 - 11 - 9 - 4 - 9
+final_df = idf1.merge(idf2, left_index=True, right_index=True)
+print(final_df.shape)
+final_df = final_df.merge(idf3, left_index=True, right_index=True)
+print(final_df.shape)
+final_df = final_df.merge(idf4, left_index=True, right_index=True)
+print(final_df.shape)
+final_df = final_df.merge(idf5, left_index=True, right_index=True)
+print(final_df.shape)
+final_df = final_df.merge(idf6, left_index=True, right_index=True)
+print(final_df.shape)
+
+display(final_df)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
(195, 34)
+(195, 45)
+(195, 54)
+(195, 58)
+(195, 67)
+
+
+
+ +
+ +
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Population with at least some secondary education (% ages 25 and older)Population with at least some secondary education, female (% ages 25 and older)Population with at least some secondary education, male (% ages 25 and older)Share of seats in parliament (% held by women)Vulnerable employment (% of total employment)Urban population (%)Labour force participation rate (% ages 15 and older), femaleLabour force participation rate (% ages 15 and older), maleRemittances, inflows (% of GDP)Foreign direct investment, net inflows (% of GDP)...Population under age 5 (millions)Adolescent birth rate (births per 1,000 women ages 15-19)Sex ratio at birth (male to female births)Young age (0-14) dependency ratio (per 100 people ages 15-64)Old-age (65 and older) dependency ratio (per 100 people ages 15-64)HDI rankTotal unemployment rate (female to male ratio)Youth unemployment rate (female to male ratio)Coefficient of human inequalityInequality-adjusted HDI (IHDI)
AFG26.08013.22036.92027.24479.7260025.821.59500074.6580004.5420000.123000...5.63900068.9570001.06000077.3460004.764000169.01.3560001.30800029.7727320.360280
AGO30.23223.13338.05630.00065.9950066.276.13600078.9130000.002000-4.331000...5.670000150.5260001.03000091.0970004.297000148.01.0160000.90600031.7330000.397000
ALB93.17493.70092.49729.50852.8520061.246.71200064.5680009.6400007.912000...0.16900019.6420001.09000025.43900020.76400069.00.9030000.79900010.8930000.708000
AND72.32771.48473.32746.42915.4288488.054.35136472.2329831.7035733.286625...-7.12225914.9769281.05854725.01792821.99298736.01.7884141.41207310.0665360.786988
ARG57.15859.16154.82839.87721.8050092.050.72100072.7300000.1190001.389000...3.74200062.7820001.04000038.33400017.52300046.01.2220001.29100013.2380000.729000
..................................................................
WSM74.94279.12771.58310.00029.9830018.131.10400055.45600017.2540003.114609...0.02700023.8860001.08000066.1940008.623000111.01.2970001.49200021.1047000.551524
YEM28.02019.92036.9180.97145.6270037.35.83400070.1830007.999177-4.382862...4.09900060.3520001.05000067.7730005.015000179.02.0880001.46700030.8670000.321000
ZAF75.47874.97778.20745.33310.2980066.949.61000062.7490000.2530001.316000...5.78600067.9080001.03000044.1480008.253000114.01.1490001.16100031.1630000.468000
ZMB44.44038.48854.06817.96478.1340044.170.37000079.0760000.5510002.087000...2.902000120.1120001.03000083.2290003.960000146.01.1470001.07900030.5920000.401000
ZWE64.93559.79270.78334.57164.7390032.278.10600088.9930008.0680004.005312...2.13800086.1350001.02000076.8450005.433000150.01.2310001.26900022.5250000.441000
+

195 rows × 67 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [19]:
+
+
+
size = final_df.shape[1]
+corr = final_df.corr()
+plt.subplots(figsize=(20,20))
+sns.heatmap(corr, vmin=-1, vmax=1, center=0, xticklabels=range(size), yticklabels=range(size))
+
+ +
+
+
+ +
+
+ + +
+ +
Out[19]:
+ + + + +
+
<matplotlib.axes._subplots.AxesSubplot at 0x7f96dd44db50>
+
+ +
+ +
+ +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+
+
+
+

PCA of the Final Dataset

+
+
+
+
+
+
In [20]:
+
+
+
x = final_df.loc[:, final_df.columns].values
+print(x)
+x = StandardScaler().fit_transform(x)
+
+print(final_df.shape)
+print(x.shape)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
[[26.08       13.22       36.92       ...  1.308      29.77273216
+   0.36028022]
+ [30.232      23.133      38.056      ...  0.906      31.733
+   0.397     ]
+ [93.174      93.7        92.497      ...  0.799      10.893
+   0.708     ]
+ ...
+ [75.478      74.977      78.207      ...  1.161      31.163
+   0.468     ]
+ [44.44       38.488      54.068      ...  1.079      30.592
+   0.401     ]
+ [64.935      59.792      70.783      ...  1.269      22.525
+   0.441     ]]
+(195, 67)
+(195, 67)
+
+
+
+ +
+
+ +
+
+
+
In [21]:
+
+
+
np.mean(x), np.std(x)
+
+ +
+
+
+ +
+
+ + +
+ +
Out[21]:
+ + + + +
+
(-1.713134035701734e-17, 1.0)
+
+ +
+ +
+
+ +
+
+
+
In [22]:
+
+
+
feat_cols = final_df.columns.values.tolist()
+#print(feat_cols)
+normalized_final_df = pd.DataFrame(x, columns=feat_cols)
+normalized_final_df.head()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[22]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Population with at least some secondary education (% ages 25 and older)Population with at least some secondary education, female (% ages 25 and older)Population with at least some secondary education, male (% ages 25 and older)Share of seats in parliament (% held by women)Vulnerable employment (% of total employment)Urban population (%)Labour force participation rate (% ages 15 and older), femaleLabour force participation rate (% ages 15 and older), maleRemittances, inflows (% of GDP)Foreign direct investment, net inflows (% of GDP)...Population under age 5 (millions)Adolescent birth rate (births per 1,000 women ages 15-19)Sex ratio at birth (male to female births)Young age (0-14) dependency ratio (per 100 people ages 15-64)Old-age (65 and older) dependency ratio (per 100 people ages 15-64)HDI rankTotal unemployment rate (female to male ratio)Youth unemployment rate (female to male ratio)Coefficient of human inequalityInequality-adjusted HDI (IHDI)
0-1.242745-1.537407-0.9721840.3666961.554740-1.443911-2.0356800.233312-0.027719-0.441756...0.2250850.5348510.4625241.513894-0.9507051.364735-0.115960-0.0497731.192044-1.315801
1-1.094493-1.202607-0.9300830.6013351.0448870.2996181.6126590.733974-0.796618-0.915527...0.2278332.593772-1.2161612.161911-0.9997770.976870-0.308338-0.4850751.408239-1.110134
21.1529201.1807061.0875380.5594470.5568680.083835-0.355562-0.9539240.8356830.386758...-0.259851-0.7099322.141209-0.9322260.730564-0.482239-0.372276-0.600939-0.8901680.631779
30.4085550.4303880.3770852.000054-0.8327101.2404330.155448-0.052027-0.508438-0.105242...-0.906248-0.8276850.381230-0.9520690.859705-1.0917410.1287070.062921-0.9813171.074191
4-0.1330710.014194-0.3085011.442235-0.5959531.413060-0.0873930.006454-0.776802-0.307092...0.0569090.378985-0.656599-0.3245480.390002-0.907043-0.191780-0.068182-0.6315420.749400
+

5 rows × 67 columns

+
+
+ +
+ +
+
+ +
+
+
+
In [23]:
+
+
+
num_components = 3
+pca_final = PCA(n_components=num_components)
+pComponents_final = pca_final.fit_transform(x)
+component_col = ['PC'+str(i+1) for i in range(num_components)]
+print(component_col)
+
+percentage_list = [element * 100 for element in pca_final.explained_variance_ratio_]
+percentage_list = ['%.2f' % elem for elem in percentage_list]
+print(percentage_list)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
['PC1', 'PC2', 'PC3']
+['49.73', '7.93', '7.18']
+
+
+
+ +
+
+ +
+
+
+
In [24]:
+
+
+
pc_final_df = pd.DataFrame(data = pComponents_final, columns = component_col)
+print(pc_final_df.shape)
+pc_final_df.head()
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
(195, 3)
+
+
+
+ +
+ +
Out[24]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PC1PC2PC3
08.6609253.855080-0.080563
17.369314-2.6161490.028787
2-3.2873242.085875-0.449373
3-5.811149-0.738707-0.166838
4-3.9175830.676241-0.271113
+
+
+ +
+ +
+
+ +
+
+
+
In [25]:
+
+
+
print('Explained variation percentage per principal component: {}'.format(percentage_list))
+total_explained_percentage = (sum(pca_final.explained_variance_ratio_)*100)
+print('Total percentage of the explained data by',pca_final.n_components,'components is: %.2f' %total_explained_percentage)
+print('Percentage of the information that is lost for using',pca_final.n_components,'components is: %.2f' %(100-total_explained_percentage))
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
Explained variation percentage per principal component: ['49.73', '7.93', '7.18']
+Total percentage of the explained data by 3 components is: 64.84
+Percentage of the information that is lost for using 3 components is: 35.16
+
+
+
+ +
+
+ +
+
+
+
+

3 Main Principle Component is presented

+
+
+
+
+
+
In [26]:
+
+
+
l_dict = {}
+for i in range(len(percentage_list)):
+    l_dict[str(i)] = 'PC'+str(i+1)+' '+str(percentage_list[i])+'%'
+
+print(l_dict)
+
+fig = px.scatter_3d(
+    pComponents_final, x=0, y=1, z=2,
+    title=f'Total Explained Variance: {total_explained_percentage:.2f}%',
+    labels=l_dict
+)
+
+fig.show()
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
{'0': 'PC1 49.73%', '1': 'PC2 7.93%', '2': 'PC3 7.18%'}
+
+
+
+ +
+ +
+ + + + + +
+ +
+
+ +
+
+
+
+

Conversion of the Dataset to CSV

+
+
+
+
+
+
In [29]:
+
+
+
final_df.to_csv("../data/unlabeled/preprocessed/hdro_preprocessed.csv")
+
+ +
+
+
+ +
+
+
+ + + + + + diff --git a/documentation/WaterSecurity/unlabeled_preprocessing/index.html b/documentation/WaterSecurity/unlabeled_preprocessing/index.html index 2e19913..d7cad3b 100644 --- a/documentation/WaterSecurity/unlabeled_preprocessing/index.html +++ b/documentation/WaterSecurity/unlabeled_preprocessing/index.html @@ -5,7 +5,10 @@ WaterSecurity.unlabeled_preprocessing API documentation - + @@ -22,6 +25,27 @@

Module WaterSecurity.unlabeled_preprocessing

+

Notebooks below

+ +
+ +Expand source code + +
"""
+## Notebooks below
+* [Combining datasets](../notebooks/combine_unlabeled.html)
+* [Econ preprocessing](../notebooks/prep_economic_v2.html)
+* [Education preprocessing](../notebooks/prep_edstats.html)
+* [Human development preprocessing](../notebooks/prep_hdro_v2.html)
+* [Aquastat dataset](../notebooks/prep_aquastat.html)
+"""
+

Sub-modules

@@ -42,7 +66,9 @@

Sub-modules