{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Tables"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import os"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"path2SP = \"/Users/ctoruno/OneDrive - World Justice Project/EU Subnational/EU-S Data/Automated Qualitative Checks/Data\"\n",
"\n",
"eu_member_states = [\n",
" \"Austria\",\"Belgium\",\"Bulgaria\",\"Croatia\",\"Cyprus\",\"Czechia\",\"Denmark\",\"Estonia\",\n",
" \"Finland\",\"France\",\"Germany\",\"Greece\",\"Hungary\",\"Ireland\",\"Italy\",\"Latvia\",\n",
" \"Lithuania\",\"Luxembourg\",\"Malta\",\"Netherlands\",\"Poland\",\"Portugal\",\"Romania\",\"Slovakia\",\n",
" \"Slovenia\",\"Spain\",\"Sweden\"\n",
"]\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Table 1: Extracted Data"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"data_tbl01 = {\n",
" \"Country\": [\"Austria\", \"Belgium\", \"Bulgaria\", \"Croatia\", \"Cyprus\", \"Czechia\", \"Denmark\", \"Estonia\", \"Finland\", \"France\", \n",
" \"Germany\", \"Greece\", \"Hungary\", \"Ireland\", \"Italy\", \"Latvia\", \"Lithuania\", \"Luxembourg\", \"Malta\", \n",
" \"Netherlands\", \"Poland\", \"Portugal\", \"Romania\", \"Slovakia\", \"Slovenia\", \"Spain\", \"Sweden\"],\n",
" \"Total News Extracted\": [46145, 21287, 38118, 37068, 34955, 41415, 11312, 12370, 6647, 64527, \n",
" 45321, 49504, 18111, 48409, 93858, 5487, 14396, 7894, 10842, \n",
" 23935, 21434, 29624, 33264, 34874, 10211, 112820, 6417],\n",
" \"Date Range\": [\"Mar 06, 2023 - Mar 07, 2024\", \"Jun 07, 2023 - Mar 07, 2024\", \"Jul 07, 2023 - Mar 07, 2024\",\n",
" \"Jul 07, 2023 - Mar 07, 2024\", \"Jul 07, 2023 - Mar 08, 2024\", \"Jul 07, 2023 - Mar 08, 2024\",\n",
" \"Aug 07, 2023 - Mar 07, 2024\", \"Aug 08, 2023 - Mar 07, 2024\", \"Aug 08, 2023 - Mar 07, 2024\",\n",
" \"Aug 07, 2023 - Mar 07, 2024\", \"Jan 08, 2024 - Mar 07, 2024\", \"Aug 08, 2023 - Mar 07, 2024\",\n",
" \"Aug 08, 2023 - Mar 07, 2024\", \"Aug 08, 2023 - Mar 07, 2024\", \"Aug 08, 2023 - Mar 07, 2024\",\n",
" \"Aug 09, 2023 - Mar 07, 2024\", \"Aug 08, 2023 - Mar 07, 2024\", \"Aug 08, 2023 - Mar 07, 2024\",\n",
" \"Aug 08, 2023 - Mar 07, 2024\", \"Aug 08, 2023 - Mar 07, 2024\", \"Aug 08, 2023 - Mar 07, 2024\",\n",
" \"Aug 08, 2023 - Mar 07, 2024\", \"Aug 08, 2023 - Mar 07, 2024\", \"Aug 08, 2023 - Mar 07, 2024\",\n",
" \"Aug 08, 2023 - Mar 07, 2024\", \"Aug 08, 2023 - Mar 07, 2024\", \"Jan 08, 2024 - Mar 07, 2024\"]\n",
"}\n",
"\n",
"tbl01 = pd.DataFrame(data_tbl01)\n",
"total_row = pd.DataFrame([[\"Total\", sum(data_tbl01[\"Total News Extracted\"]), \"\"]], columns=tbl01.columns)\n",
"tbl01_total = pd.concat([tbl01, total_row], ignore_index=True)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
\n",
" \n",
" \n",
" Country | \n",
" Total News Extracted | \n",
" Date Range | \n",
"
\n",
" \n",
" \n",
" \n",
" Austria | \n",
" 46,145 | \n",
" Mar 06, 2023 - Mar 07, 2024 | \n",
"
\n",
" \n",
" Belgium | \n",
" 21,287 | \n",
" Jun 07, 2023 - Mar 07, 2024 | \n",
"
\n",
" \n",
" Bulgaria | \n",
" 38,118 | \n",
" Jul 07, 2023 - Mar 07, 2024 | \n",
"
\n",
" \n",
" Croatia | \n",
" 37,068 | \n",
" Jul 07, 2023 - Mar 07, 2024 | \n",
"
\n",
" \n",
" Cyprus | \n",
" 34,955 | \n",
" Jul 07, 2023 - Mar 08, 2024 | \n",
"
\n",
" \n",
" Czechia | \n",
" 41,415 | \n",
" Jul 07, 2023 - Mar 08, 2024 | \n",
"
\n",
" \n",
" Denmark | \n",
" 11,312 | \n",
" Aug 07, 2023 - Mar 07, 2024 | \n",
"
\n",
" \n",
" Estonia | \n",
" 12,370 | \n",
" Aug 08, 2023 - Mar 07, 2024 | \n",
"
\n",
" \n",
" Finland | \n",
" 6,647 | \n",
" Aug 08, 2023 - Mar 07, 2024 | \n",
"
\n",
" \n",
" France | \n",
" 64,527 | \n",
" Aug 07, 2023 - Mar 07, 2024 | \n",
"
\n",
" \n",
" Germany | \n",
" 45,321 | \n",
" Jan 08, 2024 - Mar 07, 2024 | \n",
"
\n",
" \n",
" Greece | \n",
" 49,504 | \n",
" Aug 08, 2023 - Mar 07, 2024 | \n",
"
\n",
" \n",
" Hungary | \n",
" 18,111 | \n",
" Aug 08, 2023 - Mar 07, 2024 | \n",
"
\n",
" \n",
" Ireland | \n",
" 48,409 | \n",
" Aug 08, 2023 - Mar 07, 2024 | \n",
"
\n",
" \n",
" Italy | \n",
" 93,858 | \n",
" Aug 08, 2023 - Mar 07, 2024 | \n",
"
\n",
" \n",
" Latvia | \n",
" 5,487 | \n",
" Aug 09, 2023 - Mar 07, 2024 | \n",
"
\n",
" \n",
" Lithuania | \n",
" 14,396 | \n",
" Aug 08, 2023 - Mar 07, 2024 | \n",
"
\n",
" \n",
" Luxembourg | \n",
" 7,894 | \n",
" Aug 08, 2023 - Mar 07, 2024 | \n",
"
\n",
" \n",
" Malta | \n",
" 10,842 | \n",
" Aug 08, 2023 - Mar 07, 2024 | \n",
"
\n",
" \n",
" Netherlands | \n",
" 23,935 | \n",
" Aug 08, 2023 - Mar 07, 2024 | \n",
"
\n",
" \n",
" Poland | \n",
" 21,434 | \n",
" Aug 08, 2023 - Mar 07, 2024 | \n",
"
\n",
" \n",
" Portugal | \n",
" 29,624 | \n",
" Aug 08, 2023 - Mar 07, 2024 | \n",
"
\n",
" \n",
" Romania | \n",
" 33,264 | \n",
" Aug 08, 2023 - Mar 07, 2024 | \n",
"
\n",
" \n",
" Slovakia | \n",
" 34,874 | \n",
" Aug 08, 2023 - Mar 07, 2024 | \n",
"
\n",
" \n",
" Slovenia | \n",
" 10,211 | \n",
" Aug 08, 2023 - Mar 07, 2024 | \n",
"
\n",
" \n",
" Spain | \n",
" 112,820 | \n",
" Aug 08, 2023 - Mar 07, 2024 | \n",
"
\n",
" \n",
" Sweden | \n",
" 6,417 | \n",
" Jan 08, 2024 - Mar 07, 2024 | \n",
"
\n",
" \n",
" Total | \n",
" 880,245 | \n",
" | \n",
"
\n",
" \n",
"
\n"
],
"text/plain": [
""
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#| label: tbl-extraction\n",
"#| tbl-cap: Total news extracted per country\n",
"tbl01_total.style.hide(axis=\"index\").format({\n",
" 'Total News Extracted': '{:,.0f}'\n",
"})"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Table 2: Failed Translation"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"path2exdata = f\"{path2SP}/data-extraction-1/data4translation\"\n",
"extracted_data = [pd.read_parquet(f\"{path2exdata}/{country}_tp.parquet.gzip\") for country in eu_member_states]\n",
"exdata = pd.concat(extracted_data)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"path2trdata = f\"{path2SP}/data-extraction-1/ready4class\"\n",
"files = os.listdir(path2trdata)\n",
"translated_data = [pd.read_parquet(f\"{path2trdata}/{x}\") for x in files]\n",
"trdata = pd.concat(translated_data)"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" \n",
" \n",
" Country | \n",
" Extracted News (n) | \n",
" Translated News (n) | \n",
" Translated News (%) | \n",
"
\n",
" \n",
" \n",
" \n",
" Austria | \n",
" 46,145 | \n",
" 44,181 | \n",
" 95.7 | \n",
"
\n",
" \n",
" Belgium | \n",
" 21,287 | \n",
" 19,846 | \n",
" 93.2 | \n",
"
\n",
" \n",
" Bulgaria | \n",
" 38,118 | \n",
" 33,070 | \n",
" 86.8 | \n",
"
\n",
" \n",
" Croatia | \n",
" 37,068 | \n",
" 36,595 | \n",
" 98.7 | \n",
"
\n",
" \n",
" Cyprus | \n",
" 34,955 | \n",
" 33,772 | \n",
" 96.6 | \n",
"
\n",
" \n",
" Czechia | \n",
" 41,415 | \n",
" 40,620 | \n",
" 98.1 | \n",
"
\n",
" \n",
" Denmark | \n",
" 11,312 | \n",
" 10,761 | \n",
" 95.1 | \n",
"
\n",
" \n",
" Estonia | \n",
" 12,370 | \n",
" 11,334 | \n",
" 91.6 | \n",
"
\n",
" \n",
" Finland | \n",
" 6,647 | \n",
" 6,399 | \n",
" 96.3 | \n",
"
\n",
" \n",
" France | \n",
" 64,527 | \n",
" 62,900 | \n",
" 97.5 | \n",
"
\n",
" \n",
" Germany | \n",
" 45,321 | \n",
" 40,444 | \n",
" 89.2 | \n",
"
\n",
" \n",
" Greece | \n",
" 49,504 | \n",
" 47,182 | \n",
" 95.3 | \n",
"
\n",
" \n",
" Hungary | \n",
" 18,111 | \n",
" 17,965 | \n",
" 99.2 | \n",
"
\n",
" \n",
" Ireland | \n",
" 48,409 | \n",
" 48,409 | \n",
" 100.0 | \n",
"
\n",
" \n",
" Italy | \n",
" 93,858 | \n",
" 82,885 | \n",
" 88.3 | \n",
"
\n",
" \n",
" Latvia | \n",
" 5,487 | \n",
" 5,467 | \n",
" 99.6 | \n",
"
\n",
" \n",
" Lithuania | \n",
" 14,396 | \n",
" 13,287 | \n",
" 92.3 | \n",
"
\n",
" \n",
" Luxembourg | \n",
" 7,894 | \n",
" 7,636 | \n",
" 96.7 | \n",
"
\n",
" \n",
" Malta | \n",
" 10,842 | \n",
" 10,556 | \n",
" 97.4 | \n",
"
\n",
" \n",
" Netherlands | \n",
" 23,935 | \n",
" 22,642 | \n",
" 94.6 | \n",
"
\n",
" \n",
" Poland | \n",
" 21,434 | \n",
" 17,490 | \n",
" 81.6 | \n",
"
\n",
" \n",
" Portugal | \n",
" 29,624 | \n",
" 29,416 | \n",
" 99.3 | \n",
"
\n",
" \n",
" Romania | \n",
" 33,264 | \n",
" 32,234 | \n",
" 96.9 | \n",
"
\n",
" \n",
" Slovakia | \n",
" 34,874 | \n",
" 28,973 | \n",
" 83.1 | \n",
"
\n",
" \n",
" Slovenia | \n",
" 10,211 | \n",
" 9,818 | \n",
" 96.2 | \n",
"
\n",
" \n",
" Spain | \n",
" 112,820 | \n",
" 88,324 | \n",
" 78.3 | \n",
"
\n",
" \n",
" Sweden | \n",
" 6,417 | \n",
" 6,223 | \n",
" 97.0 | \n",
"
\n",
" \n",
" European Union | \n",
" 880,245 | \n",
" 808,429 | \n",
" 93.9 | \n",
"
\n",
" \n",
"
\n"
],
"text/plain": [
""
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#| label: tbl-translation\n",
"#| tbl-cap: Translation Process (Rate of Success)\n",
"\n",
"tbl02 = (\n",
" exdata.country.value_counts().reset_index().sort_values(\"country\")\n",
" .merge(\n",
" trdata.country.value_counts().reset_index(), \n",
" how = \"left\", \n",
" on = \"country\"\n",
" )\n",
" .assign(\n",
" success = lambda df: (1-((df['count_x'] - df['count_y']) / df['count_x']))*100\n",
" )\n",
" .rename(\n",
" columns = {\n",
" \"country\": \"Country\",\n",
" \"count_x\": \"Extracted News (n)\",\n",
" \"count_y\": \"Translated News (n)\",\n",
" \"success\": \"Translated News (%)\"\n",
" },\n",
" # inplace = True\n",
" )\n",
")\n",
"\n",
"total_row = pd.DataFrame(\n",
" [[\n",
" \"European Union\", \n",
" tbl02[\"Extracted News (n)\"].sum(),\n",
" tbl02[\"Translated News (n)\"].sum(),\n",
" tbl02[\"Translated News (%)\"].mean(),\n",
" ]], \n",
" columns=tbl02.columns\n",
")\n",
"tbl02_total = pd.concat([tbl02, total_row], ignore_index=True)\n",
"\n",
"tbl02_total.style.hide(axis=\"index\").format({\n",
" \"Extracted News (n)\": \"{:,.0f}\",\n",
" \"Translated News (n)\": \"{:,.0f}\",\n",
" \"Translated News (%)\": \"{:,.1f}\"\n",
"})"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Table 3: First Stage Classification"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"path2cldata = f\"{path2SP}/data-classification-1/0_compiled\"\n",
"\n",
"mutate_dict = {\n",
" \"Unrelated\" : 0,\n",
" \"Related\" : 1,\n",
" \"Justice\" : 1,\n",
" \"Governance\" : 1,\n",
" \"Rule of Law\" : 1,\n",
" \"Skipped article\": 2\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"cldata = [pd.read_parquet(f\"{path2cldata}/{country}_classified.parquet.gzip\") for country in eu_member_states]\n",
"cldata_master = pd.concat(cldata)"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [],
"source": [
"data = []\n",
"for country in eu_member_states:\n",
" file = f\"{path2cldata}/{country}_classified.parquet.gzip\"\n",
" df = pd.read_parquet(file)\n",
" df[\"topic_related\"] = df[\"topic_related\"].str.strip()\n",
" df[\"relation\"] = df[\"topic_related\"].replace(mutate_dict)\n",
"\n",
" if country == \"Czechia\":\n",
" location_column = \"location_Czech\"\n",
" else:\n",
" location_column = f\"location_{country}\"\n",
"\n",
" df[\"related_within\"] = df.apply(lambda row: row[location_column] and row[\"relation\"] == 1, axis=1)\n",
"\n",
" total = len(df)\n",
" related = (df.relation.value_counts()[1] / total)*100\n",
" within = (df.related_within.value_counts()[True] / total)*100\n",
" within_ = (df.related_within.value_counts()[True])\n",
" skipped = (df.relation.value_counts()[2] / total)*100\n",
"\n",
" dict = {\n",
" \"Country\": country,\n",
" \"Related (%)\" : related,\n",
" \"Related - Within (%)\": within,\n",
" \"Related - Within (n)\": within_,\n",
" \"Unclassified (%)\": skipped\n",
" }\n",
"\n",
" data.append(dict)"
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {},
"outputs": [],
"source": [
"tbl03 = pd.DataFrame(data)\n",
"total_row = pd.DataFrame(\n",
" [[\n",
" \"European Union\", \n",
" tbl02[\"Related (%)\"].mean(),\n",
" tbl02[\"Related - Within (%)\"].mean(),\n",
" tbl02[\"Related - Within (n)\"].sum(),\n",
" tbl02[\"Unclassified (%)\"].mean(),\n",
" ]], \n",
" columns=tbl03.columns\n",
")\n",
"tbl03_total = pd.concat([tbl03, total_row], ignore_index=True)"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" \n",
" \n",
" Country | \n",
" Related (%) | \n",
" Related - Within (%) | \n",
" Related - Within (n) | \n",
" Unclassified (%) | \n",
"
\n",
" \n",
" \n",
" \n",
" Austria | \n",
" 24.9 | \n",
" 12.7 | \n",
" 5,590 | \n",
" 0.5 | \n",
"
\n",
" \n",
" Belgium | \n",
" 24.2 | \n",
" 13.8 | \n",
" 2,737 | \n",
" 1.0 | \n",
"
\n",
" \n",
" Bulgaria | \n",
" 35.1 | \n",
" 24.4 | \n",
" 8,071 | \n",
" 0.3 | \n",
"
\n",
" \n",
" Croatia | \n",
" 28.8 | \n",
" 17.6 | \n",
" 6,431 | \n",
" 0.8 | \n",
"
\n",
" \n",
" Cyprus | \n",
" 29.1 | \n",
" 19.9 | \n",
" 6,716 | \n",
" 0.3 | \n",
"
\n",
" \n",
" Czechia | \n",
" 21.8 | \n",
" 17.5 | \n",
" 7,114 | \n",
" 1.3 | \n",
"
\n",
" \n",
" Denmark | \n",
" 30.6 | \n",
" 17.6 | \n",
" 1,897 | \n",
" 0.9 | \n",
"
\n",
" \n",
" Estonia | \n",
" 22.5 | \n",
" 14.1 | \n",
" 1,599 | \n",
" 0.3 | \n",
"
\n",
" \n",
" Finland | \n",
" 32.8 | \n",
" 23.5 | \n",
" 1,501 | \n",
" 0.8 | \n",
"
\n",
" \n",
" France | \n",
" 26.5 | \n",
" 15.8 | \n",
" 9,955 | \n",
" 0.7 | \n",
"
\n",
" \n",
" Germany | \n",
" 29.4 | \n",
" 23.0 | \n",
" 9,292 | \n",
" 0.8 | \n",
"
\n",
" \n",
" Greece | \n",
" 26.6 | \n",
" 17.1 | \n",
" 8,027 | \n",
" 1.2 | \n",
"
\n",
" \n",
" Hungary | \n",
" 25.8 | \n",
" 15.4 | \n",
" 2,768 | \n",
" 0.8 | \n",
"
\n",
" \n",
" Ireland | \n",
" 8.0 | \n",
" 5.5 | \n",
" 2,676 | \n",
" 0.2 | \n",
"
\n",
" \n",
" Italy | \n",
" 29.1 | \n",
" 24.1 | \n",
" 18,800 | \n",
" 0.8 | \n",
"
\n",
" \n",
" Latvia | \n",
" 15.1 | \n",
" 11.6 | \n",
" 636 | \n",
" 0.6 | \n",
"
\n",
" \n",
" Lithuania | \n",
" 31.5 | \n",
" 24.6 | \n",
" 3,272 | \n",
" 0.7 | \n",
"
\n",
" \n",
" Luxembourg | \n",
" 26.7 | \n",
" 14.7 | \n",
" 1,119 | \n",
" 0.5 | \n",
"
\n",
" \n",
" Malta | \n",
" 37.6 | \n",
" 30.4 | \n",
" 3,205 | \n",
" 0.4 | \n",
"
\n",
" \n",
" Netherlands | \n",
" 24.8 | \n",
" 14.2 | \n",
" 3,223 | \n",
" 0.6 | \n",
"
\n",
" \n",
" Poland | \n",
" 40.7 | \n",
" 33.7 | \n",
" 5,902 | \n",
" 0.8 | \n",
"
\n",
" \n",
" Portugal | \n",
" 23.2 | \n",
" 14.8 | \n",
" 4,217 | \n",
" 0.3 | \n",
"
\n",
" \n",
" Romania | \n",
" 43.6 | \n",
" 27.2 | \n",
" 8,765 | \n",
" 1.0 | \n",
"
\n",
" \n",
" Slovakia | \n",
" 26.8 | \n",
" 17.9 | \n",
" 5,172 | \n",
" 0.4 | \n",
"
\n",
" \n",
" Slovenia | \n",
" 30.7 | \n",
" 18.2 | \n",
" 1,786 | \n",
" 0.7 | \n",
"
\n",
" \n",
" Spain | \n",
" 27.7 | \n",
" 18.9 | \n",
" 16,685 | \n",
" 1.0 | \n",
"
\n",
" \n",
" Sweden | \n",
" 26.7 | \n",
" 15.6 | \n",
" 968 | \n",
" 2.5 | \n",
"
\n",
" \n",
" European Union | \n",
" 27.8 | \n",
" 18.7 | \n",
" 148,124 | \n",
" 0.8 | \n",
"
\n",
" \n",
"
\n"
],
"text/plain": [
""
]
},
"execution_count": 85,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#| label: tbl-classstage1\n",
"#| tbl-cap: Broad classification results\n",
"tbl03_total.style.hide(axis=\"index\").format({\n",
" \"Related (%)\": \"{:,.1f}\",\n",
" \"Related - Within (%)\": \"{:,.1f}\",\n",
" \"Related - Within (n)\": \"{:,.0f}\",\n",
" \"Unclassified (%)\": \"{:,.1f}\"\n",
"})"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Table 4: Second Stage Classification"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"tbl04_data = (\n",
" cldata_master.copy()\n",
" .drop_duplicates(subset = \"id\")\n",
" .loc[:,[\"country\", \"pillar_1\", \"pillar_2\", \"pillar_3\", \"pillar_4\", \"pillar_5\", \"pillar_6\", \"pillar_7\", \"pillar_8\"]]\n",
" .groupby(\"country\")\n",
" .agg(\"mean\")\n",
" .apply(lambda x: x*100)\n",
" .reset_index()\n",
" .rename(\n",
" columns = {\n",
" \"country\" : \"Country\",\n",
" \"pillar_1\": \"Pillar 1\",\n",
" \"pillar_2\": \"Pillar 2\",\n",
" \"pillar_3\": \"Pillar 3\",\n",
" \"pillar_4\": \"Pillar 4\",\n",
" \"pillar_5\": \"Pillar 5\",\n",
" \"pillar_6\": \"Pillar 6\",\n",
" \"pillar_7\": \"Pillar 7\",\n",
" \"pillar_8\": \"Pillar 8\",\n",
" }\n",
" )\n",
")\n",
"total_row = pd.DataFrame(\n",
" [[\"European Union\"] + tbl04_data.iloc[:, 1:].mean().values.tolist()], \n",
" columns=tbl04_data.columns\n",
")\n",
"tbl04_total = pd.concat([tbl04_data, total_row], ignore_index=True)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" \n",
" \n",
" Country | \n",
" Pillar 1 | \n",
" Pillar 2 | \n",
" Pillar 3 | \n",
" Pillar 4 | \n",
" Pillar 5 | \n",
" Pillar 6 | \n",
" Pillar 7 | \n",
" Pillar 8 | \n",
"
\n",
" \n",
" \n",
" \n",
" Austria | \n",
" 18.9 | \n",
" 9.8 | \n",
" 2.2 | \n",
" 15.3 | \n",
" 5.8 | \n",
" 2.5 | \n",
" 6.1 | \n",
" 15.8 | \n",
"
\n",
" \n",
" Belgium | \n",
" 13.3 | \n",
" 9.0 | \n",
" 1.4 | \n",
" 12.8 | \n",
" 5.8 | \n",
" 1.9 | \n",
" 6.5 | \n",
" 17.1 | \n",
"
\n",
" \n",
" Bulgaria | \n",
" 27.4 | \n",
" 16.7 | \n",
" 3.6 | \n",
" 17.8 | \n",
" 8.1 | \n",
" 5.2 | \n",
" 9.2 | \n",
" 21.3 | \n",
"
\n",
" \n",
" Croatia | \n",
" 20.6 | \n",
" 13.0 | \n",
" 2.3 | \n",
" 15.6 | \n",
" 8.1 | \n",
" 3.0 | \n",
" 6.5 | \n",
" 19.8 | \n",
"
\n",
" \n",
" Cyprus | \n",
" 22.6 | \n",
" 13.7 | \n",
" 3.9 | \n",
" 16.2 | \n",
" 7.5 | \n",
" 6.1 | \n",
" 7.9 | \n",
" 15.6 | \n",
"
\n",
" \n",
" Czechia | \n",
" 14.7 | \n",
" 9.1 | \n",
" 1.7 | \n",
" 10.8 | \n",
" 6.6 | \n",
" 2.7 | \n",
" 4.6 | \n",
" 14.6 | \n",
"
\n",
" \n",
" Denmark | \n",
" 24.3 | \n",
" 12.8 | \n",
" 3.0 | \n",
" 20.2 | \n",
" 9.2 | \n",
" 3.0 | \n",
" 8.2 | \n",
" 20.5 | \n",
"
\n",
" \n",
" Estonia | \n",
" 16.9 | \n",
" 8.9 | \n",
" 2.0 | \n",
" 11.7 | \n",
" 4.3 | \n",
" 3.4 | \n",
" 5.9 | \n",
" 13.2 | \n",
"
\n",
" \n",
" Finland | \n",
" 24.2 | \n",
" 12.9 | \n",
" 1.9 | \n",
" 20.3 | \n",
" 10.2 | \n",
" 3.6 | \n",
" 8.2 | \n",
" 22.5 | \n",
"
\n",
" \n",
" France | \n",
" 20.5 | \n",
" 9.7 | \n",
" 2.3 | \n",
" 18.5 | \n",
" 7.1 | \n",
" 3.1 | \n",
" 5.6 | \n",
" 15.3 | \n",
"
\n",
" \n",
" Germany | \n",
" 20.9 | \n",
" 9.5 | \n",
" 2.1 | \n",
" 17.7 | \n",
" 9.2 | \n",
" 2.5 | \n",
" 7.0 | \n",
" 19.4 | \n",
"
\n",
" \n",
" Greece | \n",
" 20.2 | \n",
" 12.1 | \n",
" 2.6 | \n",
" 16.7 | \n",
" 8.6 | \n",
" 3.9 | \n",
" 6.3 | \n",
" 17.4 | \n",
"
\n",
" \n",
" Hungary | \n",
" 21.8 | \n",
" 13.2 | \n",
" 2.6 | \n",
" 16.4 | \n",
" 5.9 | \n",
" 3.6 | \n",
" 4.0 | \n",
" 14.0 | \n",
"
\n",
" \n",
" Ireland | \n",
" 18.6 | \n",
" 9.4 | \n",
" 2.7 | \n",
" 16.5 | \n",
" 7.0 | \n",
" 3.7 | \n",
" 8.0 | \n",
" 16.2 | \n",
"
\n",
" \n",
" Italy | \n",
" 17.9 | \n",
" 12.3 | \n",
" 2.5 | \n",
" 17.2 | \n",
" 8.2 | \n",
" 4.1 | \n",
" 7.4 | \n",
" 18.4 | \n",
"
\n",
" \n",
" Latvia | \n",
" 10.4 | \n",
" 6.1 | \n",
" 2.0 | \n",
" 7.5 | \n",
" 3.1 | \n",
" 3.3 | \n",
" 2.1 | \n",
" 6.2 | \n",
"
\n",
" \n",
" Lithuania | \n",
" 22.7 | \n",
" 14.1 | \n",
" 2.4 | \n",
" 15.3 | \n",
" 6.6 | \n",
" 4.4 | \n",
" 7.7 | \n",
" 20.7 | \n",
"
\n",
" \n",
" Luxembourg | \n",
" 16.4 | \n",
" 8.3 | \n",
" 3.8 | \n",
" 15.8 | \n",
" 6.6 | \n",
" 3.7 | \n",
" 5.8 | \n",
" 13.1 | \n",
"
\n",
" \n",
" Malta | \n",
" 30.1 | \n",
" 19.3 | \n",
" 7.4 | \n",
" 24.0 | \n",
" 6.4 | \n",
" 9.2 | \n",
" 13.0 | \n",
" 21.4 | \n",
"
\n",
" \n",
" Netherlands | \n",
" 16.6 | \n",
" 9.6 | \n",
" 2.6 | \n",
" 15.5 | \n",
" 5.6 | \n",
" 3.0 | \n",
" 6.0 | \n",
" 14.8 | \n",
"
\n",
" \n",
" Poland | \n",
" 31.6 | \n",
" 18.1 | \n",
" 3.8 | \n",
" 23.1 | \n",
" 7.6 | \n",
" 5.6 | \n",
" 11.4 | \n",
" 23.5 | \n",
"
\n",
" \n",
" Portugal | \n",
" 18.6 | \n",
" 9.5 | \n",
" 3.0 | \n",
" 13.6 | \n",
" 3.1 | \n",
" 3.6 | \n",
" 5.2 | \n",
" 10.6 | \n",
"
\n",
" \n",
" Romania | \n",
" 28.6 | \n",
" 23.3 | \n",
" 4.1 | \n",
" 22.5 | \n",
" 9.5 | \n",
" 7.0 | \n",
" 8.1 | \n",
" 25.0 | \n",
"
\n",
" \n",
" Slovakia | \n",
" 23.1 | \n",
" 13.0 | \n",
" 3.6 | \n",
" 16.0 | \n",
" 4.6 | \n",
" 3.0 | \n",
" 4.9 | \n",
" 15.5 | \n",
"
\n",
" \n",
" Slovenia | \n",
" 24.4 | \n",
" 11.9 | \n",
" 3.1 | \n",
" 18.4 | \n",
" 7.4 | \n",
" 4.3 | \n",
" 7.4 | \n",
" 16.4 | \n",
"
\n",
" \n",
" Spain | \n",
" 20.6 | \n",
" 11.0 | \n",
" 2.6 | \n",
" 17.3 | \n",
" 6.3 | \n",
" 3.3 | \n",
" 6.1 | \n",
" 15.8 | \n",
"
\n",
" \n",
" Sweden | \n",
" 19.8 | \n",
" 10.2 | \n",
" 1.9 | \n",
" 18.1 | \n",
" 9.7 | \n",
" 2.0 | \n",
" 6.3 | \n",
" 19.1 | \n",
"
\n",
" \n",
" European Union | \n",
" 20.9 | \n",
" 12.1 | \n",
" 2.9 | \n",
" 16.7 | \n",
" 7.0 | \n",
" 3.9 | \n",
" 6.9 | \n",
" 17.1 | \n",
"
\n",
" \n",
"
\n"
],
"text/plain": [
""
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#| label: tbl-classstage2\n",
"#| tbl-cap: Pillar classification results (%)\n",
"tbl04_total.style.hide(axis=\"index\").format(precision=1)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.9"
}
},
"nbformat": 4,
"nbformat_minor": 2
}