exo

parent e391755a
{
"cells": [],
"metadata": {},
"nbformat": 4,
"nbformat_minor": 4
}
{
"cells": [],
"cells": [
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Valeurs manquantes :\n",
" from Dec 2022 through Feb 2023 0\n",
"dtype: int64\n"
]
},
{
"ename": "KeyError",
"evalue": "\"['2008' '12'] not in index\"",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-7-1f8634fbd95a>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 22\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0;31m# Conversion de l'année et du mois en un format de date standard pour faciliter l'analyse chronologique\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 24\u001b[0;31m \u001b[0mraw_data\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'date'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_datetime\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mraw_data\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'2008'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'12'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0massign\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mday\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 25\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 26\u001b[0m \u001b[0;31m# Tracé de la concentration de CO₂ au fil du temps\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36m__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 2131\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mSeries\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndarray\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mIndex\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2132\u001b[0m \u001b[0;31m# either boolean or fancy integer index\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2133\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getitem_array\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2134\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mDataFrame\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2135\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getitem_frame\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36m_getitem_array\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 2175\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_take\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mconvert\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2176\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2177\u001b[0;31m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mloc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_convert_to_indexer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2178\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_take\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mconvert\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2179\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/core/indexing.py\u001b[0m in \u001b[0;36m_convert_to_indexer\u001b[0;34m(self, obj, axis, is_setter)\u001b[0m\n\u001b[1;32m 1267\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mmask\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0many\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1268\u001b[0m raise KeyError('{mask} not in index'\n\u001b[0;32m-> 1269\u001b[0;31m .format(mask=objarr[mask]))\n\u001b[0m\u001b[1;32m 1270\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1271\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0m_values_from_object\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mKeyError\u001b[0m: \"['2008' '12'] not in index\""
]
}
],
"source": [
"# Analyse des données de CO₂ de l'observatoire Mauna Loa\n",
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"import pandas as pd\n",
"\n",
"# URL des données de concentration de CO₂ en format CSV depuis le site de Scripps CO₂ Program\n",
"data_url = \"https://scrippsco2.ucsd.edu/assets/data/atmospheric/stations/in_situ_co2/monthly/monthly_in_situ_co2_mlo.csv\"\n",
"\n",
"# Chargement des données et ignorer les lignes de commentaires en début de fichier\n",
"# (Lignes de commentaires de 0 à 56 incluses, donc on saute les 57 premières lignes)\n",
"raw_data = pd.read_csv(data_url, sep=';', skiprows=57)\n",
"\n",
"# Affichage des premières lignes du jeu de données pour comprendre sa structure\n",
"raw_data.head()\n",
"\n",
"# Vérification des valeurs manquantes\n",
"print(\"Valeurs manquantes :\")\n",
"print(raw_data.isnull().sum())\n",
"\n",
"# Suppression des lignes avec des valeurs manquantes\n",
"data = raw_data.dropna()\n",
"\n",
"# Conversion de l'année et du mois en un format de date standard pour faciliter l'analyse chronologique\n",
"raw_data['date'] = pd.to_datetime(raw_data[['2008', '12']].assign(day=1))\n",
"\n",
"# Tracé de la concentration de CO₂ au fil du temps\n",
"plt.figure(figsize=(12, 6))\n",
"plt.plot(data['date'], data['average'], label='Concentration moyenne de CO₂ (ppm)', color='black')\n",
"plt.xlabel('Année')\n",
"plt.ylabel('Concentration de CO₂ (ppm)')\n",
"plt.title('Concentration mensuelle moyenne de CO₂ à Mauna Loa (1958 - présent)')\n",
"plt.legend()\n",
"plt.show()\n",
"\n",
"# Analyse des tendances avec une moyenne annuelle glissante pour observer la tendance à long terme\n",
"data['yearly_avg'] = data['average'].rolling(window=12).mean()\n",
"\n",
"plt.figure(figsize=(12, 6))\n",
"plt.plot(data['date'], data['average'], label='CO₂ mensuel', color='grey')\n",
"plt.plot(data['date'], data['yearly_avg'], label='Moyenne annuelle glissante', color='blue')\n",
"plt.xlabel('Année')\n",
"plt.ylabel('Concentration de CO₂ (ppm)')\n",
"plt.title('Tendance de la concentration de CO₂ à Mauna Loa')\n",
"plt.legend()\n",
"plt.show()\n",
"\n",
"# Étude de l'incidence annuelle\n",
"# Extraction de l'année pour faciliter le regroupement annuel\n",
"data['year'] = data['date'].dt.year\n",
"\n",
"# Calcul de la concentration annuelle moyenne\n",
"yearly_co2 = data.groupby('year')['average'].mean()\n",
"\n",
"# Visualisation de l'évolution annuelle\n",
"plt.figure(figsize=(12, 6))\n",
"yearly_co2.plot(style='*', color='green')\n",
"plt.xlabel(\"Année\")\n",
"plt.ylabel(\"Concentration annuelle moyenne de CO₂ (ppm)\")\n",
"plt.title(\"Évolution de la concentration annuelle moyenne de CO₂ à Mauna Loa\")\n",
"plt.show()\n",
"\n",
"# Distribution des concentrations annuelles de CO₂ pour évaluer les années avec les concentrations les plus élevées\n",
"df_yearly_co2 = yearly_co2.sort_values().reset_index()\n",
"df_yearly_co2.columns = ['Année', 'Concentration moyenne de CO₂ (ppm)']\n",
"df_yearly_co2\n",
"\n",
"# Histogramme de la distribution annuelle de CO₂\n",
"yearly_co2.hist(xrot=20, color='skyblue')\n",
"plt.xlabel(\"Concentration annuelle moyenne de CO₂ (ppm)\")\n",
"plt.ylabel(\"Nombre d'années\")\n",
"plt.title(\"Distribution de la concentration annuelle moyenne de CO₂ à Mauna Loa\")\n",
"plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
......@@ -16,10 +135,9 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.3"
"version": "3.6.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment