{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "from scipy.optimize import curve_fit\n", "import numpy as np\n", "import isoweek " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "data_url = \"https://scrippsco2.ucsd.edu/assets/data/atmospheric/stations/in_situ_co2/monthly/monthly_in_situ_co2_mlo.csv\"\n", "data = \"monthly_in_situ_co2_mlo.csv\"\n", "# Vérifier si le fichier local existe, et s'il n'existe pas, le télécharger depuis l'URL\n", "import os\n", "import urllib.request\n", "\n", "# Vérifier si le fichier local n'existe pas\n", "if not os.path.exists(data):\n", " # Télécharger les données depuis l'URL et les enregistrer dans le fichier local\n", " urllib.request.urlretrieve(data_url, data)\n", " " ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Index([' Yr', ' Mn', ' Date', ' Date', ' CO2', 'seasonally',\n", " ' fit', ' seasonally', ' CO2', ' seasonally', ' Sta'],\n", " dtype='object')\n" ] } ], "source": [ " # Lire les données depuis le fichier local CSV en sautant la première ligne (commentaire)\n", "raw_data = pd.read_csv(data, skiprows=57)\n", "\n", "# Afficher les données brutes\n", "raw_data\n", " # Sélectionner les lignes contenant au moins une valeur manquante (NaN)\n", "raw_data[raw_data.isnull().any(axis=1)]\n", " # Supprimer les lignes contenant des valeurs manquantes (NaN) à partir des données brutes\n", "data = raw_data.dropna().copy()\n", "\n", "# Afficher les données nettoyées (sans valeurs manquantes) et en créer une copie\n", "data\n", "data = data.dropna(subset=[' CO2'])\n", "print(data.columns)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/opt/conda/lib/python3.6/site-packages/ipykernel_launcher.py:13: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", " del sys.path[0]\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Grouper par année (Yr) et sommer les valeurs de CO2\n", "annees = data[' Yr'].unique() # Obtenir la liste des années uniques\n", "\n", "# Initialiser les listes pour stocker les années et les émissions de CO2 annuelles\n", "year = [] # Liste des années\n", "yearly_CO2 = [] # Liste des émissions annuelles de CO2\n", "\n", "for annee in annees:\n", " # Filtrer les données pour l'année spécifique\n", " donnees_annee = data[data[' Yr'] == annee]\n", " \n", " # Somme des émissions de CO2 pour l'année spécifique\n", " donnees_annee[' CO2'] = donnees_annee[' CO2'].astype(float)\n", " somme_co2_annee = donnees_annee[' CO2'].sum()\n", " \n", " # Ajouter l'année et la somme des émissions à leurs listes respectives\n", " year.append(annee)\n", " yearly_CO2.append(somme_co2_annee)\n", "\n", "# Créer une série pandas avec les données annuelles et les années comme index\n", "yearly_CO2 = pd.Series(data=yearly_CO2, index=year)\n", "# Tracer un graphique de dispersion des données d'incidence annuelle avec un style en étoile\n", "yearly_CO2.plot(style='*')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.6.4" } }, "nbformat": 4, "nbformat_minor": 2 }