Open SabrinaCote opened 1 year ago
Travail effectué par Jérémie, Sabrina, William et Jérôme le 31 octobre: Nous sommes allés faire un essai de prise de mesure sur l'auto de Will, nous avons installé les capteurs en décalant le sonomètre pour ne pas empiéter sur le champs de vision du LAN3. Tout fonctionnait bien jusqu'à ce que Will démare son auto, en démarant nous avons entendu un bruit en provenance du bloc d'alimentation du LAN3 et il a cessé de prendre des donnés. Nous avons essayé de le remettre en marche plusieurs fois, mais nous n'avons pas réussi. Au finale, nous sommes allés faire un tour avec le sonomètre seulement, et tout c'est bien passé de ce côté. En revenant, nous avons compris que le problème avec le LAN3 provenait du fait qu'il était branché lorsque l'auto a démaré, ce qui a créé une surcharge ou quelque chose dans le genre. Il est donc éssentiel de brancher le LAN3 uniquement lorsque l'auto est démarée.
6 février 2024: Développement de codes pour le traitement des données LAN3 pour sirene et pour la voiture.
Code:
import pandas as pd pd.set_option('display.max_rows', 1000) pd.set_option('display.max_columns', 30) pd.set_option('display.width', 1000)
df = pd.read_csv('data.csv')
df.drop(['Flag','NumberSatellites','Gain','AcquisitionTime(ms)'], axis=1, inplace=True)
df['Second'] = df['Second'].astype(int)
df['DateTime'] = pd.to_datetime(df[['Month', 'Day', 'Year','Hour','Minute','Second']]) df['DateTime'] = pd.to_datetime(df['DateTime'], utc=True) df['DateTime'] = df['DateTime'].dt.tz_convert("US/Eastern")
df['DateTime'] = df['DateTime'].dt.strftime("%Y-%m-%d %H:%M:%S")
df.drop(['Month','Day','Year','Hour','Minute','Second'], axis=1, inplace=True)
df_s1= df.loc[df['Sensor'] == 'S1']
mask = (df_s1['DateTime']>'2024-02-05 19:37:00') & (df_s1['DateTime']<='2024-02-05 23:25:00') df_s1_n = df_s1.loc[mask]
df_s1_n = df_s1_n.sort_values('DateTime').drop_duplicates('DateTime', keep='last')
df_s1_n_MSI = df_s1_n.drop(['ColorTemperature(k)','lux','Red','Green','Blue','Clear'], axis=1)
df_s1_n_lux = df_s1_n.drop(['ColorTemperature(k)','MSI','Red','Green','Blue','Clear'], axis=1)
print(df_s1_n) print(df_s1_n_MSI) print(df_s1_n_lux)
Fichier de données csv de la sortie LAN3 du 5 février (Tom et Jerry combinés):
code final pour traitement LAN3 voiture:
import pandas as pd pd.set_option('display.max_rows', 1000) pd.set_option('display.max_columns', 30) pd.set_option('display.width', 1000)
df = pd.read_csv('data.csv')
df.drop(['NumberSatellites','Gain','AcquisitionTime(ms)'], axis=1, inplace=True)
df['Second'] = df['Second'].astype(int)
df['DateTime'] = pd.to_datetime(df[['Month', 'Day', 'Year','Hour','Minute','Second']]) df['DateTime'] = pd.to_datetime(df['DateTime'], utc=True) df['DateTime'] = df['DateTime'].dt.tz_convert("US/Eastern")
df['DateTime'] = df['DateTime'].dt.strftime("%Y-%m-%d %H:%M:%S")
df.drop(['Month','Day','Year','Hour','Minute','Second'], axis=1, inplace=True)
df_s1= df.loc[df['Sensor'] == 'S1']
df_s1= df_s1[df_s1['Flag'] != 'ER']
df_s1= df_s1[df_s1['ColorTemperature(k)'] != 'NaN']
mask = (df_s1['DateTime']>'2024-02-05 19:37:00') & (df_s1['DateTime']<='2024-02-05 23:25:00') df_s1_n = df_s1.loc[mask]
df_s1_n_lux = df_s1_n.drop(['ColorTemperature(k)','MSI','Red','Green','Blue','Clear','Flag'], axis=1)
print(df_s1_n)
print(df_s1_n_lux)
df_1 = pd.read_csv('data.csv')
df_1.drop(['NumberSatellites','Gain','AcquisitionTime(ms)'], axis=1, inplace=True)
df_1['Second'] = df_1['Second'].astype(int)
df_1['DateTime'] = pd.to_datetime(df_1[['Month', 'Day', 'Year','Hour','Minute','Second']]) df_1['DateTime'] = pd.to_datetime(df_1['DateTime'], utc=True) df_1['DateTime'] = df_1['DateTime'].dt.tz_convert("US/Eastern")
df_1['DateTime'] = df_1['DateTime'].dt.strftime("%Y-%m-%d %H:%M:%S")
df_1.drop(['Month','Day','Year','Hour','Minute','Second'], axis=1, inplace=True)
dfs1= df_1.loc[df['Sensor'] == 'S1']
dfs1= dfs1[dfs1['Flag'] != 'ER']
dfs1= dfs1[dfs1['ColorTemperature(k)'] != 'NaN']
mask1 = (dfs1['DateTime']>'2024-02-04 19:37:00') & (dfs1['DateTime']<='2024-02-04 23:25:00') df_s1n = dfs1.loc[mask1]
df_s1_nlux = df_s1n.drop(['ColorTemperature(k)','MSI','Red','Green','Blue','Clear','Flag'], axis=1)
print(df_s1n)
print(df_s1_nlux)
df_Tom_Jerry = pd.concat([df_s1_n_lux, df_s1_nlux])
print(df_Tom_Jerry)
df_s3= df.loc[df['Sensor'] == 'S3'] df_s3.reset_index(drop=True, inplace=True) df_s3.drop(['Latitude','Longitude','Altitude','Red','Green','Blue','Clear','DateTime'], axis=1, inplace=True) nn_s3={'Sensor':'Sensor3', 'MSI':'MSI3','lux':'lux3','ColorTemperature(k)':'ColorTemperature(k)3','Flag':'Flag3'} df_s3.rename(columns=nn_s3, inplace=True)
df_s5= df.loc[df['Sensor'] == 'S5'] df_s5.reset_index(drop=True, inplace=True) df_s5.drop(['Red','Green','Blue','Clear'], axis=1, inplace=True) nn_s5={'Sensor':'Sensor5', 'MSI':'MSI5','lux':'lux5','ColorTemperature(k)':'ColorTemperature(k)5','Flag':'Flag5'} df_s5.rename(columns=nn_s5, inplace=True)
df_c = pd.concat([df_s3, df_s5], axis=1)
df_c['MSI Impact'] = ((df_c['MSI3'] df_c['lux3']) + (df_c['MSI5'] df_c['lux5'])) / 2
df_c = df_c.dropna()
df_c= df_c[df_c['Flag3'] != 'ER'] df_c= df_c[df_c['Flag5'] != 'ER']
mask2 = (df_c['DateTime']>'2024-02-05 19:37:00') & (df_c['DateTime']<='2024-02-05 23:25:00') df_c = df_c.loc[mask2]
df_MSIIj = df_c.drop(['Sensor3','Sensor5','ColorTemperature(k)3','ColorTemperature(k)5','MSI3','MSI5','lux3','lux5','Flag3','Flag5'], axis=1)
df_s3t= df_1.loc[df_1['Sensor'] == 'S3'] df_s3t.reset_index(drop=True, inplace=True) df_s3t.drop(['Latitude','Longitude','Altitude','Red','Green','Blue','Clear','DateTime'], axis=1, inplace=True) nn_s3t={'Sensor':'Sensor3', 'MSI':'MSI3','lux':'lux3','ColorTemperature(k)':'ColorTemperature(k)3','Flag':'Flag3'} df_s3t.rename(columns=nn_s3t, inplace=True)
df_s5t= df_1.loc[df_1['Sensor'] == 'S5'] df_s5t.reset_index(drop=True, inplace=True) df_s5t.drop(['Red','Green','Blue','Clear'], axis=1, inplace=True) nn_s5t={'Sensor':'Sensor5', 'MSI':'MSI5','lux':'lux5','ColorTemperature(k)':'ColorTemperature(k)5','Flag':'Flag5'} df_s5t.rename(columns=nn_s5t, inplace=True)
df_ct = pd.concat([df_s3t, df_s5t], axis=1)
df_ct['MSI Impact'] = ((df_ct['MSI3'] df_ct['lux3']) + (df_ct['MSI5'] df_ct['lux5'])) / 2
df_ct = df_ct.dropna()
df_ct= df_ct[df_ct['Flag3'] != 'ER'] df_ct= df_ct[df_ct['Flag5'] != 'ER']
mask3 = (df_ct['DateTime']>'2024-02-04 19:37:00') & (df_ct['DateTime']<='2024-02-04 23:25:00') df_ct = df_ct.loc[mask3]
df_MSIIt = df_ct.drop(['Sensor3','Sensor5','ColorTemperature(k)3','ColorTemperature(k)5','MSI3','MSI5','lux3','lux5','Flag3','Flag5'], axis=1)
df_MSII = pd.concat([df_MSIIt, df_MSIIj], axis=0)
print(df_MSII)
fichiers csv lux et Impact MSI LAN3 tom et jerry de la sortie du 5 février 2024 sont sur le drive du projet.
Voici le code en travail de l'analyse des données du lan3 de sirenne code:
import pandas as pd pd.set_option('display.max_rows', 1000) pd.set_option('display.max_columns', 30) pd.set_option('display.width', 1000)
from datetime import date from suntime import Sun import pytz import os
latitude = 45.40 longitude = -71.88 tz_sherbrooke = pytz.timezone('America/Montreal') sun = Sun(latitude, longitude)
dossier = "C:\Users\Jejeb\OneDrive\Bureau\SetO\données sirenne\Lan3 petit fichier\"
file_list = [] for file in os.listdir(dossier): file_list.append(file)
for file in file_list:
# Ouverture du fichier csv sous la forme d'un dataframe et stockage dans la variable 'df'
df = pd.read_csv(dossier + file, delimiter=',', low_memory=False)
print('Processing : ' + file)
# deleting columns form dataframe
df.drop(['NumberSatellites', 'Gain', 'AcquisitionTime(ms)','Latitude', 'Longitude', 'Altitude',], axis=1, inplace=True)
# modifier le format de l'heure en date time
df['DateTime'] = pd.to_datetime(df[['Year', 'Month', 'Day', 'Hour', 'Minute', 'Second']])
df['DateTime'] = pd.to_datetime(df['DateTime'], utc=True)
df['DateTime'] = df['DateTime'].dt.tz_convert("US/Eastern")
#convertir sans le offsrtring
df['DateTime'] = df['DateTime'].dt.strftime("%Y-%m-%d %H:%M:%S")
# enlever les colones double de date
df.drop(['Year','Month', 'Day', 'Hour', 'Minute', 'Second'], axis= 1, inplace= True)
print(df)
#données de MSI
df_s3 = df.loc[df['Sensor'] == 'S3']
df_s3.reset_index(drop=True, inplace=True)
df_s3.drop(['Red', 'Green', 'Blue', 'Clear', 'DateTime'], axis=1, inplace=True)
nn_s3 = {'Sensor': 'Sensor3', 'MSI': 'MSI3', 'lux': 'lux3', 'ColorTemperature(k)': 'ColorTemperature(k)3',
'Flag': 'Flag3'}
df_s3.rename(columns=nn_s3, inplace=True)
df_s5 = df.loc[df['Sensor'] == 'S5']
df_s5.reset_index(drop=True, inplace=True)
df_s5.drop(['Red', 'Green', 'Blue', 'Clear'], axis=1, inplace=True)
nn_s5 = {'Sensor': 'Sensor5', 'MSI': 'MSI5', 'lux': 'lux5', 'ColorTemperature(k)': 'ColorTemperature(k)5',
'Flag': 'Flag5'}
df_s5.rename(columns=nn_s5, inplace=True)
df_m = pd.concat([df_s3, df_s5], axis=1)
df_m['MSIImpact'] = ((df_m['MSI3'] * df_m['lux3']) + (df_m['MSI5'] * df_m['lux5'])) / 2
df_m.drop(['MSI3', 'MSI5', 'lux3', 'lux5'], axis=1, inplace=True)
# Mesure du lux avec capteur S1
df_l = df.loc[df['Sensor'] == 'S1']
df_l.reset_index(drop=True, inplace=True)
df_l.drop(['Red', 'Green', 'Blue', 'Clear', 'MSI', 'DateTime'], axis=1, inplace=True)
nn_l = {'Sensor': 'Sensor1', 'ColorTemperature(k)': 'ColorTemperature(k)1',
'Flag': 'Flag1'}
df_l.rename(columns=nn_l, inplace=True)
#Fusionner les deux dataframe
df_c = pd.concat([df_m, df_l], axis=1)
#Enlever les lignes érronées
df_c = df_c.dropna()
df_c = df_c[df_c['Flag1'] != 'ER']
df_c = df_c[df_c['Flag3'] != 'ER']
df_c = df_c[df_c['Flag5'] != 'ER']
df_c = df_c[df_c['ColorTemperature(k)1'] != 'NaN']
df_c = df_c[df_c['ColorTemperature(k)3'] != 'NaN']
df_c = df_c[df_c['ColorTemperature(k)5'] != 'NaN']
print(df_c)
#Set dateTime index
df_c = df_c.set_index(pd.DatetimeIndex(df_c['DateTime']))
print(df_c)
# Sélectionner une donné par 5 min
MSI_mean=df_c.MSIImpact.resample('5min').mean()
print(MSI_mean)
#trouver une façon de faire la moyenne pour le MSI et pour le lux (au pire concatenner les deux après)
#définir le sunset et le sunrise
# Création d'un masque pour n'avoir que les heures après coucher du soleil et avant le lever du soleil
mask = (df['Time'] > ss_time) | (df['Time'] <= sr_time)
df = df.loc[mask]
print(df)
# Utiliser la fonction df.to_csv() pour enregistrer les dfs produits
# Fusionner les données du LAN3 et du sonomètre en fonction de l'heure
Exploiter et analyser les données pour arriver à une carte son et lumière avec LAN3 et sonomètre
Exploiter et analyser pour arriver à une carte son et lumière avec téléphone