Discussion:Ultra fact checker performance
De INDYWiki
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)