<jupyter_start><jupyter_text>Explorer un corpus  Imports<jupyter_code>from collections import defaultdict
import os

import matplotlib.pyplot as plt
import numpy as np<jupyter_output><empty_output><jupyter_text>Compter le nombre de documents dans le corpus<jupyter_code>path = "../data/txt/"
files = sorted(os.listdir(path)) # stocker dans 'files' la liste des fichiers contenus dans le dossier 'txt'
len(files)
print(files[:10])<jupyter_output>['Bxl_1847_Tome_I1_Part_1.txt', 'Bxl_1847_Tome_I1_Part_2.txt', 'Bxl_1847_Tome_I1_Part_3.txt', 'Bxl_1847_Tome_I1_Part_4.txt', 'Bxl_1847_Tome_I1_Part_5.txt', 'Bxl_1848_Tome_I1_Part_1.txt', 'Bxl_1848_Tome_I1_Part_2.txt', 'Bxl_1848_Tome_I1_Part_3.txt', 'Bxl_1849_Tome_I1_Part_1.txt', 'Bxl_1849_Tome_I1_Part_2.txt']<jupyter_text>Explorer les noms de fichier Nous allons manipuler ici les chaines de caractères.Il s'agit de la classe `str` en Python.Pour en savoir plus : https://openclassrooms.com/fr/courses/235344-apprenez-a-programmer-en-python/231888-creez-votre-premier-objet-les-chaines-de-caracteres<jupyter_code>chaine = 'Bxl_1849_Tome_II1_Part_5.txt'
type(chaine)
# la méthode split
chaine_split = chaine.split('_')
chaine_split
# Accéder à l'année
year = chaine_split[1]
year
# Manipuler les str pour convertir une année en décennie
year[:3]
year[-1]
year[:3] + '0s'<jupyter_output><empty_output><jupyter_text>Quelques statistiques<jupyter_code>all_years = [str(year) for year in range(1847, 1979)]
print(all_years)
print(f"\nIl y a a priori {len(all_years)} années à traiter dans notre corpus")
count_decade = defaultdict(int) # initialiser le dico des décennies
count_years = defaultdict(int)
count_cities = defaultdict(int) # initialiser le dico des villes
count_tomes = defaultdict(int) # initialiser le dico pour les tomes
covered_years = set() # initialiser un set de données pour les années couvertes (liste univoque)

for f in files: # pour tous les fichiers contenus dans 'files'
    if "_" in f and f.endswith("txt"): # si le nom du fichier contient '_' et que le fichier termine par l'extension 'txt' alors
        elems = f.split("_") # splitter les noms et les stocker dans le tableau 'elems'
        city = elems[0] # le 1er élément de chaque tableau contient la ville à stocker dans le dico approprié
        year = elems[1] # le 2e élément contient l'année à stocker
        tome = elems[3] # le 4e élément contient le numéro du tome
        covered_years.add(year) # ajouter au set les années couvertes par le corpus
        decade = year[:3] + "0s" # transformer les années en décades
        count_decade[decade] += 1 # compter le nombre de décennies
        count_cities[city] += 1 # le nombre de villes
        count_tomes[tome] += 1 # et le nom des tomes
        count_years[year] += 1
    else:
        print(f"Anomalous file: {f}") # sinon afficher le nom du fichier corrompus
print(f"Il y a {count_cities['Bxl']} bulletins de Bruxelles and {count_cities['Lkn']} <NAME>")
nb_rap = count_tomes['RptAn'] # stocker les rapports dans une variable
print(f"{len(files) - nb_rap} documents sont des bulletins et {nb_rap} documents sont des rapports annuels") # effectuer la soustraction pour distinguer les bulletins des rapports

print(len(covered_years))

print(count_years)

print(f"\nIl manque par conséquent, {len(all_years)-len(covered_years)} années dans notre corpus")
missing_years = [y for y in all_years if y not in covered_years]
print(f"Années manquantes: {', '.join(missing_years)}")<jupyter_output>Années manquantes: 1853, 1875, 1916, 1917, 1940, 1941, 1942, 1943, 1944<jupyter_text>Visualisation du nombre de bulletins par décenniesCes visualisations sont obtenus avec la librairie Matplotlib.Pour en savoir plus : https://openclassrooms.com/fr/courses/4452741-decouvrez-les-librairies-python-pour-la-data-science/4740942-maitrisez-les-possibilites-offertes-par-matplotlib.<jupyter_code>index = np.arange(len(count_decade))
plt.bar(index, count_decade.values())
plt.xlabel('Décennie')
plt.ylabel('# bulletins')
plt.xticks(index, count_decade.keys(), fontsize=8, rotation=30)
plt.title('Évolution du nombre de bulletins')
plt.show()<jupyter_output><empty_output>