import csv
from operator import itemgetter
# Charger le fichier M-1 CSV
with open('M-1.csv', 'r') as file1:
reader1 = csv.reader(file1, delimiter=';')
next(reader1) # Ignorer l'en-tête s'il y en a un
data1 = {row[3]: float(row[5].replace(',', '.')) for row in reader1}
# Charger le fichier N CSV et créer le fichier comparatif CSV
with open('M.csv', 'r') as file2, open('comparatif.csv', 'w', newline='') as file3:
reader2 = csv.reader(file2, delimiter=';')
next(reader2) # Ignorer l'en-tête s'il y en a un
writer = csv.writer(file3, delimiter=';')
writer.writerow(['Client', 'Montant M-1', 'Montant M', '% d\'évolution'])
# Parcourir les lignes du fichier N et mettre à jour les données
for row in reader2:
client = row[4]
montant_facture = float(row[9].replace(',', '.'))
if client in data1:
montant_M_1 = data1[client]
montant_M = montant_facture
evolution = montant_M - montant_M_1
pourcentage_evolution = int((evolution / montant_M_1) * 100)
writer.writerow([client, montant_M_1, montant_M, pourcentage_evolution])
del data1[client] # Supprimer le client de data1 pour identifier les clients restants dans M-1
else:
# Le client n'existe pas dans le fichier M-1
writer.writerow([client, 0, montant_facture, 9999])
# Traiter les clients restants dans le fichier M-1
for client, montant_M_1 in data1.items():
writer.writerow([client, montant_M_1, 0, -9999])
# Trier le fichier comparatif.csv selon le pourcentage d'évolution dans l'ordre décroissant
data = []
with open('comparatif.csv', 'r') as file:
reader = csv.reader(file, delimiter=';')
next(reader) # Ignorer l'en-tête
data = list(reader)
sorted_data = sorted(data, key=lambda row: int(row[3]), reverse=True)
with open('comparatif.csv', 'w', newline='') as file:
writer = csv.writer(file, delimiter=';')
writer.writerow(['Client', 'Montant M-1', 'Montant M', '% d\'évolution'])
writer.writerows(sorted_data)