Blog ENI : Toute la veille numérique !
💥 Un livre PAPIER acheté
= La version EN LIGNE offerte pendant 1 an !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Python
  3. Manipulation des données
Extrait - Python Libérez le potentiel de votre Raspberry Pi
Extraits du livre
Python Libérez le potentiel de votre Raspberry Pi
2 avis
Revenir à la page d'achat du livre

Manipulation des données

Lire et écrire dans des fichiers

Écrire dans un fichier peut être utile pour plusieurs raisons. Par exemple, pour y placer les résultats d’une tâche particulière : un score, des données issues d’un calcul… L’écriture dans un fichier est très utile lorsque l’on traite une grande quantité de données à déboguer. Une fois les données exportées dans un fichier, il est possible d’en faire l’analyse a posteriori. De cette manière, on peut affiner les conditions de réalisation d’un bogue et finalement créer un test qui permet de reproduire lesdites conditions.

Mais avant d’effectuer ces manipulations, il est nécessaire d’ouvrir un fichier.

1. Ouvrir et fermer un fichier

Ouvrir un fichier ou toute manipulation de fichier en langage Python est assez aisé. Il n’est pas nécessaire d’importer un quelconque package ou module pour réaliser cette tâche, il suffit d’écrire l’instruction suivante :


<mon_fichier> = open(<nom_fichier_a_ouvrir>,<mode>)
 

La méthode open() retourne un objet (<mon_fichier>) pour manipuler le fichier nommé <nom_fichier_a_ouvrir> selon le mode de fonctionnement précisé à l’aide de <mode>.

<nom_fichier_a_ouvrir> est une chaîne de caractères qui comporte l’adresse du fichier sur le disque.

Les modes précisés par <mode> peuvent être :

  • ’w’ ouverture en mode écriture

  • ’r’ ouverture en mode lecture

  • ’a’ ajout des données en fin de fichier quand le fichier est ouvert en mode écriture

  • ’b’ pour préciser que le fichier manipulé est un fichier binaire

Il existe d’autres modes, mais les modes précédemment cités sont les plus usités. Notez que les modes sont cumulables. Par exemple, le mode wab signifie que le fichier est ouvert en mode écriture, que les données sont placées en fin de fichier et que le fichier manipulé est un fichier binaire.

La tâche complémentaire à l’ouverture est la fermeture. La fermeture se réalise grâce à l’appel de la méthode close() de l’objet...

Utiliser des CSV

Outre le format texte et le format binaire, qui permettent d’enregistrer et plus généralement de manipuler des données, un format s’est imposé pour stocker des données : le CSV.

Le formalisme du CSV est très simple, ce qui permet à un développeur de créer un fichier à partir de quasiment n’importe quel langage, sans librairie particulière.

Le CSV est surtout intéressant pour stocker plusieurs échantillons d’un phénomène (ces phénomènes peuvent être par exemple physique : plusieurs mesures de températures ou des données par exemple age...). C’est typiquement le genre d’informations qui sont stockés dans un tableur. Le format CSV est d’ailleurs facilement importable et exportable dans un tableur, tel LibreOffice Calc disponible sur un système Raspbian.

Un CSV contient donc des données d’un tableau en deux dimensions représentées sous forme de lignes.

Prenons les données concernant les passagers du Titanic, disponibles sur un depôt GitHub à l’adresse suivante : https://github.com/mwaskom/seaborn-data/blob/master/titanic.csv

La première ligne du fichier contient le nom des champs décrivant les données. Ces éléments sont séparés par des virgules :


survived,pclass,sex,âge,sibsp,parch,fare,embarked,class...

Utiliser Pandas

Le package CSV permet de manipuler rapidement des données CSV, mais il n’est pas des plus ergonomiques, de simples manipulations sont très vite chronophages et sources de bogues. Il existe une alternative à la librairie CSV : Pandas.

Pandas est une librairie sous licence BSD issue d’un travail collaboratif d’une communauté de contributeurs d’horizons divers et soutenue par des organismes publics, mais également des entreprises privées.

La première chose à faire est d’installer Pandas à l’aide du gestionnaire pip :


pip install pandas
 

Pandas dépend d’une autre librairie qui devrait être installée directement lors de l’installation de Pandas. En cas de problème lors de l’installation, vérifiez que les outils suivants sont installés :

  • setuptools

  • NumPy

  • python-dateutil

  • pytz

Pandas permet l’accès à différents types de données, dont les fichiers CSV et les fichiers MS Excel. 

Pour cet ouvrage, la manipulation est limitée aux fichiers CSV. Cependant, la manipulation d’autres fichiers comme les fichiers MS Excel est strictement identique à l’ouverture des fichiers près. Avant d’effectuer l’ouverture, il faut importer Pandas :


import pandas as pd
 

L’ouverture d’un fichier à l’aide de Pandas s’effectue de la manière suivante :


df = pd.read_csv("./data/titanic.csv")
 

Le plus dur du travail est fait, car l’accès aux données est extrêmement simple.

Par exemple, pour récupérer toutes...

Stocker des données dans une base MySQL

La gestion des données à partir de fichiers est intéressante, mais trouve ses limites quand la quantité de données est importante. C’est dans ces conditions que l’usage d’une base de données prend tout son intérêt. Une base de données comme MySQL permet un accès optimisé aux données tant en lecture qu’en écriture. De plus, une base de données permet de partager les données facilement avec d’autres applications, dont des services web.

À titre d’illustration, le Raspberry Pi peut être utilisé pour réaliser l’acquisition de données météo et les transférer sur une base de données. Enfin, un service web peut permettre de visualiser les données stockées dans la base de données.

Notez que la base de données comme le service web peuvent être stockés sur le Raspberry Pi, sur une autre machine ou un serveur web chez un hébergeur spécialisé.

Afin de pouvoir réaliser les tests qui vont illustrer cette section, il est nécessaire d’installer un serveur MySQL. Pour cela, il faut exécuter l’instruction suivante dans un terminal :


sudo aptitude install mysql-server php-mysql
 

Pour vérifier que l’installation s’est correctement passée, connectons-nous au serveur :


sudo mysql -user=root
 

Il est possible de créer un autre compte utilisateur. Il vous faudra pour cela utiliser le compte root car cette opération requiert des droits particuliers.

Dans un premier temps, créons une base de données qui permettra d’illustrer la manipulation des données :


CREATE DATABASE python_Rpi;
 

Après l’exécution de cette instruction, nous obtenons :


Query OK, 1 row affected (0.13 sec)
 

Pour vérifier que la base a bien été créée, listons toutes les bases disponibles avec la commande suivante :


show databases;
 

Le résultat...

Visualiser des données avec matplotlib

Cette section aborde l’utilisation de matplotlib. Cette librairie permet la visualisation de données sous différentes représentations graphiques.

L’avantage de cette librairie est qu’elle est très simple d’utilisation et permet en quelques lignes de tracer des courbes par exemple. Il n’est donc pas nécessaire de passer par la phase (éventuellement longue et fastidieuse) de conception et de développement d’interfaces graphiques, pour des besoins de représentation qui peuvent être ponctuels par ailleurs.

Avant toute chose, il est nécessaire d’installer le module matplotlib. L’équipe qui maintient la librairie conseille de passer par le gestionnaire de paquets :


sudo apt-get install python3-matplotlib
 

Attention, l’installation de matplotlib est très longue (jusqu’à 4 heures suivant les modules déjà présents sur le Raspberry) et nécessite un espace important (plusieurs gigaoctets).

Pour utiliser matplotlib, il est nécessaire de l’importer :


import matplotlib.pyplot as plt
 

Comme pour Pandas, l’importation est suivie de la création d’une instance de classe pyplot nommé plt, qui va nous permettre de manipuler des courbes.

À titre d’illustration, traçons la courbe des âges contenus dans titanic.csv. Pour importer les données, le module Pandas est utilisé :


import matplotlib.pyplot as plt 
import pandas as pd 
 
 
if __name__ == '__main__': 
    df = pd.read_csv("../data/titanic.csv") 
    l_age = df['age'] 
 
    plt.plot(l_age) ...

Conclusion

Ce chapitre s’est penché sur la manipulation des données. La manipulation de fichiers génériques qu’ils soient de type texte ou binaire a été présentée. Une section a été dédiée à la manipulation de fichiers CSV, tant avec la librairie standard qu’avec le module Pandas.

Ensuite, un module MySQL, pymysql a été présenté dans le but de manipuler des quantités de données importantes en adressant une base MySQL.

Enfin, la librairie matplotlib a été introduite. Nous avons décrit les éléments permettant de représenter des données rapidement et simplement sans passer par la programmation d’interfaces graphiques dédiées.