Question n°1) À l'aide de la commande import, importer les modules time et numpy.
Pour le
premier, on utilisera le nom du module comme espace de noms, et l'on utilisera l'alias np pour le
second module.
Nous avons utilisé la commande « import » qui permet d’implanter des bibliothèques que l’on veut
pouvoir utilisé, par exemple celle de numpy qui est très populaire (open source) pour effectuer des
calculs mathématiques et scientifiques. En effet le module numeric python numpy est un ensemble
d’outil pour la manipulation de données numériques et les calculs efficaces. Par la suite nous avons
importer la bibliothèque ou la fonction time afin de manipuler des horodatages et des dates
Il permet des fonctionnalités telles que l'obtention de l'heure actuelle …On utilise np comme
convention.
Commande :
import numpy as np
import time
Question n°2) Déclarer deux variables, nb_rows et nb_cols, pour représenter,
respectivement, le nombre de lignes et le nombre de colonnes des vecteurs. On
utilisera des vecteurs de 100 lignes et 5 colonnes, donc affecter ces valeurs
aux deux variables précédemment déclarées. Ensuite, instancier trois vecteurs
data_empty,data_zeros et data_ones, tous trois de nb_rows lignes et nb_cols
colonnes, en utilisant, respectivement, les fonctions empty, zeros et ones de
NumPy. Quelle est la différence entre ces trois fonctions ?
Lors des déclarations des variables nous n’avons pas besoins de déclarer le type
de variable mais également de mettre fin à une instruction part le biais d’un
point virgule (voir ci-dessous commande). La fonction np.empty renvoie des
valeurs aléatoire comprise entre 0 et 1, la fonction np.zeros nous renvoi que
des valeurs de 0 et pour finir la fonction np.ones nous renvoie que des valeurs
à 1.
Commande :
nb_rows=100
nb_cols=5
data_empty=np.empty((np_rows,nb_cols))
data_zeros=np.zeros((np_rows,nb_cols))
data_ones=np.ones((np_rows,nb_cols))
3. Détruire les vecteurs data_empty, data_zeros et data_ones en utilisant la
commande del, puis instancier un nouveau vecteur data, toujours de nb_rows
lignes et nb_cols colonnes, en utilisant la fonction random.random de NumPy pour
le remplir de valeurs aléatoires comprises dans [0, 1].
La fonction del permet de détruire un élément d’une liste grâce à l’indice de
cette élément dans notre cas c’est une variable dans l’explorateur de variable
que l’on détruit (voir commande). Par la suite nous avons remplit une matrice en
créant une variable comprenant des nombres aléatoires avec la fonction
random.random:
Commande:
del data_empty
del data_zeros
del data_ones
data= np.random.random((nb_rows , nb_cols))
4. Déclarer une liste vide labels, puis la remplir avec les noms des colonnes à l'aide d'une boucle for.
Pour cela, on itérera sur le nombre de colonne du vecteur data et, pour chaque itération, on ajoutera
à la liste un chaîne de caractères simples (e.g. Capteur plus le numéro de l'itération courante
(penser à convertir l'indice entier en caractère à l'aide la fonction built-in str)) en utilisant la
méthode append.
Commande :
labels = []
for i in range(nb_cols) :
labels.append ('Capteur_'+str(i))
Question 5. Déclarer un nouveau vecteur stats de 4 lignes et d'autant de colonnes que data (on
pourra utiliser
la variable nb_cols ou récupérer cette valeur en accédant aux dimensions du vecteur par l'attribut
shape). Ensuite, en se servant des méthodes de la classe ndarray, remplir le vecteur stats avec les
minimum, maximum, moyenne et écart-type des colonnes de data (une statistique par ligne).
Commande :
stats_labs=['Minimum', 'Maximum', 'Moyenne', 'EcartType']
stats = np.empty((4,nb_cols),float)
stats[0]=data.min(0)
stats[1]=data.max(0)
stats[2]=data.mean(0)
stats[3]=data.std(0)
Question 6 :
commande :
index = []
for i in range (len(data)):
index.append(i)
index=[i for i in range(len(data))]
index= np.arange(len(data),dtype=int)
Question 7 :
En utilisant la fonction arange ou linspace de NumPy, instancier un vecteur tstp de N entiers
contenant l'horodatage courant en première case, l'horodatage courant plus une heure en deuxième
composante, l'horodatage plus deux heures pour troisième élément, etc. À quoi faut-il faire
attention lorsque l'on fait appel plusieurs fois à la fonction time ? Quelle précaution faut-il
prendre ?
Explication :
La fonction np.arange est une fonction qui génère un tableau à une dimension formé d’entier ou de
nombre flottant commencent avec un debut, et finissant avec une fin (valeur exclue), avec un pas. Si
vous n’indiquez pas la valeur de pas, Python considère implicitement que pas = 1.
Commande :
tstp = np.arange(time.time(), time.time() +10*3600, step=3600)
Question 8 :
Commande :
Le diez permet de mettre en commentaire du texte.
# Horodatages entier vers dates en format ctime
dates1=[time.ctime(i) for i in tstp]
# Horodatages entier vers dates en format SQL
dates2=[time.strftime('%Y-%m-%d %H-%M-%S',time.localtime(i))
for i in tstp]
#Q9
with open ('tp5.csv','w') as file :
writer= csv.writer ( file, delimiter=';')
#Q10 Ecritures des en-tetes
writer.writerow(['Index', 'Horodatage','Date', *labels ])