Outils pour utilisateurs

Outils du site


nsi:premiere:dictionnaires

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
nsi:premiere:dictionnaires [2021/04/25 18:49] goupillwikinsi:premiere:dictionnaires [2022/02/01 17:45] (Version actuelle) – supprimée goupillwiki
Ligne 1: Ligne 1:
-{{page>langages:python:dictionnaires}} 
  
-===== Exercices ===== 
- 
-==== Exercice 1 ==== 
- 
-On définit le dictionnaire suivant 
- 
-//Les retours à la ligne servent à la lisibilité, ils ne sont pas obligatoires.// 
- 
-<Code:python> 
-d = { 
-    "France":"fr", 
-    "Royaume-Uni":"uk", 
-    "États-Unis":"us" 
-} 
-</Code> 
- 
-Que renvoient les commandes suivantes : 
- 
-<Code:python> 
-len(d) 
-type(d) 
-d["France"] 
-d["france"] 
-d["fr"] 
-"Italy" in d 
-"France" in d 
-"fr" in d 
-d["Espagne"] 
-d.keys() 
-d.values() 
-d.items() 
-</Code> 
- 
-==== Exercice 2 : Bibliothèques csv et panda ==== 
- 
-Vous disposez d'un fichier {{ :nsi:premiere:worldcities.csv |worldcities.csv}} 
-contenant les données sur un ensemble de villes. 
- 
-**csv** signifie //comma separated values//, c'est un fichier où les données sont séparées par des virgules ou des points-virgules. 
- 
-Le fichier est un simple fichier texte qui ressemble à cela : 
- 
-<code csv> 
-city;city_ascii;lat;lng;country;iso2;iso3;admin_name;capital;population;id 
-Tokyo;Tokyo;35.6850;139.7514;Japan;JP;JPN;Tōkyō;primary;35676000;1392685764 
-New York;New York;40.6943;-73.9249;United States;US;USA;New York;;19354922.0;1840034016 
-Mexico City;Mexico City;19.4424;-99.1310;Mexico;MX;MEX;Ciudad de México;primary;19028000;1484247881 
-... 
-</code> 
- 
-Si on l'ouvrait avec un éditeur spécialisé comme un tableur, on aurait ce type de mise en forme : 
- 
-<csv> 
-city;city_ascii;lat;lng;country;iso2;iso3;admin_name;capital;population;id 
-Tokyo;Tokyo;35.6850;139.7514;Japan;JP;JPN;Tōkyō;primary;35676000;1392685764 
-New York;New York;40.6943;-73.9249;United States;US;USA;New York;;19354922.0;1840034016 
-Mexico City;Mexico City;19.4424;-99.1310;Mexico;MX;MEX;Ciudad de México;primary;19028000;1484247881 
-</csv> 
- 
-La première ligne est une entête qui sert à préciser le contenu des colonnes. 
- 
-Nous allons voir ici comment les bibliothèques ''%%csv%%'' et ''%%panda%%'' nous permettent d'accélérer le travail. 
- 
-  * Téléchargez le fichier {{ :nsi:premiere:worldcities.csv |worldcities.csv}} 
-  * Téléchargez le fichier ''%%city1.py%%'' ci-dessous 
- 
-<file python city1.py> 
-# import de la bibliothèque 
-import csv 
-# Ouverture du fichier en mode lecture, avec l'encodage utf8. 
-file = open('worldcities.csv', 'r', encoding='utf8') 
-# création d'un objet de la bibliothèque csv chargé de lire 
-# le contenu de fichier. 
-# On précise le type de séparateur utilisé. 
-reader = csv.reader(file, delimiter=';') 
-# reader est une sorte de tête de lecture. 
-# Nous allons faire avancer la tête de lecture pour récupérer 
-# les données du fichier et les stocker dans un tableau. 
-villes = [] 
-for row in reader: 
-    villes.append(row) 
-# on peut refermer le fichier. 
-file.close() 
-# pour illustrer, demandons l'affichage des 5 premières lignes 
-for i in range(5): 
-    print(villes[i]) 
-</file> 
- 
-  * Exécutez et visualisez le résultat. **Que constate-t-on ?** 
-      * ''%%villes%%'' est un tableau contenant des lignes. Chaque ligne est également un tableau. 
-      * La première ligne du tableau est la ligne d'entête. Elle est peu exploitable. 
-      * Si on veut accéder au nom de pays de Tokyo, il faut déjà savoir que Tokyo est à la ligne 1 puis que le nom de pays est à la colonne 4 et demander ''%%villes[1][4]%%''. Ce n'est pas tellement pratique. 
- 
-**Utilisation de dictionnaires.** 
- 
-  * On recommence, téléchargez le fichier ''%%city2.py%%'' 
- 
-<file python city2.py> 
-# même début 
-import csv 
-file = open('worldcities.csv', 'r', encoding='utf8') 
-# l'objet de lecture est différent 
-# celui-ci produit des dictionnaires 
-reader = csv.DictReader(file, delimiter=';') 
-# chaque ligne lue produira un dict 
-# mais l'ensemble des lignes formera un tableau 
-villes = [] 
-for row in reader: 
-    villes.append(dict(row)) 
-# fermeture du fichier 
-file.close() 
-# affichage des 5 premières lignes 
-for i in range(5): 
-    print(villes[i]) 
-</file> 
- 
-  * Exécutez et visualisez le résultat. **Que constate-t-on ?** 
-      * ''%%villes%%'' est toujours un tableau mais un tableau constitué de dictionnaires. 
-      * La première ligne du fichier, l'entête, n'est pas la première ligne de ''%%villes%%''. 
-      * La ligne d'entête sert à former les clés des différents dictionnaires. 
- 
-Ainsi, si on veut atteindre le nom de de pays pour Tokyo, on écrira ''%%villes[1]['country']%%'' 
- 
-L'utilisation de dictionnaires permet d'associer une étiquette à chaque colonne ce qui rend l'utilisation du fichier plus simple. On n'a pas besoin de s'ennuyer à chercher le numéro de colonne pour le pays, on indique directement `'country'`. 
- 
-**Encore mieux avec panda** 
- 
-Panda est une bibliothèque très puissante et beaucoup utilisée pour le traitement de données. 
- 
-> Notez que c'est une spécificité de Python : on dispose de bibliothèque très puissantes qui permettent de réduire grandement le travail du programmeur. 
- 
-  * Téléchargez le fichier ''%%city3.py%%'' 
- 
-<file python city3.py> 
-import pandas 
-villes = pandas.read_csv("worldcities.csv", delimiter=";") 
-</file> 
- 
-C'est tout ! ''%%villes%%'' n'est pas un tableau. C'est un objet défini par panda, plus compliqué et plein de fonctionnalités. Voici quelques exemples que vous pouvez **entrer en console** après exécution du script : 
- 
-<code python> 
->>> villes.loc[10] # affichage de l'item au rang 10 
->>> villes.log[10]['population'] # population de cette ville. 
-</code> 
- 
-Notez que ''%%population%%''a été converti en ''%%float%%'' automatiquement par panda ce que ne faisait pas ''%%csv%%''. 
- 
-```python 
->>> villes.nlargest(10, 'population') 
->>> villes[villes.city == "Paris"] 
->>> villes['population'].describe() 
-``` 
- 
-Ceci n'est qu'un aperçu, panda a beaucoup de fonctionnalités. 
- 
-==== Exercice 3 ==== 
- 
-Un brin d'ADN est une succession de bases nucléiques symbolisées par A, T, G, C pour adénine, thymine, guanine, cytosine. Une fonction de l'ADN est de coder les protéines que la cellule sera chargée de synthétiser. Pour se faire, un brin d'ADN complémentaire est créé : 
- 
-A => U (uracile), T => A, G => C, C => G 
- 
-puis chaque triplet - **codon** - de bases code une **acide aminé**. 
- 
-Par exemple, UAU code pour Y : tyrosine 
- 
-On vous fournit un fichier {{ :nsi:premiere:codons.csv |codons.csv}} précisant toutes les associations codon => acide aminé. Voici les premièrs lignes du fichier. 
- 
-<csv> 
-"codon";"Symbole";"Acide aminé" 
-"UUU";"F";"Phenylalanine" 
-"UUC";"F";"Phenylalanine" 
-"UUA";"L";"Leucine" 
-"UUG";"L";"Leucine" 
-"CUU";"L";"Leucine" 
-</csv> 
- 
-Complétez le fichier ''%%adn.py%%'' ci-dessous : 
- 
-<file python adn.py> 
-import csv 
-file = open('codons.csv', 'r', encoding='utf8') 
-reader = csv.DictReader(file, delimiter=';') 
-codons = [] 
-for row in reader: 
-    codons.append(dict(row)) 
-file.close() 
- 
-def testBrin(brinADN:str) -> bool: 
-   ''' 
-   Reçoit en entrée un brin d'ADN sous forme d'une chaîne. 
-   Renvoie True si le brin est valide: 
-       - nombre de lettres multiple de 3 
-       - composé des lettres ATGC 
-    ''' 
- 
-brinComplementaire(brinADN:str) -> str: 
-    ''' 
-    Reçoit en entrée un brin d'ADN sous forme d'une chaîne. 
-    Renvoie la chaîne correspondant au brin complémentaire. 
-    ''' 
-     
-def toAcides(brinADN:str) -> str: 
-    ''' 
-    Reçoit en entrée un brin d'ADN sous forme d'une chaîne. 
-    Renvoie la chaîne correspondant à la suite d'acides aminés. 
-    ''' 
-</file> 
nsi/premiere/dictionnaires.1619369395.txt.gz · Dernière modification : de goupillwiki