La méthode de production des résultats obtenus est simple et obtenue à partir d'un code Python:
1) Récupération des fichiers ODS qui sont librement disponible sur le site impots.gouv en suivant le lien suivant:
https://www.impots.gouv.fr/cll/zf1/communegfp/flux.ex
2) Création d'un code Python pour transformer les fichiers ODS en fichier XLSX (code disponible à la demande)
3) Création d'un code Python pour charger les données issues des fichiers CLSX grâce à la bibliothèque Pandas.
--> code du type data=pd.read_excel(name, header=None) for name in Names puis
data.iloc[i;j] pour lire la cellule numéro (i,j).
--> Récupérer uniqument les cellules non vides de la colonne "par habitant" et les labels associés dans la colonne adjacente (ex "dont depenses de personnels"). Pour cela, identifier le bon numéro de colonne (les mêmes pour tous les fichiers)
-->Régler le problème des fichiers corrompus pour lesquels la lecture est impossible; duplication d'un fichier non corrompu est remplacemet manuel des données par celles du fichier non corrompu.
--> Répeter cette opération sur toutes les années. Pour une ville ou EPCI donnée, on obtient une matrice dont chaque ligne correspond à une année et chaque colonne à une catégorie du Compte Administratif parmi les labels disponibles.
Pour l'agrégation, on récupère les labels communs aux villes et EPCI.
4) Désormais, pour un label donné, on peut récupérer les historiques (une colonne de matrice d'une collectivité donné). On peut faire des sommes (agrégation) directement entre les colonnes de tpe array.
5) Création d'une fonction de classement (via .sort()) qui a pour entrée une liste (des valeurs d'un label pour toutes les villes) puis récupération des indices dans l'ordre de ce classement afin de récupérer les villes correspondantes.
def indices_tri_decroissant(l):
# On utilise enumerate pour associer chaque élément à son index
# Puis on trie par la valeur (en ordre décroissant)
sorted_indices = sorted(range(len(l)), key=lambda i: l[i], reverse=True)
return sorted_indices
6) Faire de même pour les indicateurs qui sont des rations entre des valeurs de labels déjà extraits en 4).
7) Création de tableaux via la bibliothèque plt=matplotlib.pyplot puis implémentation et enregistrement sous la forme d'image.png avec plt.savefig() .
Calcul de la moyenne générale de chaque ville
La moyenne générale N attribuée a chaque ville se calcule comme:
N=(Somme des p_i* N_i)/(somme des p_i)
où, pour chaque label (obtenus selon la méthode ci-dessus) numéro i la note N_i est obtenue comme:
N_i(v)=Classement_i(v)/2 si une grande valeur du label est signe d'une mauvaise gestion (M)
N_i(v)=(40-Classement_i(v))/2 si une grande valeur du label est signe d'une bonne gestion (B)
Voici les poids et les modes de calcul selon les labels inclus dans la moyenne:
Dotation globale de fonctionnement: poids p_i=1, M
Charges de fonctionnement: poids p_i=4, M
Charges de personnel: poids p_i=4, M
Dépenses d'équipement: poids p_i=1, B
Somme des impôts collectés: poids p_i=4, M
Subventions versées: poids p_i=1, B
Annuité de la dette: poids=1, M
CAF: poids p_i=2, B
Taux d'épargne brut: poids p_i=2, B
Taux d'endettement: poids p_i=4, M
Capacité de désendettement: poids p_i=1, M
Taux d'investissement: poids p_i=4, B
Bien entendu, le choix des poids, des valeurs de M ou B et des labels impliqués est subjectif même s'ils obéissent à un principe de bons sens.