J'ai un script qui prend tous les fichiers csv d'un répertoire et les fusionne côte à côte, en utilisant une jointure externe. Le problème est que mon ordinateur s'étouffe (MemoryError) lorsque j'essaie de l'utiliser sur les fichiers que je dois joindre (environ deux douzaines de fichiers de 6 à 12 Go chacun). Je sais que itertools peut être utilisé pour rendre les boucles plus efficaces, mais je ne sais pas si et comment il pourrait être appliqué à cette situation. L'autre alternative à laquelle je pense est d'installer mySQL, d'en apprendre les bases et de faire cela à partir de là. Évidemment, je préférerais le faire en Python si possible, car je suis déjà en train de l'apprendre. Une solution basée sur R serait également acceptable.
Voici mon code :
import os
import glob
import pandas as pd
os.chdir("\\path\\containing\\files")
files = glob.glob("*.csv")
sdf = pd.read_csv(files[0], sep=',')
for filename in files[1:]:
df = pd.read_csv(filename, sep=',')
sdf = pd.merge(sdf, df, how='outer', on=['Factor1', 'Factor2'])
Tout conseil sur la manière de procéder avec des fichiers trop volumineux pour la mémoire de mon ordinateur serait grandement apprécié.