#------------DESCRIPTION------------# # Ce programme python3 permet de charger et tracer les donnees issues d'un detecteur de CO2 Aranet4 # Il effectue un ajustement # exponentiel de donnes temporelles # projetco2.fr 2021/05/04 # supprimer la fin du nom du programme, après "FitExp_Aranet_v2.py" #------------PACKAGES------------# import pandas as pd import matplotlib.pyplot as plt import numpy as np import scipy as sp from lmfit import Model from datetime import datetime #------------PARAMETRES------------# # temps entre lesquels on effectue l'ajustement tdebut='2021-05-02 01:15:00' # Minimum '2021-05-02 01:15:00' tfin='2021-05-02 6:00:00' # Maximum '2021-05-02 9:00:00' #---------FIN DES PARAMETRES---------# #------------------------------------# # Fonction d'ajustement (fit) def croissance(t, A, tau, y0): return (A*np.exp(-1*t/tau)+y0) gmodel = Model(croissance) # Lecture des donnees df = pd.read_csv('Aranet4_donnees.csv', skiprows=0) df['Temps']=pd.to_datetime(df['Time'], format='%d/%m/%Y %H:%M:%S') # Changement de nom, juste pour eviter le 2 en petite lettre df['CO2(ppm)']=df['CO₂(ppm)'] # Selection d'un sous-intervalle de temps dfe=df[df['Temps'].between(tdebut,tfin)] #--- Ajustement # Calcul du temps ecoule depuis le debut, et transformation en nombre reel (float) dfe['ElapsedTime'] = (dfe['Temps'] - dfe['Temps'].iloc[0]) dfe['Seconds'] =dfe['ElapsedTime'].dt.total_seconds() # Ajustement result = gmodel.fit(dfe['CO2(ppm)'], t=dfe['Seconds'], A=-1000, tau=1000, y0=2000) # Trace de l'ajustement result.plot_fit() plt.savefig('Aranet_CO2_ajustement.pdf') plt.show() # Sortie des resultats de l'ajustement print(result.fit_report()) exit()