{ "cells": [ { "cell_type": "code", "execution_count": 54, "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 # Pour gérer les semaines ISO" ] }, { "cell_type": "code", "execution_count": 55, "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)" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
YrMnDateDateCO2seasonallyfitseasonallyCO2seasonallySta
0adjustedadjusted fitfilledadjusted filledNaN
1Excel[ppm][ppm][ppm][ppm][ppm][ppm]NaN
2195801212001958.0411-99.99-99.99-99.99-99.99-99.99-99.99MLO
3195802212311958.1260-99.99-99.99-99.99-99.99-99.99-99.99MLO
4195803212591958.2027315.71314.44316.19314.91315.71314.44MLO
5195804212901958.2877317.45315.16317.30314.99317.45315.16MLO
6195805213201958.3699317.51314.69317.89315.07317.51314.69MLO
7195806213511958.4548-99.99-99.99317.27315.15317.27315.15MLO
8195807213811958.5370315.87315.20315.86315.22315.87315.20MLO
9195808214121958.6219314.93316.21313.97315.29314.93316.21MLO
10195809214431958.7068313.21316.11312.44315.35313.21316.11MLO
11195810214731958.7890-99.99-99.99312.42315.41312.42315.41MLO
12195811215041958.8740313.33315.21313.61315.46313.33315.21MLO
13195812215341958.9562314.67315.43314.77315.52314.67315.43MLO
14195901215651959.0411315.58315.52315.64315.57315.58315.52MLO
15195902215961959.1260316.49315.84316.29315.63316.49315.84MLO
16195903216241959.2027316.65315.38316.98315.70316.65315.38MLO
17195904216551959.2877317.72315.42318.09315.77317.72315.42MLO
18195905216851959.3699318.29315.46318.68315.85318.29315.46MLO
19195906217161959.4548318.15316.00318.07315.94318.15316.00MLO
20195907217461959.5370316.54315.87316.67316.03316.54315.87MLO
21195908217771959.6219314.80316.09314.80316.13314.80316.09MLO
22195909218081959.7068313.84316.75313.30316.22313.84316.75MLO
23195910218381959.7890313.33316.34313.31316.31313.33316.34MLO
24195911218691959.8740314.81316.69314.53316.40314.81316.69MLO
25195912218991959.9562315.58316.35315.72316.48315.58316.35MLO
26196001219301960.0410316.43316.37316.63316.56316.43316.37MLO
27196002219611960.1257316.98316.33317.29316.64316.98316.33MLO
28196003219901960.2049317.58316.28318.03316.72317.58316.28MLO
29196004220211960.2896319.03316.70319.14316.79319.03316.70MLO
....................................
764202107443922021.5370416.65415.85416.95416.18416.65415.85MLO
765202108444232021.6219414.34415.89414.78416.36414.34415.89MLO
766202109444542021.7068412.90416.40413.04416.55412.90416.40MLO
767202110444842021.7890413.55417.16413.14416.74413.55417.16MLO
768202111445152021.8740414.82417.08414.69416.92414.82417.08MLO
769202112445452021.9562416.43417.36416.19417.10416.43417.36MLO
770202201445762022.0411418.01417.94417.34417.26418.01417.94MLO
771202202446072022.1260418.99418.21418.21417.42418.99418.21MLO
772202203446352022.2027418.45416.92419.11417.56418.45416.92MLO
773202204446662022.2877420.02417.25420.50417.71420.02417.25MLO
774202205446962022.3699420.77417.36421.27417.86420.77417.36MLO
775202206447272022.4548420.68418.09420.60418.03420.68418.09MLO
776202207447572022.5370418.68417.87418.98418.21418.68417.87MLO
777202208447882022.6219416.76418.31416.80418.40416.76418.31MLO
778202209448192022.7068415.41418.91415.07418.59415.41418.91MLO
779202210448492022.7890415.31418.93415.18418.78415.31418.93MLO
780202211448802022.8740417.04419.31416.74418.98417.04419.31MLO
781202212449102022.9562418.57419.49418.27419.18418.57419.49MKO
782202301449412023.0411419.24419.17419.46419.38419.24419.17MKO
783202302449722023.1260420.33419.55420.38419.59420.33419.55MKO
784202303450002023.2027420.51418.97421.34419.79420.51418.97MLO
785202304450312023.2877422.73419.95422.81420.01422.73419.95MLO
786202305450612023.3699423.78420.36423.65420.23423.78420.36MLO
787202306450922023.4548423.39420.80423.03420.46423.39420.80MLO
788202307451222023.5370-99.99-99.99-99.99-99.99-99.99-99.99MLO
789202308451532023.6219-99.99-99.99-99.99-99.99-99.99-99.99MLO
790202309451842023.7068-99.99-99.99-99.99-99.99-99.99-99.99MLO
791202310452142023.7890-99.99-99.99-99.99-99.99-99.99-99.99MLO
792202311452452023.8740-99.99-99.99-99.99-99.99-99.99-99.99MLO
793202312452752023.9562-99.99-99.99-99.99-99.99-99.99-99.99MLO
\n", "

794 rows × 11 columns

\n", "
" ], "text/plain": [ " Yr Mn Date Date CO2 seasonally fit \\\n", "0 adjusted \n", "1 Excel [ppm] [ppm] [ppm] \n", "2 1958 01 21200 1958.0411 -99.99 -99.99 -99.99 \n", "3 1958 02 21231 1958.1260 -99.99 -99.99 -99.99 \n", "4 1958 03 21259 1958.2027 315.71 314.44 316.19 \n", "5 1958 04 21290 1958.2877 317.45 315.16 317.30 \n", "6 1958 05 21320 1958.3699 317.51 314.69 317.89 \n", "7 1958 06 21351 1958.4548 -99.99 -99.99 317.27 \n", "8 1958 07 21381 1958.5370 315.87 315.20 315.86 \n", "9 1958 08 21412 1958.6219 314.93 316.21 313.97 \n", "10 1958 09 21443 1958.7068 313.21 316.11 312.44 \n", "11 1958 10 21473 1958.7890 -99.99 -99.99 312.42 \n", "12 1958 11 21504 1958.8740 313.33 315.21 313.61 \n", "13 1958 12 21534 1958.9562 314.67 315.43 314.77 \n", "14 1959 01 21565 1959.0411 315.58 315.52 315.64 \n", "15 1959 02 21596 1959.1260 316.49 315.84 316.29 \n", "16 1959 03 21624 1959.2027 316.65 315.38 316.98 \n", "17 1959 04 21655 1959.2877 317.72 315.42 318.09 \n", "18 1959 05 21685 1959.3699 318.29 315.46 318.68 \n", "19 1959 06 21716 1959.4548 318.15 316.00 318.07 \n", "20 1959 07 21746 1959.5370 316.54 315.87 316.67 \n", "21 1959 08 21777 1959.6219 314.80 316.09 314.80 \n", "22 1959 09 21808 1959.7068 313.84 316.75 313.30 \n", "23 1959 10 21838 1959.7890 313.33 316.34 313.31 \n", "24 1959 11 21869 1959.8740 314.81 316.69 314.53 \n", "25 1959 12 21899 1959.9562 315.58 316.35 315.72 \n", "26 1960 01 21930 1960.0410 316.43 316.37 316.63 \n", "27 1960 02 21961 1960.1257 316.98 316.33 317.29 \n", "28 1960 03 21990 1960.2049 317.58 316.28 318.03 \n", "29 1960 04 22021 1960.2896 319.03 316.70 319.14 \n", ".. ... ... ... ... ... ... ... \n", "764 2021 07 44392 2021.5370 416.65 415.85 416.95 \n", "765 2021 08 44423 2021.6219 414.34 415.89 414.78 \n", "766 2021 09 44454 2021.7068 412.90 416.40 413.04 \n", "767 2021 10 44484 2021.7890 413.55 417.16 413.14 \n", "768 2021 11 44515 2021.8740 414.82 417.08 414.69 \n", "769 2021 12 44545 2021.9562 416.43 417.36 416.19 \n", "770 2022 01 44576 2022.0411 418.01 417.94 417.34 \n", "771 2022 02 44607 2022.1260 418.99 418.21 418.21 \n", "772 2022 03 44635 2022.2027 418.45 416.92 419.11 \n", "773 2022 04 44666 2022.2877 420.02 417.25 420.50 \n", "774 2022 05 44696 2022.3699 420.77 417.36 421.27 \n", "775 2022 06 44727 2022.4548 420.68 418.09 420.60 \n", "776 2022 07 44757 2022.5370 418.68 417.87 418.98 \n", "777 2022 08 44788 2022.6219 416.76 418.31 416.80 \n", "778 2022 09 44819 2022.7068 415.41 418.91 415.07 \n", "779 2022 10 44849 2022.7890 415.31 418.93 415.18 \n", "780 2022 11 44880 2022.8740 417.04 419.31 416.74 \n", "781 2022 12 44910 2022.9562 418.57 419.49 418.27 \n", "782 2023 01 44941 2023.0411 419.24 419.17 419.46 \n", "783 2023 02 44972 2023.1260 420.33 419.55 420.38 \n", "784 2023 03 45000 2023.2027 420.51 418.97 421.34 \n", "785 2023 04 45031 2023.2877 422.73 419.95 422.81 \n", "786 2023 05 45061 2023.3699 423.78 420.36 423.65 \n", "787 2023 06 45092 2023.4548 423.39 420.80 423.03 \n", "788 2023 07 45122 2023.5370 -99.99 -99.99 -99.99 \n", "789 2023 08 45153 2023.6219 -99.99 -99.99 -99.99 \n", "790 2023 09 45184 2023.7068 -99.99 -99.99 -99.99 \n", "791 2023 10 45214 2023.7890 -99.99 -99.99 -99.99 \n", "792 2023 11 45245 2023.8740 -99.99 -99.99 -99.99 \n", "793 2023 12 45275 2023.9562 -99.99 -99.99 -99.99 \n", "\n", " seasonally CO2 seasonally Sta \n", "0 adjusted fit filled adjusted filled NaN \n", "1 [ppm] [ppm] [ppm] NaN \n", "2 -99.99 -99.99 -99.99 MLO \n", "3 -99.99 -99.99 -99.99 MLO \n", "4 314.91 315.71 314.44 MLO \n", "5 314.99 317.45 315.16 MLO \n", "6 315.07 317.51 314.69 MLO \n", "7 315.15 317.27 315.15 MLO \n", "8 315.22 315.87 315.20 MLO \n", "9 315.29 314.93 316.21 MLO \n", "10 315.35 313.21 316.11 MLO \n", "11 315.41 312.42 315.41 MLO \n", "12 315.46 313.33 315.21 MLO \n", "13 315.52 314.67 315.43 MLO \n", "14 315.57 315.58 315.52 MLO \n", "15 315.63 316.49 315.84 MLO \n", "16 315.70 316.65 315.38 MLO \n", "17 315.77 317.72 315.42 MLO \n", "18 315.85 318.29 315.46 MLO \n", "19 315.94 318.15 316.00 MLO \n", "20 316.03 316.54 315.87 MLO \n", "21 316.13 314.80 316.09 MLO \n", "22 316.22 313.84 316.75 MLO \n", "23 316.31 313.33 316.34 MLO \n", "24 316.40 314.81 316.69 MLO \n", "25 316.48 315.58 316.35 MLO \n", "26 316.56 316.43 316.37 MLO \n", "27 316.64 316.98 316.33 MLO \n", "28 316.72 317.58 316.28 MLO \n", "29 316.79 319.03 316.70 MLO \n", ".. ... ... ... ... \n", "764 416.18 416.65 415.85 MLO \n", "765 416.36 414.34 415.89 MLO \n", "766 416.55 412.90 416.40 MLO \n", "767 416.74 413.55 417.16 MLO \n", "768 416.92 414.82 417.08 MLO \n", "769 417.10 416.43 417.36 MLO \n", "770 417.26 418.01 417.94 MLO \n", "771 417.42 418.99 418.21 MLO \n", "772 417.56 418.45 416.92 MLO \n", "773 417.71 420.02 417.25 MLO \n", "774 417.86 420.77 417.36 MLO \n", "775 418.03 420.68 418.09 MLO \n", "776 418.21 418.68 417.87 MLO \n", "777 418.40 416.76 418.31 MLO \n", "778 418.59 415.41 418.91 MLO \n", "779 418.78 415.31 418.93 MLO \n", "780 418.98 417.04 419.31 MLO \n", "781 419.18 418.57 419.49 MKO \n", "782 419.38 419.24 419.17 MKO \n", "783 419.59 420.33 419.55 MKO \n", "784 419.79 420.51 418.97 MLO \n", "785 420.01 422.73 419.95 MLO \n", "786 420.23 423.78 420.36 MLO \n", "787 420.46 423.39 420.80 MLO \n", "788 -99.99 -99.99 -99.99 MLO \n", "789 -99.99 -99.99 -99.99 MLO \n", "790 -99.99 -99.99 -99.99 MLO \n", "791 -99.99 -99.99 -99.99 MLO \n", "792 -99.99 -99.99 -99.99 MLO \n", "793 -99.99 -99.99 -99.99 MLO \n", "\n", "[794 rows x 11 columns]" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "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" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
YrMnDateDateCO2seasonallyfitseasonallyCO2seasonallySta
0adjustedadjusted fitfilledadjusted filledNaN
1Excel[ppm][ppm][ppm][ppm][ppm][ppm]NaN
\n", "
" ], "text/plain": [ " Yr Mn Date Date CO2 seasonally fit \\\n", "0 adjusted \n", "1 Excel [ppm] [ppm] [ppm] \n", "\n", " seasonally CO2 seasonally Sta \n", "0 adjusted fit filled adjusted filled NaN \n", "1 [ppm] [ppm] [ppm] NaN " ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Sélectionner les lignes contenant au moins une valeur manquante (NaN)\n", "raw_data[raw_data.isnull().any(axis=1)]" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
YrMnDateDateCO2seasonallyfitseasonallyCO2seasonallySta
2195801212001958.0411-99.99-99.99-99.99-99.99-99.99-99.99MLO
3195802212311958.1260-99.99-99.99-99.99-99.99-99.99-99.99MLO
4195803212591958.2027315.71314.44316.19314.91315.71314.44MLO
5195804212901958.2877317.45315.16317.30314.99317.45315.16MLO
6195805213201958.3699317.51314.69317.89315.07317.51314.69MLO
7195806213511958.4548-99.99-99.99317.27315.15317.27315.15MLO
8195807213811958.5370315.87315.20315.86315.22315.87315.20MLO
9195808214121958.6219314.93316.21313.97315.29314.93316.21MLO
10195809214431958.7068313.21316.11312.44315.35313.21316.11MLO
11195810214731958.7890-99.99-99.99312.42315.41312.42315.41MLO
12195811215041958.8740313.33315.21313.61315.46313.33315.21MLO
13195812215341958.9562314.67315.43314.77315.52314.67315.43MLO
14195901215651959.0411315.58315.52315.64315.57315.58315.52MLO
15195902215961959.1260316.49315.84316.29315.63316.49315.84MLO
16195903216241959.2027316.65315.38316.98315.70316.65315.38MLO
17195904216551959.2877317.72315.42318.09315.77317.72315.42MLO
18195905216851959.3699318.29315.46318.68315.85318.29315.46MLO
19195906217161959.4548318.15316.00318.07315.94318.15316.00MLO
20195907217461959.5370316.54315.87316.67316.03316.54315.87MLO
21195908217771959.6219314.80316.09314.80316.13314.80316.09MLO
22195909218081959.7068313.84316.75313.30316.22313.84316.75MLO
23195910218381959.7890313.33316.34313.31316.31313.33316.34MLO
24195911218691959.8740314.81316.69314.53316.40314.81316.69MLO
25195912218991959.9562315.58316.35315.72316.48315.58316.35MLO
26196001219301960.0410316.43316.37316.63316.56316.43316.37MLO
27196002219611960.1257316.98316.33317.29316.64316.98316.33MLO
28196003219901960.2049317.58316.28318.03316.72317.58316.28MLO
29196004220211960.2896319.03316.70319.14316.79319.03316.70MLO
30196005220511960.3716320.03317.20319.70316.87320.03317.20MLO
31196006220821960.4563319.58317.45319.04316.93319.58317.45MLO
....................................
764202107443922021.5370416.65415.85416.95416.18416.65415.85MLO
765202108444232021.6219414.34415.89414.78416.36414.34415.89MLO
766202109444542021.7068412.90416.40413.04416.55412.90416.40MLO
767202110444842021.7890413.55417.16413.14416.74413.55417.16MLO
768202111445152021.8740414.82417.08414.69416.92414.82417.08MLO
769202112445452021.9562416.43417.36416.19417.10416.43417.36MLO
770202201445762022.0411418.01417.94417.34417.26418.01417.94MLO
771202202446072022.1260418.99418.21418.21417.42418.99418.21MLO
772202203446352022.2027418.45416.92419.11417.56418.45416.92MLO
773202204446662022.2877420.02417.25420.50417.71420.02417.25MLO
774202205446962022.3699420.77417.36421.27417.86420.77417.36MLO
775202206447272022.4548420.68418.09420.60418.03420.68418.09MLO
776202207447572022.5370418.68417.87418.98418.21418.68417.87MLO
777202208447882022.6219416.76418.31416.80418.40416.76418.31MLO
778202209448192022.7068415.41418.91415.07418.59415.41418.91MLO
779202210448492022.7890415.31418.93415.18418.78415.31418.93MLO
780202211448802022.8740417.04419.31416.74418.98417.04419.31MLO
781202212449102022.9562418.57419.49418.27419.18418.57419.49MKO
782202301449412023.0411419.24419.17419.46419.38419.24419.17MKO
783202302449722023.1260420.33419.55420.38419.59420.33419.55MKO
784202303450002023.2027420.51418.97421.34419.79420.51418.97MLO
785202304450312023.2877422.73419.95422.81420.01422.73419.95MLO
786202305450612023.3699423.78420.36423.65420.23423.78420.36MLO
787202306450922023.4548423.39420.80423.03420.46423.39420.80MLO
788202307451222023.5370-99.99-99.99-99.99-99.99-99.99-99.99MLO
789202308451532023.6219-99.99-99.99-99.99-99.99-99.99-99.99MLO
790202309451842023.7068-99.99-99.99-99.99-99.99-99.99-99.99MLO
791202310452142023.7890-99.99-99.99-99.99-99.99-99.99-99.99MLO
792202311452452023.8740-99.99-99.99-99.99-99.99-99.99-99.99MLO
793202312452752023.9562-99.99-99.99-99.99-99.99-99.99-99.99MLO
\n", "

792 rows × 11 columns

\n", "
" ], "text/plain": [ " Yr Mn Date Date CO2 seasonally fit \\\n", "2 1958 01 21200 1958.0411 -99.99 -99.99 -99.99 \n", "3 1958 02 21231 1958.1260 -99.99 -99.99 -99.99 \n", "4 1958 03 21259 1958.2027 315.71 314.44 316.19 \n", "5 1958 04 21290 1958.2877 317.45 315.16 317.30 \n", "6 1958 05 21320 1958.3699 317.51 314.69 317.89 \n", "7 1958 06 21351 1958.4548 -99.99 -99.99 317.27 \n", "8 1958 07 21381 1958.5370 315.87 315.20 315.86 \n", "9 1958 08 21412 1958.6219 314.93 316.21 313.97 \n", "10 1958 09 21443 1958.7068 313.21 316.11 312.44 \n", "11 1958 10 21473 1958.7890 -99.99 -99.99 312.42 \n", "12 1958 11 21504 1958.8740 313.33 315.21 313.61 \n", "13 1958 12 21534 1958.9562 314.67 315.43 314.77 \n", "14 1959 01 21565 1959.0411 315.58 315.52 315.64 \n", "15 1959 02 21596 1959.1260 316.49 315.84 316.29 \n", "16 1959 03 21624 1959.2027 316.65 315.38 316.98 \n", "17 1959 04 21655 1959.2877 317.72 315.42 318.09 \n", "18 1959 05 21685 1959.3699 318.29 315.46 318.68 \n", "19 1959 06 21716 1959.4548 318.15 316.00 318.07 \n", "20 1959 07 21746 1959.5370 316.54 315.87 316.67 \n", "21 1959 08 21777 1959.6219 314.80 316.09 314.80 \n", "22 1959 09 21808 1959.7068 313.84 316.75 313.30 \n", "23 1959 10 21838 1959.7890 313.33 316.34 313.31 \n", "24 1959 11 21869 1959.8740 314.81 316.69 314.53 \n", "25 1959 12 21899 1959.9562 315.58 316.35 315.72 \n", "26 1960 01 21930 1960.0410 316.43 316.37 316.63 \n", "27 1960 02 21961 1960.1257 316.98 316.33 317.29 \n", "28 1960 03 21990 1960.2049 317.58 316.28 318.03 \n", "29 1960 04 22021 1960.2896 319.03 316.70 319.14 \n", "30 1960 05 22051 1960.3716 320.03 317.20 319.70 \n", "31 1960 06 22082 1960.4563 319.58 317.45 319.04 \n", ".. ... ... ... ... ... ... ... \n", "764 2021 07 44392 2021.5370 416.65 415.85 416.95 \n", "765 2021 08 44423 2021.6219 414.34 415.89 414.78 \n", "766 2021 09 44454 2021.7068 412.90 416.40 413.04 \n", "767 2021 10 44484 2021.7890 413.55 417.16 413.14 \n", "768 2021 11 44515 2021.8740 414.82 417.08 414.69 \n", "769 2021 12 44545 2021.9562 416.43 417.36 416.19 \n", "770 2022 01 44576 2022.0411 418.01 417.94 417.34 \n", "771 2022 02 44607 2022.1260 418.99 418.21 418.21 \n", "772 2022 03 44635 2022.2027 418.45 416.92 419.11 \n", "773 2022 04 44666 2022.2877 420.02 417.25 420.50 \n", "774 2022 05 44696 2022.3699 420.77 417.36 421.27 \n", "775 2022 06 44727 2022.4548 420.68 418.09 420.60 \n", "776 2022 07 44757 2022.5370 418.68 417.87 418.98 \n", "777 2022 08 44788 2022.6219 416.76 418.31 416.80 \n", "778 2022 09 44819 2022.7068 415.41 418.91 415.07 \n", "779 2022 10 44849 2022.7890 415.31 418.93 415.18 \n", "780 2022 11 44880 2022.8740 417.04 419.31 416.74 \n", "781 2022 12 44910 2022.9562 418.57 419.49 418.27 \n", "782 2023 01 44941 2023.0411 419.24 419.17 419.46 \n", "783 2023 02 44972 2023.1260 420.33 419.55 420.38 \n", "784 2023 03 45000 2023.2027 420.51 418.97 421.34 \n", "785 2023 04 45031 2023.2877 422.73 419.95 422.81 \n", "786 2023 05 45061 2023.3699 423.78 420.36 423.65 \n", "787 2023 06 45092 2023.4548 423.39 420.80 423.03 \n", "788 2023 07 45122 2023.5370 -99.99 -99.99 -99.99 \n", "789 2023 08 45153 2023.6219 -99.99 -99.99 -99.99 \n", "790 2023 09 45184 2023.7068 -99.99 -99.99 -99.99 \n", "791 2023 10 45214 2023.7890 -99.99 -99.99 -99.99 \n", "792 2023 11 45245 2023.8740 -99.99 -99.99 -99.99 \n", "793 2023 12 45275 2023.9562 -99.99 -99.99 -99.99 \n", "\n", " seasonally CO2 seasonally Sta \n", "2 -99.99 -99.99 -99.99 MLO \n", "3 -99.99 -99.99 -99.99 MLO \n", "4 314.91 315.71 314.44 MLO \n", "5 314.99 317.45 315.16 MLO \n", "6 315.07 317.51 314.69 MLO \n", "7 315.15 317.27 315.15 MLO \n", "8 315.22 315.87 315.20 MLO \n", "9 315.29 314.93 316.21 MLO \n", "10 315.35 313.21 316.11 MLO \n", "11 315.41 312.42 315.41 MLO \n", "12 315.46 313.33 315.21 MLO \n", "13 315.52 314.67 315.43 MLO \n", "14 315.57 315.58 315.52 MLO \n", "15 315.63 316.49 315.84 MLO \n", "16 315.70 316.65 315.38 MLO \n", "17 315.77 317.72 315.42 MLO \n", "18 315.85 318.29 315.46 MLO \n", "19 315.94 318.15 316.00 MLO \n", "20 316.03 316.54 315.87 MLO \n", "21 316.13 314.80 316.09 MLO \n", "22 316.22 313.84 316.75 MLO \n", "23 316.31 313.33 316.34 MLO \n", "24 316.40 314.81 316.69 MLO \n", "25 316.48 315.58 316.35 MLO \n", "26 316.56 316.43 316.37 MLO \n", "27 316.64 316.98 316.33 MLO \n", "28 316.72 317.58 316.28 MLO \n", "29 316.79 319.03 316.70 MLO \n", "30 316.87 320.03 317.20 MLO \n", "31 316.93 319.58 317.45 MLO \n", ".. ... ... ... ... \n", "764 416.18 416.65 415.85 MLO \n", "765 416.36 414.34 415.89 MLO \n", "766 416.55 412.90 416.40 MLO \n", "767 416.74 413.55 417.16 MLO \n", "768 416.92 414.82 417.08 MLO \n", "769 417.10 416.43 417.36 MLO \n", "770 417.26 418.01 417.94 MLO \n", "771 417.42 418.99 418.21 MLO \n", "772 417.56 418.45 416.92 MLO \n", "773 417.71 420.02 417.25 MLO \n", "774 417.86 420.77 417.36 MLO \n", "775 418.03 420.68 418.09 MLO \n", "776 418.21 418.68 417.87 MLO \n", "777 418.40 416.76 418.31 MLO \n", "778 418.59 415.41 418.91 MLO \n", "779 418.78 415.31 418.93 MLO \n", "780 418.98 417.04 419.31 MLO \n", "781 419.18 418.57 419.49 MKO \n", "782 419.38 419.24 419.17 MKO \n", "783 419.59 420.33 419.55 MKO \n", "784 419.79 420.51 418.97 MLO \n", "785 420.01 422.73 419.95 MLO \n", "786 420.23 423.78 420.36 MLO \n", "787 420.46 423.39 420.80 MLO \n", "788 -99.99 -99.99 -99.99 MLO \n", "789 -99.99 -99.99 -99.99 MLO \n", "790 -99.99 -99.99 -99.99 MLO \n", "791 -99.99 -99.99 -99.99 MLO \n", "792 -99.99 -99.99 -99.99 MLO \n", "793 -99.99 -99.99 -99.99 MLO \n", "\n", "[792 rows x 11 columns]" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 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" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [], "source": [ "data = data.dropna(subset=[' CO2'])" ] }, { "cell_type": "code", "execution_count": 60, "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": [ "print(data.columns)" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/opt/conda/lib/python3.6/site-packages/ipykernel_launcher.py:14: 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", " \n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#question1\n", "# 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": "markdown", "metadata": {}, "source": [ "Le code fourni a pour objectif d'effectuer une analyse des composantes périodiques d'un jeu de données de concentrations de CO2 à l'aide de la transformation de Fourier en utilisant Python. Il commence par charger les données à partir d'un fichier CSV dans un DataFrame Pandas. Ensuite, il identifie la colonne appropriée contenant les données de concentration de CO2 et la convertit en format numérique (float) pour s'assurer que les données sont traitées correctement. Une fois les données préparées, le code applique la transformation de Fourier pour analyser les composantes périodiques dans les données. La sortie de cette analyse est ensuite visualisée dans le domaine de fréquence, montrant les amplitudes des différentes composantes périodiques. Ce type d'analyse est utile pour détecter des modèles saisonniers ou cycliques dans les données de CO2, ce qui peut avoir des implications significatives dans le domaine de la climatologie et de l'environnement. Assurez-vous de personnaliser le code en remplaçant 'CO2' par le nom de la colonne réelle contenant les données de CO2 de votre ensemble de données." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fréquence dominante (période la plus importante) en années: inf\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/opt/conda/lib/python3.6/site-packages/ipykernel_launcher.py:20: RuntimeWarning: divide by zero encountered in true_divide\n", "/opt/conda/lib/python3.6/site-packages/ipykernel_launcher.py:27: RuntimeWarning: divide by zero encountered in double_scalars\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "dates = data[\" Yr\"] # Colonne des dates\n", "co2_concentration_series = data[\" CO2\"].astype(float) # Colonne de concentration de CO2 (avant ajustement saisonnier)\n", "\n", "# Appliquer la transformation de Fourier pour identifier les composantes périodiques\n", "co2_concentration = co2_concentration_series.values\n", "fourier_transform = np.fft.fft(co2_concentration)\n", "frequencies = np.fft.fftfreq(len(co2_concentration))\n", "amplitudes = np.abs(fourier_transform)\n", "\n", "# Trouver les fréquences dominantes (composantes périodiques)\n", "# Dans cet exemple, nous considérons les fréquences positives seulement (ignore les négatives)\n", "positive_frequencies = frequencies[:len(frequencies) // 2]\n", "positive_amplitudes = amplitudes[:len(amplitudes) // 2]\n", "\n", "# Identifier la fréquence dominante (correspondant à la période la plus importante)\n", "dominant_frequency = positive_frequencies[np.argmax(positive_amplitudes)]\n", "\n", "# Créer un graphique pour montrer les composantes périodiques\n", "plt.figure(figsize=(12, 6))\n", "plt.plot(1 / positive_frequencies, positive_amplitudes) # Période au lieu de fréquence\n", "plt.title(\"Composantes Périodiques de la Concentration de CO2\")\n", "plt.xlabel(\"Période (années)\")\n", "plt.ylabel(\"Amplitude\")\n", "plt.grid(True)\n", "\n", "# Afficher la fréquence dominante\n", "print(\"Fréquence dominante (période la plus importante) en années:\", 1 / dominant_frequency)\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "ename": "ValueError", "evalue": "to assemble mappings requires at least that [year, month, day] be specified: [month,year] is missing", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0massign\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mJr\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[1;32m 4\u001b[0m \u001b[0;31m# Créez une colonne de date en combinant Year et Month\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mdata\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[0mdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m' Yr'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m' Mn'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'Jr'\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 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;31m# Supprimez les colonnes Year et Month si nécessaire\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/tools/datetimes.py\u001b[0m in \u001b[0;36mto_datetime\u001b[0;34m(arg, errors, dayfirst, yearfirst, utc, box, format, exact, unit, infer_datetime_format, origin)\u001b[0m\n\u001b[1;32m 374\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mSeries\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mindex\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0marg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0marg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 375\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marg\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mABCDataFrame\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mMutableMapping\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[0;32m--> 376\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_assemble_from_unit_mappings\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marg\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0merrors\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0merrors\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 377\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marg\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mABCIndexClass\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 378\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_convert_listlike\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marg\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbox\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mformat\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0marg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname\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/tools/datetimes.py\u001b[0m in \u001b[0;36m_assemble_from_unit_mappings\u001b[0;34m(arg, errors)\u001b[0m\n\u001b[1;32m 453\u001b[0m raise ValueError(\"to assemble mappings requires at least that \"\n\u001b[1;32m 454\u001b[0m \u001b[0;34m\"[year, month, day] be specified: [{required}] \"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 455\u001b[0;31m \"is missing\".format(required=','.join(req)))\n\u001b[0m\u001b[1;32m 456\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 457\u001b[0m \u001b[0;31m# keys we don't recognize\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mValueError\u001b[0m: to assemble mappings requires at least that [year, month, day] be specified: [month,year] is missing" ] } ], "source": [ "#question2\n", "from statsmodels.tsa.seasonal import seasonal_decompose\n", "data = data.assign(Jr=1)\n", "# Créez une colonne de date en combinant Year et Month\n", "data['Date'] = pd.to_datetime(data[[' Yr', ' Mn', 'Jr']].assign(day=1))\n", "\n", "# Supprimez les colonnes Year et Month si nécessaire\n", "data = data.drop([' Yr', ' Mn', 'Jr'], axis=1)\n", "\n", "# Assurez-vous que 'Date' est un objet DateTime pour définir la fréquence\n", "data['Date'] = pd.to_datetime(data['Date'])\n", "\n", "# Décomposez les données en tendance, saisonnalité et résidus en spécifiant la fréquence\n", "decomposition = seasonal_decompose(data[' CO2'], model='additive', freq=12) # Ici, 'freq=12' indique une fréquence mensuelle\n", "\n", "# Extraire la tendance, la saisonnalité et les résidus\n", "tendance = decomposition.trend\n", "saisonnalite = decomposition.seasonal\n", "residus = decomposition.resid\n", "\n", "\n", "\n", "# Tracer les composantes\n", "plt.figure(figsize=(12, 6))\n", "plt.subplot(411)\n", "plt.plot(data[' Yr'], data[' CO2'], label='Données originales')\n", "plt.legend()\n", "plt.subplot(412)\n", "plt.plot(data[' Yr'], tendance, label='Tendance')\n", "plt.legend()\n", "plt.subplot(413)\n", "plt.plot(data[' Yr'], saisonnalite, label='Saisonnalité')\n", "plt.legend()\n", "plt.subplot(414)\n", "plt.plot(data[' Yr'], residus, label='Résidus')\n", "plt.legend()\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#question3\n", "from sklearn.linear_model import LinearRegression\n", "\n", "# Créer un modèle de régression linéaire\n", "regression = LinearRegression()\n", "\n", "# Ajuster le modèle aux données de tendance\n", "regression.fit(data['Date'].values.reshape(-1, 1), data['CO2'])\n", "\n", "# Obtenir les paramètres du modèle\n", "pente = regression.coef_\n", "intercept = regression.intercept_\n", "\n", "# Extrapoler les valeurs jusqu'en 2025\n", "annee_2025 = 2025\n", "co2_2025 = regression.predict([[annee_2025]])[0]\n", "\n", "# Afficher les résultats\n", "print(f\"Équation de la régression linéaire : CO2 = {pente[0]} * Année + {intercept}\")\n", "print(f\"Concentration de CO2 estimée pour 2025 : {co2_2025} ppm\")\n" ] } ], "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 }