{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Subject 1: CO2 concentration in the atmosphere since 1958" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Importation des bibliothèques nécessaires\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import isoweek" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Téléchargement et chargement des données\n", "data_url = \"https://scrippsco2.ucsd.edu/assets/data/atmospheric/stations/in_situ_co2/weekly/weekly_in_situ_co2_mlo.csv\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Charger les données à partir d'un fichier CSV local\n", "data_file = \"weekly_in_situ_co2.csv\"\n", "\n", "import os\n", "import urllib.request\n", "if not os.path.exists(data_file):\n", " urllib.request.urlretrieve(data_url, data_file)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Date Concentration\n", "0 1958-03-29 316.19\n", "1 1958-04-05 317.31\n", "2 1958-04-12 317.69\n", "3 1958-04-19 317.58\n", "4 1958-04-26 316.48\n" ] } ], "source": [ "# Charger les données dans une table de pandas\n", "# data = pd.read_csv(data_file, skiprows=44, sep=r'\\s+', engine='python', parse_dates=[0], index_col=[0], names = ['Date', 'Concentration'])\n", "data = pd.read_csv(data_file, skiprows=44, names = ['Date', 'Concentration'])\n", "# Affichage des premières lignes des données pour vérification\n", "print(data.head())" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# Toutes les lignes contenant au moins une valeur nulle (NaN) dans une colonne sont supprimées\n", "# data_subset = data.dropna()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Réalisation du graphique complet\n", "plt.figure(figsize=(15, 6))\n", "plt.plot(data['Date'], data['Concentration'], label='CO2 Concentration')\n", "plt.title('CO2 Concentration Over Time')\n", "plt.xlabel('Year')\n", "plt.ylabel('CO2 Concentration (ppm)')\n", "plt.legend()\n", "plt.grid(True)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Réalisation du graphique pour montrer l'oscillation (300 dernières lignes du tableau)\n", "plt.figure(figsize=(15, 6))\n", "plt.plot(data['Date'][-300:], data['Concentration'][-300:], label='CO2 Concentration')\n", "plt.title('CO2 Concentration Over Time')\n", "plt.xlabel('Year')\n", "plt.ylabel('CO2 Concentration (ppm)')\n", "plt.legend()\n", "plt.grid(True)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Convertir la columna 'Date' a tipo de datos de fecha\n", "data['Date'] = pd.to_datetime(data['Date'])\n", "# Extrayez l'année de la colonne 'Date' et créez une nouvelle colonne 'Année'\n", "data['Year'] = data['Date'].dt.year\n", "print(data.head())" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Calculez la valeur moyenne par an et créez une nouvelle colonne 'Concentration moyenne de CO2'\n", "data['Mean CO2 Concentration'] = data.groupby('Year')['Concentration'].transform('mean')\n", "print(data.head())" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Création du graphique pour montrer la concentration moyenne de CO2 par an au fil du temps\n", "plt.figure(figsize=(10, 6))\n", "plt.plot(data['Date'], data['Mean CO2 Concentration'], label='Mean CO2 Concentration')\n", "plt.title('Mean CO2 Concentration per Year Over Time')\n", "plt.xlabel('Year')\n", "plt.ylabel('CO2 Concentration (ppm)')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Subject 4: Latency and capacity estimation for a network connection from asymmetric measurements\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Importation des bibliothèques nécessaires\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import isoweek" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Importation des bibliothèques nécessaires\n", "url_liglab2 = \"http://mescal.imag.fr/membres/arnaud.legrand/teaching/2014/RICM4_EP_ping/liglab2.log.gz\"\n", "url_stackoverflow = \"http://mescal.imag.fr/membres/arnaud.legrand/teaching/2014/RICM4_EP_ping/stackoverflow.log.gz\"\n", "\n", "# Charger les données dans un DataFrame pandas\n", "df_liglab2 = pd.read_csv(url_liglab2, sep=\" \", header=None)\n", "df_stackoverflow = pd.read_csv(url_stackoverflow, sep=\" \", header=None)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Affichage des premières lignes des données pour vérification\n", "print(df_liglab2.head())\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Affichage des premières lignes des données pour vérification\n", "print(df_stackoverflow.head())" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "# Définir une fonction pour extraire les informations pertinentes de chaque ligne\n", "def process_ping_data(df):\n", " df.dropna(inplace=True) # Supprimer les lignes incomplètes\n", " df.columns = [\"date\", \"size\", \"bytes\", \"from\", \"url\", \"ip\", \"icmp\",\"ttl\",\"time\", \"ms\"] # Nommez les colonnes\n", " df[\"time\"] = df[\"time\"].str[5:].astype(float) # Extraire le temps en ms et convertir en float (supprimer la chaîne \"time-\")\n", " df[\"date\"] = df[\"date\"].str[1:18] # Extraire la date de la première colonne et la convertir au format \"datetime\"\n", " df[\"date\"] = pd.to_datetime(df[\"date\"], unit='s')\n", " return df\n", "\n", "# Traiter les données ping pour liglab2 et stackoverflow\n", "df_liglab2 = process_ping_data(df_liglab2)\n", "df_stackoverflow = process_ping_data(df_stackoverflow)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Affichage des premières lignes des données pour vérification\n", "print(df_liglab2.head())" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Affichage des premières lignes des données pour vérification\n", "print(df_stackoverflow.head())" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Graphique du temps de transmission dans le temps\n", "plt.figure(figsize=(10, 6))\n", "plt.plot(df_liglab2[\"date\"], df_liglab2[\"time\"], label=\"df_liglab2\")\n", "plt.xlabel(\"Time\")\n", "plt.ylabel(\"Transmission Time (ms)\")\n", "plt.title(\"Transmission time evolution (df_liglab2)\")\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Graphique du temps de transmission dans le temps\n", "plt.figure(figsize=(10, 6))\n", "plt.plot(df_stackoverflow[\"date\"], df_stackoverflow[\"time\"], label=\"df_stackoverflow\")\n", "plt.xlabel(\"Time\")\n", "plt.ylabel(\"Transmission Time (ms)\")\n", "plt.title(\"Transmission time evolution (df_stackoverflow)\")\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Graph of transmission time based on message size\n", "plt.figure(figsize=(10, 6))\n", "plt.plot(df_liglab2[\"size\"], df_liglab2[\"time\"], label=\"liglab2\")\n", "plt.xlabel(\"Message Size\")\n", "plt.ylabel(\"Transmission Time (ms)\")\n", "plt.title(\"Transmission time evolution (liglab2)\")\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Graph of transmission time based on message size\n", "plt.figure(figsize=(10, 6))\n", "plt.plot(df_stackoverflow[\"size\"], df_stackoverflow[\"time\"], label=\"df_stackoverflow\")\n", "plt.xlabel(\"Message Size\")\n", "plt.ylabel(\"Transmission Time (ms)\")\n", "plt.title(\"Transmission time evolution (df_stackoverflow)\")\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "\n" ] }, { "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 }