Bonjour,
Je n'ai pas de formation pour coder donc j'apprends sur le tas.
J'ai un fichier .csv avec 30 colonnes et 10 000 000 de lignes donc impossible de l'ouvrir sur excel par exemple.
Il n'y a qu'une seule colonne qui m'intéresse, j'ai réussi à l'isoler sur python.
Sur cette liste de 10 000 000 de valeurs, je dois les trier en les classant par groupe de valeurs (par exemple : il y a 100 000 valeurs entre 0 et 1).
Etant données que je dois appliquer cette méthodologie sur une centaine de fichiers, j'ai besoin d'un programme automatique.
J'ai pensé à trouver mes valeurs max vmax et min VMI®®®®n, créer un incrément i (par exemple (vmax-VMI®®®®n)/100)) et créer des groupes de valeurs dont le premier serait les valeurs comprises entre VMI®®®®n et VMI®®®®n + i et ceux jusqu'au groupe dont les valeurs sont comprises entre VMI®®®®n + 99i et VMI®®®®n + 100i (vmax).
Je n'ai aucune idée de comment je peux coder cela.
Pour l'instant voici ce que j'ai fait (isoler la colonne, trier du plus petit au plus grand et trouver les min, max et ajouter l'incrément)
J'espère avoir été clair car ce n'est pas facile d'expliquer cela.Code:#Importer fonction "zero" pour créer rapidement des tableaux from scipy import * import matplotlib.pyplot as plt #ex: tableau à 10 éléments et 2 colonnes: monTableau = zeros((10,2)) # parcours d'un fichier python avec récupération du nombre de lignes with open('test.csv', 'rb') as csvfile: #récupérer le nb de lignes spamreader = csv.reader(csvfile, delimiter=',') rowNb = sum(1 for row in spamreader) - 1; # -1 car on supprime la ligne des titres test = zeros((rowNb,2)) #reinitialisation de la tête de lecture csvfile.seek(0) incr = 0 nouvealIncrem=spamreader.line_num #car meme avec .seek(0), line_num n'est pas revenu a 0, or on doit eviter de post traiter le titre des colonnes #parcours du .csv pour stocker tes variables dans le tableau simuPositionData (pour l'instant, non triées) for row in spamreader: if spamreader.line_num > nouvealIncrem+1: test[incr,1] = incr test[incr,0] = float(row[24]) incr += 1 print float(row[24]) #à tester donneesTriees = sorted( test[:,0] ) print donneesTriees # max et min de la liste vmax = max (test[:,0]) VMI®®®®®n = min (test[:,0]) print rowNb #nombre de lignes print vmax print VMI®®®®®n i = (vmax - VMI®®®®®n)/100 l = donneesTriees #pour le plot plt.figure(1) plt.plot(donneesTriees)
En espérant que vous saurez m'aider, je vous remercie d'avoir prêté attention à mon post.
Bonne journée,
Cordialement.
-----