Catégorisation automatique d'un relevé bancaire
Classe chaque dépense d'un relevé CSV par règles regex sur le libellé, cumule les totaux par catégorie et imprime la répartition avec barres proportionnelles.
Cas d'usage
Outil de pré-comptabilité demandé par un indépendant : visualiser où part l'argent du mois en une commande.
Prérequis
Python 3.9+ (bibliothèque standard)
Python
import csv
import re
from collections import defaultdict
REGLES = [("CARREFOUR|LIDL|AUCHAN", "courses"),
("SNCF|UBER|TOTALENERGIES", "transport"),
("EDF|ORANGE|FREE TELECOM", "factures"),
("NETFLIX|SPOTIFY|DEEZER", "abonnements")]
totaux, non_classe = defaultdict(float), 0.0
with open("releve_juin.csv", encoding="utf-8") as f:
for ligne in csv.DictReader(f, delimiter=";"):
montant = float(ligne["montant"].replace(",", "."))
if montant >= 0:
continue
for motif, cat in REGLES:
if re.search(motif, ligne["libelle"].upper()):
totaux[cat] += -montant
break
else:
non_classe += -montant
depenses = sum(totaux.values()) + non_classe
print(f"Dépenses de juin : {depenses:.2f} EUR")
for cat, t in sorted(totaux.items(), key=lambda x: -x[1]):
print(f" {cat:<13} {t:>8.2f} " + "▓" * round(t * 24 / depenses))
print(f" {'non classé':<13} {non_classe:>8.2f}")Résultat
Dépenses de juin : 2184.37 EUR courses 612.40 ▓▓▓▓▓▓▓ factures 498.20 ▓▓▓▓▓ transport 441.85 ▓▓▓▓▓ abonnements 67.97 ▓ non classé 563.95
FinanceCSVRegexCatégorisation