Ceci est une ancienne révision du document !
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Table des matières
Exercices
Exercice 1
On définit le dictionnaire suivant
Les retours à la ligne servent à la lisibilité, ils ne sont pas obligatoires.
d = {
"France":"fr",
"Royaume-Uni":"uk",
"États-Unis":"us"
}
Que renvoient les commandes suivantes :
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()
Exercice 2 : Bibliothèques csv et panda
Vous disposez d'un fichier 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 :
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 ...
Si on l'ouvrait avec un éditeur spécialisé comme un tableur, on aurait ce type de mise en forme :
| 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 |
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 worldcities.csv
- Téléchargez le fichier
city1.pyci-dessous
- 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])
- Exécutez et visualisez le résultat. Que constate-t-on ?
villesest 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
- 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])
- Exécutez et visualisez le résultat. Que constate-t-on ?
villesest 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
- city3.py
import pandas villes = pandas.read_csv("worldcities.csv", delimiter=";")
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 :
>>> villes.loc[10] # affichage de l'item au rang 10 >>> villes.log[10]['population'] # population de cette ville.
Notez que populationa été converti en float automatiquement par panda ce que ne faisait pas csv.
>>> 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 codons.csv précisant toutes les associations codon ⇒ acide aminé. Voici les premièrs lignes du fichier.
| codon | Symbole | Acide aminé |
|---|---|---|
| UUU | F | Phenylalanine |
| UUC | F | Phenylalanine |
| UUA | L | Leucine |
| UUG | L | Leucine |
| CUU | L | Leucine |
Complétez le fichier adn.py ci-dessous :
- 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. '''
