Exercice 82
Les données d'un groupe d'étudiants sont récupérés sur un fichier csv:
data_students.csv:
1 2 3 4 5 6 7 8 9 |
Name; Email; Phone; Section Adam; adam@gmail.com; 333125678; Math Nathalie; nathalie@gmail.com; 212668934; Info Rachid; rachid@gmail.com; 3331122345; Histoire Geo Farid; farid@gmail.com; 2123455677; SVT Gloria; gloria@gmail.com; 3335321224; Math Alberto; alberto@gmail.com; 33345987712; Physique Mjid; majid@gmail.com; 2123455678; Math |
1) Ecrire un programme Python basé sur les bibliothèque pandas et openpyxl qui permet de lire les données data_students.csv et l'enregistre sur classeur Excel nommé "students.xlsx"
2) Ecrire un programme en Python basé sur la bibliothèque openpyxsl qui permet de lire les données du classeur "students.xlsx" et les enregistre sur un dictionnaire python dans les clés sont : 'Name, 'Email', 'Phone', 'Section' et les valeurs sont les valeurs des colonnes correspondantes.
Solution
Avant de commencer, veuillez installer les deux biliothèques python:
1 |
pip install pandas |
1 |
pip install openpyxl |
Question 1):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import pandas as ps from openpyxl import Workbook from openpyxl.utils.dataframe import dataframe_to_rows # Lire le fichier CSV df = ps.read_csv('data_students.csv', delimiter=';') # Créer un nouveau classeur Excel workbook = Workbook() sheet = workbook.active # Écrire les données du DataFrame dans le classeur Excel for row in dataframe_to_rows(df, index=False, header=True): sheet.append(row) # Enregistrer le classeur Excel workbook.save('students.xlsx') |
Explication:
- pandas : lit les données du fichier CSV à l'aide de la méthode read_csv() et l'enregistre sur un DataFrame df
- La classe Workbook : crée un classeur workbook via une instanciation
- l'attribut workbook.active : permet de selectionner la feuille active qui est par défaut sheet1.
- for row in dataframe_to_rows : Cette boucle lit chaque ligne du Dataframe df et l'enregistre dans une ligne de la feuille
- workbook.save('students.xlsx') : enregistre les données de l'objet classeur workbook dans un classeur 'students.xlsx'
Question 2):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
import openpyxl # Ouvrir le fichier Excel workbook = openpyxl.load_workbook('students.xlsx') # Sélectionner la première feuille de calcul sheet = workbook.active # Initialiser les listes pour chaque colonne names = [] emails = [] phones = [] sections = [] # Parcourir les lignes de la feuille de calcul for row in sheet.iter_rows(min_row=2, values_only=True): # Commencer depuis la deuxième ligne (la première ligne est généralement la ligne d'en-tête) name, email, phone, section = row # Ajouter les valeurs aux listes respectives names.append(name) emails.append(email) phones.append(phone) sections.append(section) # Créer le dictionnaire des étudiants students = { 'Name': names, 'Email': emails, 'Phone': phones, 'Section': sections } # Afficher le dictionnaire des étudiants (pour vérification) print("students = " , students) """ output: students = {'Name': ['Adam', 'Nathalie', 'Rachid', 'Farid', 'Gloria', 'Alberto', 'Mjid'], 'Email': ['adam@gmail.com', 'nathalie@gmail.com', 'rachid@gmail.com', 'farid@gmail.com', 'gloria@gmail.com', 'alberto@gmail.com', 'majid@gmail.com'], 'Phone': [333125678, 212668934, 3331122345, 2123455677, 3335321224, 33345987712, 2123455678], 'Section': ['Math', 'Info', 'Histoire Geo', 'SVT', 'Math', 'Physique', 'Math']} """ |
Younes Derfoufi
CRMEF OUJDA