Suite de Dernière histoire J'ai comparé les performances lors de l'utilisation de numpy.array.T, que j'ai essayé de manière désagréable, et lors de l'utilisation du zip qui a reçu des commentaires.
Les entrées sont 1M.csv avec 1000 lignes et 1000 colonnes et 25M.csv avec 5000 lignes et 5000 colonnes.
Méthode 1
import sys
import numpy
def csvt_1(fnin, fnout):
fin = open(fnin, "r")
fout = open(fnout, "w")
for line in numpy.array([s.strip('\n').split(',') for s in fin]).T:
fout.write(",".join(line) + "\n")
fin.close()
fout.close()
Méthode 2
import sys
def csvt_2(fnin, fnout):
fin = open(fnin, "r")
fout = open(fnout, "w")
for line in zip(*[s.strip('\n').split(',') for s in fin]):
fout.write(','.join(line) + '\n')
fin.close()
fout.close()
Résultat de la mesure (% time% run dans IPython) Méthode 1 1M.csv: environ 500ms 25M.csv: environ 14s Méthode 2 1M.csv: environ 250ms 25M.csv: environ 11s
Je l'ai mesuré plusieurs fois, mais c'est à peu près la même chose. zip gagne. Qu'est-ce que c'est? Je me demande si zip fonctionne bien pour l'évaluation des délais. Quoi qu'il en soit, des résultats significatifs ont été obtenus.
Les données dont mon collègue a parlé et qui m'ont poussé à essayer ce code ont une taille d'environ 40 Go. Pour cela, cette méthode ne semblait pas fonctionner, j'ai donc écrit une application en C # séparément et l'ai résolue.
Recommended Posts