Bonjour à tous,
Je dois faire des comparaisons entre deux dataframe contenant respectivement 1200000 et 1800000 de lignes. Pour faire simple (car mon ordi n’est pas une foudre…), j’ai réduis chacun des df à "deux colonnes" j’ai donc DF1 et DF2
j’ai commis un petit script qui charge les fichiers csv, vérifie ce qui est dans DF1 et pas dans DF2, ce qui est dans DF2 et pas dans DF1, et ce qui est en commun. A la suite de quoi, je génère des fichiers csv avec les résultats.
Les valeurs sur lesquelles sont faits les tests sont des chaines Alphanumérique d’une taille max de 60.
Voici le code
import pandas as pd
from datetime import datetime
debut = datetime.now()
DF1 = pd.read_csv('../Datas/DF1.csv', delimiter=',')
DF2 = pd.read_csv('../Datas/DF2.csv', delimiter=',')
DF2['Ref'] = DF2['Ref'].str.lstrip()
# liste des references sur DF2 et pas Sur DF1
DF2_Only = pd.merge(left = DF2, right = DF1, how = 'outer', left_on='Ref', right_on='Ref',\
indicator = True).loc[lambda x : x['_merge']=='left_only']
DF2_Only.to_csv('DF1_uniquement.csv', sep=';', index=False, columns=['Ref'])
# Liste des references sur DF1 et pas Sur DF2
DF1_Only = pd.merge(left = DF2, right = DF1, how = 'outer', left_on='Ref', right_on='Ref',\
indicator = True).loc[lambda x : x['_merge']=='right_only']
DF1_Only.to_csv('DF1_uniquement.csv', sep=';', index=False, columns=['Ref'])
# Liste des references en commun sur DF1 et DF2
DF1_DF2 = pd.merge(left = DF2, right = DF1, how = 'inner', left_on='Ref', right_on='Ref',\
indicator = True)
DF1_DF2.to_csv('Ref_communes.csv', sep=';', index=False, columns=['Ref'])
fin = datetime.now()
duree = (fin - debut).total_seconds()
print(duree, ' secondes')
Les script se termine au bout de 10 secondes. Est-ce que cela vous parait correct et logique. Est-ce qu’il y aurait une autre manière pour accélérer le processus ?
Je vous remercie d’avance. Bonne journée