AudreyGuy / Projet-SetO

1 stars 0 forks source link

Analyse et traitement des données - mesure terrain #28

Open SabrinaCote opened 1 year ago

SabrinaCote commented 1 year ago
JerB9 commented 12 months 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.

0thmaneL commented 9 months ago

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)

read csv file

df = pd.read_csv('data.csv')

deleting columns form dataframe

df.drop(['Flag','NumberSatellites','Gain','AcquisitionTime(ms)'], axis=1, inplace=True)

converting 'Second' from float to int

df['Second'] = df['Second'].astype(int)

converting DateTime

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")

convert to string without offset

df['DateTime'] = df['DateTime'].dt.strftime("%Y-%m-%d %H:%M:%S")

deleting columns form dataframe

df.drop(['Month','Day','Year','Hour','Minute','Second'], axis=1, inplace=True)

new dataframe with only S1 values

df_s1= df.loc[df['Sensor'] == 'S1']

keeping night values

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]

deleting duplicates

df_s1_n = df_s1_n.sort_values('DateTime').drop_duplicates('DateTime', keep='last')

MSI

df_s1_n_MSI = df_s1_n.drop(['ColorTemperature(k)','lux','Red','Green','Blue','Clear'], axis=1)

lux

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)

df_s1_n.to_csv(r'C:\Users\labot\Downloads\LAN3_Jerry_2024-02-05.csv', index=False, sep=',')

df_s1_n_MSI.to_csv(r'C:\Users\labot\Downloads\LAN3_Jerry_2024-02-05_MSI.csv', index=False, sep=',')

df_s1_n_lux.to_csv(r'C:\Users\labot\Downloads\LAN3_Jerry_2024-02-05_lux.csv', index=False, sep=',')

0thmaneL commented 8 months ago

Fichier de données csv de la sortie LAN3 du 5 février (Tom et Jerry combinés):

LAN3_Tom_and_Jerry_lux_2024-02-05.csv

0thmaneL commented 8 months ago

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)

read csv file Jerry

df = pd.read_csv('data.csv')

deleting columns form dataframe

df.drop(['NumberSatellites','Gain','AcquisitionTime(ms)'], axis=1, inplace=True)

converting 'Second' from float to int

df['Second'] = df['Second'].astype(int)

converting DateTime

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")

convert to string without offset

df['DateTime'] = df['DateTime'].dt.strftime("%Y-%m-%d %H:%M:%S")

deleting columns form dataframe

df.drop(['Month','Day','Year','Hour','Minute','Second'], axis=1, inplace=True)

new dataframe with only S1 values

df_s1= df.loc[df['Sensor'] == 'S1']

Removing row with ER

df_s1= df_s1[df_s1['Flag'] != 'ER']

Removing row with N\A

df_s1= df_s1[df_s1['ColorTemperature(k)'] != 'NaN']

keeping night values

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]

deleting duplicates

df_s1_n = df_s1_n.sort_values('DateTime').drop_duplicates('DateTime', keep='last')

MSI

df_s1_n_MSI = df_s1_n.drop(['ColorTemperature(k)','lux','Red','Green','Blue','Clear'], axis=1)

lux

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_MSI)

print(df_s1_n_lux)

read csv file Tom

df_1 = pd.read_csv('data.csv')

deleting columns form dataframe

df_1.drop(['NumberSatellites','Gain','AcquisitionTime(ms)'], axis=1, inplace=True)

converting 'Second' from float to int

df_1['Second'] = df_1['Second'].astype(int)

converting DateTime

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")

convert to string without offset

df_1['DateTime'] = df_1['DateTime'].dt.strftime("%Y-%m-%d %H:%M:%S")

deleting columns form dataframe

df_1.drop(['Month','Day','Year','Hour','Minute','Second'], axis=1, inplace=True)

new dataframe with only S1 values

dfs1= df_1.loc[df['Sensor'] == 'S1']

Removing row with ER

dfs1= dfs1[dfs1['Flag'] != 'ER']

Removing row with N\A

dfs1= dfs1[dfs1['ColorTemperature(k)'] != 'NaN']

keeping night values

mask1 = (dfs1['DateTime']>'2024-02-04 19:37:00') & (dfs1['DateTime']<='2024-02-04 23:25:00') df_s1n = dfs1.loc[mask1]

deleting duplicates

df_s1_n = df_s1_n.sort_values('DateTime').drop_duplicates('DateTime', keep='last')

MSI

df_s1_n_MSI = df_s1_n.drop(['ColorTemperature(k)','lux','Red','Green','Blue','Clear'], axis=1)

lux

df_s1_nlux = df_s1n.drop(['ColorTemperature(k)','MSI','Red','Green','Blue','Clear','Flag'], axis=1)

print(df_s1n)

print(df_s1_n_MSI)

print(df_s1_nlux)

Combining Dataframe Tom and Jerry lux

df_Tom_Jerry = pd.concat([df_s1_n_lux, df_s1_nlux])

print(df_Tom_Jerry)

MSI impact 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']

keeping night values

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)

MSI impact Tom

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']

keeping night values

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)

df_Tom_Jerry.to_csv(r'C:\Users\labot\Downloads\LAN3_Tom_and_Jerry_lux_2024-02-05.csv', index=False, sep=',')

df_MSII.to_csv(r'C:\Users\labot\Downloads\LAN3_Tom_and_Jerry_MSI_Impact_2024-02-05.csv', index=False, sep=',')

df_s1_n.to_csv(r'C:\Users\labot\Downloads\LAN3_Jerry_2024-02-05.csv', index=False, sep=',')

df_s1_n_MSI.to_csv(r'C:\Users\labot\Downloads\LAN3_Jerry_2024-02-05_MSI.csv', index=False, sep=',')

df_s1_n_lux.to_csv(r'C:\Users\labot\Downloads\LAN3_Jerry_2024-02-05_lux.csv', index=False, sep=',')

df_s1n.to_csv(r'C:\Users\labot\Downloads\LAN3_Jerry_2024-02-05.csv', index=False, sep=',')

df_s1_n_MSI.to_csv(r'C:\Users\labot\Downloads\LAN3_Jerry_2024-02-05_MSI.csv', index=False, sep=',')

df_s1_nlux.to_csv(r'C:\Users\labot\Downloads\LAN3_Jerry_2024-02-05_lux.csv', index=False, sep=',')

0thmaneL commented 8 months ago

fichiers csv lux et Impact MSI LAN3 tom et jerry de la sortie du 5 février 2024 sont sur le drive du projet.

JerB9 commented 7 months ago

Voici le code en travail de l'analyse des données du lan3 de sirenne code:

Importation des librairies

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

------------ Script pour sélectionner uniquement les données de nuit --------------------------------------------------

Paramètres associés à la localisation des données pour trouver l'heure du lever et coucher du soleil

latitude = 45.40 longitude = -71.88 tz_sherbrooke = pytz.timezone('America/Montreal') sun = Sun(latitude, longitude)

Chemin vers le dossier où se trouvent les données de sirene en format .txt

dossier = "C:\Users\Jejeb\OneDrive\Bureau\SetO\données sirenne\Lan3 petit fichier\"

Faire une liste avec tous les fichiers dans le dossier

file_list = [] for file in os.listdir(dossier): file_list.append(file)

Boucle pour traiter chaque fichier présent dans le dossier

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