Traitement des données en Python

Activité 1

Le nombre d'apparition d'un mot dans un texte

Un journaliste souhaite étudier le discours d'un homme politique. Il s'intéresse particulièrement au nombre de fois que l'homme politique prononce un mot précis,par exemple le mot "impôts".

Aider ce journaliste pour écrire un programme en Python réalisant son objectif.

Télécharger le fichier texte.txt qui contient un texte.

Pour chercher le nombre d'apparition d'un mot dans un texte, on écrit un programme en Python qui :

  • Ouvre le fichier textetexte.txt
  • Lit le fichier texte.txt
  • Affecte la chaîne de caractère lue à la variable texte
  • Convertit texte en liste (méthode split()). (Séparer la chaîne de caractères contenue dans la variable texte en prenant comme délimiteur "\n")
  • Affiche les éléments de cette liste
  • Crée une liste dont les valeurs sont les mots du texte
  • Compte le nombre d'apparition du mot "science" dans le texte.
  • Compte le nombre d'apparition du mot "données" dans le texte.

Une solution de l'exercice "Le nombre d'apparition d'un mot dans un texte ".

# -*- coding: utf-8 -*-
def CompteMot(mot) :
    f=open("Documents/texte.txt","r", encoding='utf-8')
    data=f.read()
    data_liste = data.split('\n')
    #print(data_liste)
    final_data = []
    for x in data_liste :
        final_data.append(x)
    #print(final_data)
    liste_mots = []
    for x in final_data :
        y=x.split(' ')
        liste_mots.append(y)
    print(liste_mots)
    c=0
    for x in liste_mots:
        for y in x :
            y=y.strip(',.')
            if y==mot :
                c=c+1
    return c
print("le nombre d'apparition du mot \"{}\" est {}".\
format("science",CompteMot("science")))
print("le nombre d'apparition du mot \"{}\" est {}".\
format("données",CompteMot("données")))

Activité 2

Exercice 1 : Lecture d'un fichier en python

A l'issue des conseils de classe des Secondes d'un lycée général, le fichier orientation.csv représente la synthèse des choix des spécialités proposées dans ce lycée

Ce fichier est présenté sous la forme suivante :

SpécialitémathsPCSVTMSISES HGLittératureArts
Effectifs5045702228 311812

Ecrire un programme qui fait les taches suivantes :

  1. Ouvrir le fichier Excel orientation.csv
  2. Lire le fichier orientation.csv
  3. Affecter la chaîne de caractère lue à la variable orientation
  4. Convertir orientation en liste (méthode split()). (Séparer la chaîne de caractères contenue dans la variable orientation en prenant comme délimiteur "\n")
  5. Afficher les éléments de cette liste

Une proposition de réponse :

# -*- coding: utf-8 -*-
f=open("orientation.csv","r")
orientation=f.read()
orientation=orientation.split("\n")
del orientation[-1]
print(orientation)
print(orientation[0])
print(orientation[1])
>>>['Spécialité;Maths;PC;SVT;MSI;SES;HG;HLP;ARTS', 'Effectif;65;55;70;22;35;31;18;12']
Spécialité;Maths;PC;SVT;MSI;SES;HG;HLP;ARTS
Effectif;65;55;70;22;35;31;18;12
>>>

Exercice 2 : Exploitation des données

Création de deux variables spe et effectif

  1. Créer deux listes vides nommées spe et effectif
  2. créer une boocle for qui :
    • Délimite les éléments de la liste orientation
    • Ajoute les noms des spécialités dans la liste nommée spe et les effectifs correspondants dans la liste nommée effectif
  3. afficher les éléments de chaque liste

Une proposition de réponse :

spe = []
effectif=[]
orient=[]
#orientation=orientation.split(",")
for x in orientation :
    y=x.split(";")
    if y[0]=='Spécialité':
        del y[0]
        for k in y :
            spe.append(k)
    else :
        del y[0]
        for k in y :
            effectif.append(int(k))
print(spe)
print(effectif)
>>>['Maths', 'PC', 'SVT', 'MSI', 'SES', 'HG', 'HLP', 'ARTS']
[50, 45, 70, 22, 28, 31, 18, 12]
>>>

Exercice 3 : Exploitation des données

Diagramme en barres

  1. Représenter ces résultats en diagramme en barres
  2. Quelle est la population étudiée
  3. Quelle est le caractère étudié
  4. Quelle est l'orientation la moins fréquente
  5. Peut-on répondre à la question : Combien le lycée compte-il d'élèves en Première ?

Une proposition de réponse :

# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
def diagramme(L_valeurs,L_effectifs):
    " Création d'un diagramme en barres"
    plt.grid ( True )
    plt.xlabel ("Les spécialités en Première")
    plt.ylabel (" Les effectifs des spécialités")
    plt.bar( L_valeurs , L_effectifs,color='r') # création d'un diagramme en barres
    plt.show ()
diagramme(spe,effectif)
Courbe : fonction carrée

Activité 2

Télécharger le fichier en Excel departements_N-fr.csv dans lequel on donne les noms des départements en Métropole et en Corse, les effectifs des habitants et le numéro de chaque département

Lecture d'un fichier

Ecrire un programme en Python qui permet de :

  1. Ouvrir le fichier departements_N-fr.csv
  2. Créer une liste dont les valeurs sont les départements français
  3. Créer une deuxième liste dont les valeurs sont les effectifes des habitants des départements.
  4. Créer un diagramme en barres représentant les effectifs par département.

Une proposition de réponse :

# -*- coding: utf-8 -*-
f=open("departements_N2-fr.csv","r")
donnees=f.read()
donnees=donnees.split("\n")
del donnees[-1]
departements_fr=[]
Num_departements_fr=[]
NbreHabitants=[]
dic={}
for x in donnees:
    y=x.split(",")
    departements_fr.append(y[0])
    NbreHabitants.append(int(y[1]))
    Num_departements_fr.append(int(y[2]))
    dic[y[0]]=int(y[2])
import matplotlib.pyplot as plt
taille = (6,4)
plt.figure(figsize=taille)
def diagramme(L_valeurs,L_effectifs):
    " Création d'un diagramme en barres"
    plt.grid ( True )
    plt.xlabel ("Les départements français")
    plt.ylabel (" Le nombre d'habitants")
    plt.bar( L_valeurs , L_effectifs,color='r') # création d'un diagramme en barres
    #
    f = plt.gcf()
    dpi = f.get_dpi()  #dpi c'est le nombre de pixel par "inch"
    h, w = f.get_size_inches() #renvoie les dimensions de la figure f
    f.set_size_inches(h*2.2, w*2.2)  #modifie les dimensions de la figure f en les multipliant par 2.2
    f.savefig("test.png")
    plt.show ()
diagramme(Num_departements_fr,NbreHabitants)
print(dic)
Courbe : fonction carrée
>>>
{'Ain': 1, 'Aisne': 2, 'Allier': 3, 'Alpes-de-Haute-Provence': 4, 'Hautes-Alpes': 5, 'Alpes-Maritimes': 6, 
'Ardèche': 7, 'Ardennes': 8, 'Ariège': 9, 'Aube': 10, 'Aude': 11, 'Aveyron': 12, 'Bouches-du-Rhône': 13, 
'Calvados': 14, 'Cantal': 15, 'Charente': 16, 'Charente-Maritime': 17, 'Cher': 18, 'Corrèze': 19, 'Corse': 20, 
"Côte-d'Or": 21, "Côtes-d'Armor": 22, 'Creuse': 23, 'Dordogne': 24, 'Doubs': 25, 'Drôme': 26, 'Eure': 27, 
'Eure-et-Loir': 28, 'Finistère': 29, 'Gard': 30, 'Haute-Garonne': 31, 'Gers': 32, 'Gironde': 33, 'Hérault': 34, 
'Ille-et-Vilaine': 35, 'Indre': 36, 'Indre-et-Loire': 37, 'Isère': 38, 'Jura': 39, 'Landes': 40, 'Loir-et-Cher': 41,
 'Loire': 42, 'Haute-Loire': 43, 'Loire-Atlantique': 44, 'Loiret': 45, 'Lot': 46, 'Lot-et-Garonne': 47, 'Lozère': 48,
 'Maine-et-Loire': 49, 'Manche': 50, 'Marne': 51, 'Haute-Marne': 52, 'Mayenne': 53, 'Meurthe-et-Moselle': 54, 'Meuse': 55,
 'Morbihan': 56, 'Moselle': 57, 'Nièvre': 58, 'Nord': 59, 'Oise': 60, 'Orne': 61, 'Pas-de-Calais': 62, 
 'Puy-de-Dôme': 63, 'Pyrénées-Atlantiques': 64, 'Hautes-Pyrénées': 65, 'Pyrénées-Orientales': 66, 'Bas-Rhin': 67,
 'Haut-Rhin': 68, 'Rhône': 69, 'Haute-Saône': 70, 'Saône-et-Loire': 71, 'Sarthe': 72, 'Savoie': 73, 'Haute-Savoie': 74, 
 'Paris': 75, 'Seine-Maritime': 76, 'Seine-et-Marne': 77, 'Yvelines': 78, 'Deux-Sèvres': 79, 'Somme': 80,
 'Tarn': 81, 'Tarn-et-Garonne': 82, 'Var': 83, 'Vaucluse': 84, 'Vendée': 85, 'Vienne': 86, 'Haute-Vienne': 87, 
 'Vosges': 88, 'Yonne': 89, 'Territoire de Belfort': 90, 'Essonne': 91, 'Hauts-de-Seine': 92, 'Seine-Saint-Denis': 93, 
'Val-de-Marne': 94, "Val-d'Oise": 95}
>>>