Importer des mesures expérimentales dans un programme

Utilisation de la fonction loadtxt de la bilbiothèque numpy

Objectif

Il s'agit d'importer des données issues de mesures expérimentales dans des listes. Il peut par exemple s'agir de pointages de positions au cours du temps ou d'une acquisition d'une grandeur physique en fonction du temps.

MéthodePré-requis - Préparation du fichier de données

Les données à traiter doivent être dans un fichier texte de préférence au format csv.

Dans un tel fichier, les données sont organisées en colonnes. Le séparateur de champs est un caractère réservé : ';', ',' ou tabulation.

Il contient en général une ou plusieurs lignes d'en-tête.

Il se présente comme ci-dessous.

f (Hz);Useuil (V)

473933649289100.;1.744

453857791225416.;1.7

525394045534151.;1.922

655021834061135.;2.815

...

Pour être importé et exploité dans un programme Python, les données doivent utiliser le '.' comme séparateur décimal et non la virgule.

Le cas échéant, il faut remplacer toutes les virgules du fichier par des points en utilisant les fonctions Rechercher/Remplacer d'un éditeur de texte.

Remarque : les éditeurs Spyder et EduPython permettent aussi d'ouvrir ces fichiers csv et d'effectuer cette préparation.

MéthodeImportation à l'aide de loadtxt

La fonction loadtxt permet d'importer dans des tableaux, les valeurs contenues dans un fichier txt ou .csv.

Exemple de syntaxe à utiliser dans l’éditeur Python :

1
f, Useuil=np.loadtxt("Chemin_Fichier\Mesures_csv_Python.csv", skiprows=1, delimiter=";", unpack=True, usecols=(0,1))

Ce code importe dans 2 listes nommées f et Useuil, les valeurs des colonnes n°0 et n°1 (usecols=(0,1)) du fichier Mesures_csv_Python.csv en sautant la première ligne (une seule ligne d'ent-tête) (skiprows=1).

Remarques :

  • attention, dans Python, la 1ère colonne porte le numéro 0 !!!

  • selon le fichier de valeurs à importer :

    • choisir des noms de variables explicites, exemple theta, bêta, au lieu de a ou b...

    • choisir le nombre de lignes à sauter (skiprows). Ce n'est pas toujours 1 comme ci-dessus.

    • spécification du séparateur de champs (delimiter) dans le fichier csv : ici le ';'.

    • choisir le nombre et le numéro des colonnes à sélectionner (usecols). Il n'y a pas toujours uniquement 2 colonnes à importer. Ce ne sont pas non plus toujours les colonnes 0 et 1 à importer.  En revanche, il est impossible d'importer qu'une seule colonne avec l'argument usecols, il faut nécessairement importer au minimum 2 colonnes (quitte à ne pas utiliser une des deux listes importées...).

  • pour vérifier si l'import a bien fonctionné, il est possible de taper le nom des listes importées dans la console d’exécution.

Pour tester, vous pouvez télécharger le fichier de données disponible ci-dessous :

Complément : ouvrir le fichier de manière interactive

MéthodeUtilisation de Tinkercad

Plutôt que d'entrer le chemin et le nom du fichier dans le programme Python, il est possible d'ouvrir le fichier de manière interactive, comme dans n'importe quel programme.

Les lignes de commandes permettent d'ouvrir le fichier en parcourant le disque dur.

1
from tkinter.filedialog import askopenfilename  # Importation de la fonction d'ouverture du fichier
2
3
# ouvre une fenêtre pour charger le fichier csv issu des pointages NE PAS MODIFIER
4
nom_fichier = askopenfilename(filetypes =(("Fichier CSV", "*.csv"),("Fichier Texte","*.txt"),("Tous les fichiers","*.*")),title = "Choisir un fichier")
5
# nom_fichier contient le chemin et le nom du fichier à traiter.