Files

138 lines
399 KiB
Plaintext
Raw Permalink Normal View History

2026-03-14 07:29:10 +01:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 11,
"id": "db20765b-5d5e-4b39-9e0f-366e25909200",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# Load HDI data\n",
"hdi = pd.read_csv('Human Development Index - Full.csv') # contains 'country' and 'hdi_2022'\n",
"hdi = hdi[['ISO3', 'Human Development Index (2021)']].rename(columns={'Human Development Index (2021)':'HDI', 'ISO3': 'country'})\n",
"\n",
"# Load temperature data\n",
"temp = pd.read_csv('./combined_temperature.csv')\n",
"# Average temperature\n",
"temp_avg = temp.groupby('Code', as_index=False)['Annual Mean'].mean().rename(columns={'Annual Mean':'Avg_Temp_C', 'Code': 'country'})\n",
"\n",
"# Merge\n",
"df = pd.merge(hdi, temp_avg, on='country', how='inner').dropna()\n"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "911d2568-fccb-466d-be20-160f8956deb0",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1200x800 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(12, 8))\n",
"sns.regplot(\n",
" data=df,\n",
" x='Avg_Temp_C',\n",
" y='HDI',\n",
" scatter_kws={'alpha':0.7},\n",
" line_kws={'color':'darkred'},\n",
" ci=95\n",
")\n",
"\n",
"for i, row in df.iterrows():\n",
" plt.text(row['Avg_Temp_C'] + 0.2, row['HDI'], row['country'], fontsize=9, alpha=0.8)\n",
"\n",
"\n",
"\n",
"plt.xlabel('Avg Annual Temperature (°C)')\n",
"plt.ylabel('Human Development Index (01)')\n",
"plt.title('Human Development vs Average Temperature by Country')\n",
"plt.grid(True)\n",
"sns.despine(trim=True)\n",
"plt.tight_layout()\n",
"plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "dba05402-16c3-43a5-a8f3-170cf326b393",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df['Temp_Rank'] = df['Avg_Temp_C'].rank(method='min')\n",
"df['HDI_Rank'] = df['HDI'].rank(ascending=False, method='min') # higher HDI = better rank\n",
"\n",
"# Plot ranks\n",
"plt.figure(figsize=(10, 6))\n",
"sns.regplot(data=df, x='Temp_Rank', y='HDI_Rank')\n",
"\n",
"# Annotate\n",
"for i, row in df.iterrows():\n",
" plt.text(row['Temp_Rank'] + 0.1, row['HDI_Rank'], row['country'], fontsize=9)\n",
"\n",
"# Customize plot\n",
"plt.xlabel('Temperature Rank (cooler → lower rank)')\n",
"plt.ylabel('HDI Rank (higher HDI → lower rank)')\n",
"plt.title('Scatterplot of Country Ranks: Temperature vs HDI')\n",
"plt.grid(True)\n",
"plt.tight_layout()\n",
"plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "440c158d-1039-4050-a7af-6764f42e6985",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.12.10"
}
},
"nbformat": 4,
"nbformat_minor": 5
}