Traitement fichier csv sous python

Fermé
qadfz - 22 avril 2020 à 16:28
Furansujean Messages postés 58 Date d'inscription lundi 1 juillet 2019 Statut Membre Dernière intervention 12 septembre 2022 - 10 mai 2020 à 01:00
Bonjour,

Voilà, j'ai un fichier csv (généré avec python) a traiter avec beaucoup de données. J'aimerais le modifier (ou créer un autre fichier csv) avec un code simple sous python pour avoir toutes les données en colonne (et ensuite les traiter sous excel). Du style, qu'il lise ligne par ligne mon fichier et que à chaque fois qu'il croise une virgule (mes éléments sont principalement séparés par une virgule) il fasse un retour à la ligne pour mettre l'élément suivant et ainsi de suite pour obtenir une même colonne de données exploitable sous excel.
Je n'ais pas un très bon niveau en programmation, et mes seules connaissances sont pour le calcul scientifique, du coup je comprends pas bien les différentes fonctions à utiliser qu'on peut trouver sur le net. Cependant, j'ai trouvé un code mais que je n'arrive pas à faire tourner car dans la boucle for je ne comprends par sur quoi il faut itérer (le "x", j'ai essayé en mettant "wr" mais il me dit : TypeError: '_csv.writer' object is not iterable) :

with open('ch4_adiabatic_C.4.1.csv', newline='') as csvfile:
    wr=csv.writer(csvfile, dialect='excel')
          
     for row in x:
         wr.writerow([row])
     csv.output.close() 

De ce fait, j'aimerais savoir si ce code suffit ou non (s'il est correct) et/ou si quelqu'un pourrait me proposer un code fonctionnel ou des pistes ?
Merci.
A voir également:

2 réponses

Furansujean Messages postés 58 Date d'inscription lundi 1 juillet 2019 Statut Membre Dernière intervention 12 septembre 2022 5
28 avril 2020 à 21:31
Bonsoir,

Si je comprends bien, vous souhaitez faire une transposition des lignes en colonnes.

Solution 1 :
Faire la transposition directement dans Excel :
https://support.microsoft.com/fr-fr/office/transposer-faire-pivoter-des-donn%c3%a9es-de-lignes-vers-des-colonnes-ou-inversement-3419f2e3-beab-4318-aae5-d0f862209744?ui=fr-fr&rs=fr-fr&ad=fr


Solution 2 :
Avec le module
pandas
:
import pandas as pd

dataFrame = pd.read_csv('mon_fichier.csv')
dataFrame_transposed = dataFrame.T
dataFrame_transposed.to_csv('mon_fichier_transpose.csv',header=False)


Solution 3 :
Avec le module
csv
:
import csv

#------------------------
# lecture du fichier
#------------------------
with open('mon_fichier.csv','r',newline='') as file_to_read:
    reader = csv.reader(file_to_read)
    lines_file_read = []
    
    # parcours des lignes grâce à l'itérateur reader
    for row in reader:
        # on sauvegarde les lignes
        lines_file_read.append(row)
        print(row)
        
    number_of_rows = len(lines_file_read)

#----------------------------------------------------------
# création d'un fichier csv qui transpose le fichier csv lu
#----------------------------------------------------------
with open('mon_fichier_transpose.csv','w',newline='') as file_to_create:
    writer = csv.writer(file_to_create)
    # on lit le nombre de champs/colonnes dans la 1ère ligne, par exemple 
    number_of_columns = len(lines_file_read[0])
    for col in range(number_of_columns):
        new_line_from_col = [lines_file_read[line][col] for line in range(number_of_rows)]
        writer.writerow(new_line_from_col)
1
Furansujean Messages postés 58 Date d'inscription lundi 1 juillet 2019 Statut Membre Dernière intervention 12 septembre 2022 5
10 mai 2020 à 01:00
Bonsoir,
Comme le sujet semble résolu, pouvez-vous le marquer comme "Résolu" ?
Merci.
0