Lire et écrire des CSV en Python

salahoum Messages postés 26 Statut Membre -  
salahoum Messages postés 26 Statut Membre -
Bonjour,

'essaie de lire un fichier csv en python
mais pas seulement afficher mais du gestionnaire comme une table
J'ai trouvé beaucoup de vidéos qui lisent un fichier csv mais uniquement des chiffres côte à côte
J'ai trouvé une vidéo qui parle de Panda Panda et d'Anaconda et je n'ai pas compris la différence entre le python normal et les deux
et comment je peux afficher une table qui contient des valeurs extait depuis csv

Configuration: Windows / Chrome 71.0.3578.98

2 réponses

  1. Yoan Messages postés 11905 Statut Modérateur 2 356
     
    Pandas est une bibliothèque Python pour faire du big data.

    Anaconda est une environnement qui simplifie l'installation des paquets Python, mais quie st incompatible avec votre Python classique. C'est pourquoi vous pouvez installer Pandas sur votre Python classique mais aussi Pandas sur Anaconda.

    Pour le reste de votre question, il va falloir être plus précis sur ce que veut dire "mais pas seulement afficher mais du gestionnaire comme une table". Je comprends que vous ne voulez pas seulement lire mais aussi écrire votre CSV. Par contre le terme "table" est confus ici, ça veut dire quoi "comme une table" ? Parlez-vous d'une table relationnelle (utilisable avec SQL) ? Parlez-vous d'une fenêtre graphique qui vous permet d'éditer votre fichier CSV (ce que l'on appelle communément un tableur Microsoft Excel ou Libre Office Calc en fait) ?
    0
    1. salahoum Messages postés 26 Statut Membre
       
      Dans plusieurs video ils affichent un fichier csv dans python comme
      Nombre;date;pays;salaire;2;01/02;france;1394;3;01/03;france;2873
      Mon but est affiche dqns python comme tableau normale
      Nombre date pays salaire
      2. 01/02. France 3453
      0
    2. Yoan Messages postés 11905 Statut Modérateur 2 356 > salahoum Messages postés 26 Statut Membre
       
      Mais afficher où ?
      Dans une fenêtre graphique ? Dans un terminal en ligne de commande ?
      0
    3. salahoum Messages postés 26 Statut Membre > Yoan Messages postés 11905 Statut Modérateur
       
      je suis débutant donc je sais meme pas la différence entre elles
      en plus j'ai pas encore choisi seulement je cherche les posibilité
      0
    4. Yoan Messages postés 11905 Statut Modérateur 2 356
       
      En reprenant l'exemple qui est donné dans la documentation https://docs.python.org/2/library/csv.html vous devriez arriver à faire ce que vous souhaitez en ligne de commande.

      Le morceau de code de la documentation affiche chaque ligne du CSV une à une séparées par des virugles. Pour aligner le texte en colonnes plutôt que de les séparer par des virgules, vous pouvez remplacer la virgule par 2 tabulations qui s'écrivent "\t\t" en Python, ce qui donne quelque chose du genre :
      >>> import csv
      >>> with open('eggs.csv', 'rb') as csvfile:
      ...     spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
      ...     for row in spamreader:
      ...         print '\t\t '.join(row)
      Spam, Spam, Spam, Spam, Spam, Baked Beans
      Spam, Lovely Spam, Wonderful Spam


      "join()" est une fonction magique qui prend chaque élément de la liste que vous lui passez en paramètre et les met les uns à la suite des autres en les séparant par le séparateur demandé, ici nous avons demandé le séparateur '\t\t'.
      0
    5. salahoum Messages postés 26 Statut Membre > Yoan Messages postés 11905 Statut Modérateur
       
      probleme
      0
  2. salahoum Messages postés 26 Statut Membre
     
    j'ai expliqué mon problème mais l'idée n'est pas arrivée
    je réexplique simplement
    les vidéo dans YouTube ils lisent les donnéés depuis le fichier csv comme :

    nom;age;numero;date;salah;22;1;26/01;ali;23;2;26/01;ranard;30;3;26/01

    moi j'ai besoin de le afficher comme :

    nom age numero date
    salah 22 1 26/01
    ali 23 2 26/01
    ranard 30 3 26/01
    0
    1. quent217 Messages postés 424 Statut Membre 348
       
      Bonjour,
      Dans ton exemple, tu utilise le même séparateur pour les espaces et les retours à la ligne, il faut donc modifier ton exemple avec des séparateurs différents.
      Ou alors il faut connaître le nombre de colonnes à l'avance pour faire ce que tu veux faire.
      Dans ce cas tu peux faire quelque chose comme ça :
      nbColumns = 4
      with open("test.csv","r") as csvfile:
          items = csvfile.read().split(";")
          for i in range(0,len(items),nbColumns):
              print(' '.join(items[i:i+4]))
              # ou la ligne suivante pour avoir des colonnes alignées
              # print('\t\t '.join(items[i:i+4]))
      0
      1. salahoum Messages postés 26 Statut Membre > quent217 Messages postés 424 Statut Membre
         
        le problème est que mon fichier est contient 1447 lignes et 43 colonnes
        0