Fiche méthode - Python

Python dans les programmes de physique-chimie

L'enseignement de physique-chimie a recours au langage de programmation essentiellement pour représenter des données de mesurage et pour les analyser.

L'utilisation des microcontrôleurs, commandés par un programme en Python, permet également de relever des mesures.

Gestion des fichiers

MéthodeCharger un fichier de données

Cette opération est courante en physique-chimie. Les données sont stockées dans un fichier texte (ou csv) habituellement exploitées par un tableur. Ici, le langage de programmation et la librairie numpy nous aide à charger chacune des grandeurs physiques du fichier (nom et valeurs) dans des variables listes.

Syntaxe :

1
import numpy as np
2
np.loadtxt(fname, dtype=<class 'float'>, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0, encoding='bytes')

ExempleUn fichier texte avec deux colonnes

Considérons un fichier texte contenant une ligne d'entête, 50 mesures de deux grandeurs physiques (i et u) séparées par une virgule.

1
I (en A), u (en V)
2
0.0024486803519061587,2.4682306940371457
3
0.0024486803519061587,2.463343108504399
4
...,...

On veut charger les données dans deux variables de type liste préalablement déclarées comme telle.

1
import numpy as np
2
i=[]
3
u=[]
4
i, u = np.loadtxt('mesures/fichier_R1000_n50.txt', delimiter=',', skiprows=1, unpack='true')

On charge le fichier ‘fichier_R1000_n50.txt' du sous-dossier ‘mesures/' avec les options suivantes :

  • Sur une même ligne, les données sont séparées par la virgule : delimiter=','

  • On ne charge pas la ligne d'entête : skiprows=1

  • On transpose les colonnes en lignes : unpack='true'

Ainsi les premiers éléments de la liste i seront :

i = [0.0024486803519061587, 0.0024486803519061587, ...]

RemarquePour extraire des colonnes spécifiques

On peut aussi charger l'ensemble comme une matrice, puis extraire telle ou telle colonne, avec la syntaxe suivante :

1
data = np.loadtxt(fname)
2
i = data[:,0] #l'indice des colonnes commence à zéro

Ou utiliser le paramètre usecols :

1
i = np.loadtxt(fname, usecols=0)

Écrire dans un fichier

MéthodeOpen, write, close !

La méthode consiste à ouvrir un fichier existant ou en le créant, écrire dedans ligne par ligne, puis penser à le fermer.

1
os.makedirs("mesures",exist_ok=True) #On vérifie si le dossier existe, sinon, on le crée
2
fichier = "mesures/" + fname + ".txt"
3
mes_mesures = open(fichier, "w")	#création ou écrasement d'un fichier ouvert en écriture
4
mes_mesures.write("i (A),u (V)\n") #entête du fichier de mesure
5
# Une boucle pour écrire ce que l'on veut
6
while j < n:
7
  mes_mesures.write(str(i[j])+","+str(u[j])+"\n") #Conversion en chaine, séparateur et retour à la ligne
8
  j += 1
9
mes_mesures.close()

Représentation graphique

matplotlib

La bibliothèque matplotlib gère la création de toute sorte de graphiques. On importe le module pyplot.

1
import matplotlib.pyplot as plt

MéthodeL'essentiel

Ce qu'on veut ajouter

La commande correspondante après plt

un nuage de points

.scatter (i, u, marker = ‘+')

un titre

.title (“Caractéristique”)

un titre à l'axe des abscisses, des ordonnées

.xlabel (“i en A”), .ylabel(“u en V”)

les valeurs min et max pour les deux axes

.axis (i_min, i_max, u_min, u_max)

une droite d'ajustement

.plot (i, a*i + b, c='r')

une légende

(t est l'abscisse d'un point du modèle où on veut pointer la légende)

.annotate(“Ma légende”, xy=(t, a*t/1000+b), xycoords='data',xytext=(-150, +50), textcoords='offset points', fontsize=14, arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))

des barres d'erreur

(yErrorValues doit contenir la hauteur des barres)

.errorbar(i, u, yerr = yErrorValues, fmt = 'none', capsize = 2, elinewidth = 1, ecolor = 'green', zorder = 1)