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)