© Your Copyright
Cette page de l’ENIBOOK participe à la zone généraliste de deuxième année
L’objectif est d’aprendre à importer des séries temporelles pour les afficher sur une courbe.
Lors de l’objectif 4 du cours IPI, nous avons appris à programmer en utilisant les types abstraits de données. Cette méthode de programmation s’applique au développement du jeu de IPI mais peut évidemment s’appliquer à d’autre projet en programmation. Nous profitons donc de la zone généraliste pour appliquer à nouveau cette méthode.
Ainsi, vous pouvez vous fabriquer un outil réutilisable qui encapsule tout ce qu’il faut pour lire et afficher des données temporelles. Nous vous proposons une trame pour réaliser un code, mais bien évidamment, n’hésitez pas à personnaliser votre outil.
Commençons par définir un type abstait TimeSeries
.
Type : TimeSeries = struct
data : liste de liste de réels
labels : liste de chaines de caractères
create(filename)
: un constructeur qui prend en paramètre un nom de fichier au format CSVplot(ts)
: une fonction qui dessinera sur une courbe les données récupérés dans le fichier.Commençons par coder le module TimeSeries.py
avec son constructeur, ses mutateurs/accesseurs et sa zone de test.
Même si nous ne savons pas encore comment importer le fichier CSV et comment afficher une courbe, nous pouvons préparer débuter la programmation.
Documentez-vous sur le module csv
Commençons par coder un module TimeSeries.py
avec son constructeur, ses mutateurs/accesseurs et sa zone de test.
Même si nous ne savons pas encore comment importer le fichier CSV et comment afficher une courbe, nous pouvons préparer débuter la programmation.
Coder également un programme principal : main.py
qui importera le module TimeSeries.py
.
Voici ce que pourrait être un programme principal utilisant le module TimeSeries
.
import TimeSeries
import sys
def main():
#retreive first parameter
if len(sys.argv)>=2:
filename = str(sys.argv[1])
else :
print("Usage : $python main.py file.csv [timestamp_col_number]")
quit()
#retreive second parameter
if len(sys.argv)==3:
timestamp_col_number = int(sys.argv[2])
else :
timestamp_col_number = 0
#build time series
ts=TimeSeries.create_from_csv(csv_filename=filename,
time_stamp_column_number=timestamp_col_number,
xlabel='temps en secondes',
ylabel='distance en milimètres')
#swap curves
TimeSeries.swap_column(ts,1,2)
#show and/or save curves
TimeSeries.plot(ts,show=True,save=True)
if __name__=="__main__":
main()
Voici des données capteurs issues d’une mesure d’un système méca : HCSR04_data4_ressort_2022_03_10.csv
Le fichier est au format CSV. Le format CSV (Comma-separated values) est un format de fichier texte représentant des données tabulaires. Il s’agit de représenter des valeurs de tableau en les séparant par des virgules (ou d’autres séparateurs). Bien que le format n’ait jamais été vraiment formalisé, il est très utilisé.
coder l’import de CSV
https://docs.python.org/fr/3/library/csv.html
Essayer et comprendre l’exemple de code de la fonction reader
Importer les données contenues dans ce csv HCSR04_data4_ressort_2022_03_10.csv
Intégrer le code dans le constructeur de TimeSeries.py
Il existe plusieur bibliothèques python pour tracer des courbes.
Une recherche sur internet fait assez rapidement aparaître matplotlib
comme un outil très répandu.
Par ailleurs, dans la suite de votre parcourt ENIB, certaines matière s’attendent à vous voir utiliser matplotlib
.
Nous choisissons donc cet outil pour tracer nos courbes.
Le site https://matplotlib.org/ fournit tout ce qu’il faut pour se documenter.
coder l’affichage des courbes
En vous basant sur les exemples :
https://matplotlib.org/stable/plot_types/basic/plot.htm
et
tracer une courbe et intégrer les code dans la fonction plot()``de ``TimeSeries
.
Attention, il vous faudra peut-être installer python sur votre ordinateur portable.
- Nommage des fichiers : Les noms des fichiers CSV doivent indiquer la date à laquelle les mesures ont été faites, ce qu’on a mesuré et préciser si des données ont été artificiellement ajoutées (par exemple par interpolation).
- Unités : chaque colonne doit commencer par un label qui indique ce que contient la colonne et surtout quelle est l’unité de la données.
- Légendes : Lorsque vous utilisez des figures dans vos rapports, il faut nécessairement que les axes comportent une légende qui indique l’unité des données. Si il y a plusieurs courbes, il faut pouvoir les distinguer, là aussi au moyen d’une légende.