Importer fichier tableur dans Python
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 48

Importer fichier tableur dans Python



  1. #1
    Lynx83

    Importer fichier tableur dans Python


    ------

    Bonjour à tous,


    Je souhaite importer et stocker les données d'un tableur (sur regressi, OpenOffice, avistep initialement, ou nimporte quoi...) sur Python pour pouvoir les manipuler.

    J'ai 7 colonnes mais des milliers de lignes donc pas possible de copier/coller

    J'aimerais les stocker dans par exemple une liste (double liste) ou une matrice ou ...?

    Un prof m'a conseillé de convertir d'abord mon fichier en format .csv (c'est fait) puis de regarder sur le net comment importer ça sur python, avec le module csv; mais j'ai pas réussi... les programmes que j'ai trouvé ne marchent pas

    Quelqu'un peut il m'aider ? (je ne suis pas très fort en Python)

    Merci

    -----

  2. #2
    CM63

    Re : Importer fichier tableur dans Python

    Bonjour,

    En effet il suffit de faire un split de chaque ligne lue, avec comme caractère séparateur (du split) le caractère séparateur (du csv). Fait un exemple avec un fichier Excel de 2 lignes et 3 colonnes. Il faut prendre comme caractère séparateur lors de l'export en format csv un caractère qui ne soit pas présent dans le fichier Excel.

    A plus

  3. #3
    Lynx83

    Re : Importer fichier tableur dans Python

    Bonjour,

    Je ne comprends pas en fait, j'ai vraiment un niveau archi débutant en info, j'ai cherché sur google ce qu'est un split, "un truc qui sépare une colonne en 2?"

    Quel interêt? j'ai déjà mes colonnes bien séparées. En fait quand je mets en format csv mon tableur il me demande avec quoi séparer (je met des virgules par ex.), j'ai mon fichier .csv

    Puis après quand je tente de l'importer avec cette fonction trouvée sur internet (ou d'autres j'ai tout testé):

    import csv
    with open('some.csv', 'rb') as f:
    reader = csv.reader(f)
    for row in reader:
    print row


    J'ai entres autres ce message d'erreur: FileNotFoundError...

    Je fais quoi (en language compréhensible pour la bouse en info que je suis svp? Il parait que c'est simple)

  4. #4
    CM63

    Re : Importer fichier tableur dans Python

    Bonjour,

    Je ne connais pas ce module csv que tu as importé au début. A ta place je lirais le fichier ligne par ligne, et pour chaque ligne tu fais un split en utilisant le même caractère séparateur que lors de l'export csv depuis le tableur.
    La fonction split permet de découper une chaîne de caractères en mots, elle va repérer les mots grâce à un séparateur. Par exemple

    >>> a="aa/bb/cc"
    >>> a.split("/")
    ['aa', 'bb', 'cc']

    Je te conseille d'utiliser le ";" comme séparateur et non pas la virgule, car la virgule est souvent utilisée dans le texte, alors que le ";" on va dire on peut s'en passer. Sino il faut prendre impérativement un caractère non utilisé dans le fichier de départ.

    A plus

  5. A voir en vidéo sur Futura
  6. #5
    Lynx83

    Re : Importer fichier tableur dans Python

    Ah ok merci ! Je crois que j'ai compris !

    Simplement sachant que j'ai des milliers de lignes et 7 colonnes, j'aimerais plutôt copier/coller dans Python mes colonnes que mes lignes, il faudrait que je les échange quoi... Ca doit pas être très dur ça. Je vais chercher comment faire...

  7. #6
    cherbe

    Re : Importer fichier tableur dans Python

    Citation Envoyé par Lynx83 Voir le message
    Ah ok merci ! Je crois que j'ai compris !

    Simplement sachant que j'ai des milliers de lignes et 7 colonnes, j'aimerais plutôt copier/coller dans Python mes colonnes que mes lignes, il faudrait que je les échange quoi... Ca doit pas être très dur ça. Je vais chercher comment faire...
    bonsoir
    Python est un langage de programmation et non un logiciel comme Open Office. On ne l'utilise pas de la même manière donc les copier-coller, tu oublie !
    Python sait lire un fichier texte ou ASCII et un fichier CSV est un fichier ASCII ayant la particularité de séparer les colonnes par un caractère, généralement un point-virgule.
    Sachant cela, tu écris un bout de code sous forme de boucle qui va lire chaque ligne du fichier, éclater cette ligne en autant de chaines de caractères que de point-virgule.
    Dans cette boucle, tu stocke ces chaines dans un tableau ou array.
    ensuite, tu manipule les données du tableau comme tu en as envie !
    En cherchant un peu sur le net, tu vas trouver des tonnes d'exemples de lecture de fichier ASCII avec Python.

  8. #7
    Lynx83

    Re : Importer fichier tableur dans Python

    Ok, j'ai réussi à transposer (le seul hic c'est que mon tableur étant limité à 1024 colonnes je vais devoir le faire en plusieurs fois...)

    Et j'ai réussi à transformer ça en liste sur Python grâce à toi. Merci

    edit Cherbe: J'ai réussi en copiant collant dans Python ^^ c'est peut-être bourrin et pas très clean mais ça m'ira... merci quand-même
    Dernière modification par Lynx83 ; 05/12/2015 à 19h01.

  9. #8
    Lynx83

    Re : Importer fichier tableur dans Python

    Ceci dit comme il va falloir à un moment que je retransforme des listes python en colonnes sur LibreOffice il faudra bien que j'apprenne à utiliser le module CSV qui importe/exporte...

    Je comprends bien ton explication Cherbe, mais les codes que je trouve sur internet ne marchent pas :/ je dois sans doute mal les utiliser...

    En attendant j'ai déjà une bonne solution provisoire donc merci.

  10. #9
    cherbe

    Re : Importer fichier tableur dans Python

    Citation Envoyé par Lynx83 Voir le message
    Ceci dit comme il va falloir à un moment que je retransforme des listes python en colonnes sur LibreOffice
    Tu fais la manip inverse en créant un fichier CSV à partir de ton tableau. OO ouvrira ce fichier comme si il venait d'un tableur.
    Citation Envoyé par Lynx83 Voir le message
    Je comprends bien ton explication Cherbe, mais les codes que je trouve sur internet ne marchent pas :/ je dois sans doute mal les utiliser...
    Je ne suis pas un spécialise de Python que je connais mal mais si tu nous donnes ton code, il y aura bien quelqu'un pour le débuger

  11. #10
    Lynx83

    Re : Importer fichier tableur dans Python

    Ce lui ci par exemple:

    Code:
    import csv
    with open('truc.csv', 'rb') as f:
    reader = csv.reader(f)
    for row in reader:
    print row


    ou celui là

    Code:
    import csv   
    import sys      
    
    f = open(sys.argv[1], 'rb') 
    try:
        reader = csv.reader(f)  
        for row in reader:  
            print row   
    finally:
        f.close()
    Dernière modification par JPL ; 06/12/2015 à 16h23. Motif: Ajout de la balise Code (#) pour garder l'indentation

  12. #11
    cherbe

    Re : Importer fichier tableur dans Python

    Ce sont vraisemblablement des copier-coller trouvés sur le net qui ne peuvent pas fonctionner en l'état.
    Il manque, entre autres choses, un chdir à moins que le fichier CSV soit dans le répertoire Python ?
    Ensuite, il n'y a aucun traitement des données qui sont simplement affichées.
    En résumé, tu n'as strictement rien écrit et tu attends qu'on te fournisse un code prêt à fonctionner pour pas un rond, je me trompe ?

  13. #12
    Lynx83

    Re : Importer fichier tableur dans Python

    Oui c'est un copié collé... je pensais que c'était simple (genre que vous me corrigiez juste une ligne)... tu sembles dire que c'est compliqué à faire (comme j'ai dis je suis novice en Python) donc laissez tomber

    Sinon pour répondre: je sais pas ce qu'est un chdir, non il n'est pas dans le répertoire Python
    Dernière modification par Lynx83 ; 06/12/2015 à 15h21.

  14. #13
    cherbe

    Re : Importer fichier tableur dans Python

    Citation Envoyé par Lynx83 Voir le message
    Oui c'est un copié collé... je pensais que c'était simple (genre que vous me corrigiez juste une ligne)... tu sembles dire que c'est compliqué à faire (comme j'ai dis je suis novice en Python) donc laissez tomber
    Ce n'est pas compliqué mais il y a un minimum de choses à faire soit même. L'ordinateur est une machine totalement stupide à qui il faut donner des instructions. Il ne fait rien de sa propre initiative. Même ce qui parait évident à notre entendement ne sera pas fait si l'ordre n'est pas donné (écrit).
    Je pense que tu n'as pas encore bien compris la différence entre un langage de programmation et un logiciel élaboré comme un tableur.
    Le tableur contient des routines utilisables en quelques clics qui ont été réalisées par les programmeurs.
    Dans un langage comme Python, tu dois tout faire toi même et ça demande la saisie de pas mal d'instructions.
    Tu devras notamment écrire de A à Z la routine d'ouverture de fichier (et non cliquer sur une icône)
    Tu devras écrire les instructions pour afficher si nécessaire les lignes du fichier (le tableur fait ça sans qu'on lui demande)
    Tu devras écrire les instructions pour travailler sur les données.
    Tu devras écrire les instructions pour sauvegarder ton travail
    Citation Envoyé par Lynx83 Voir le message
    Sinon pour répondre: je sais pas ce qu'est un chdir, non il n'est pas dans le répertoire Python
    [chdir pour change directory, autrement dit, change de dossier, va te placer là où est stocké le fichier csv.
    Dernière modification par cherbe ; 06/12/2015 à 15h51.

  15. #14
    Lynx83

    Re : Importer fichier tableur dans Python

    Ok, je pense avoir compris ça. Je vais me débrouiller avec ma méthode bourrin pour le moment, et j'attendrais de revoir mon prof d'info pour qu'il m'explique comment faire mon code c'est plus simple...

    Merci en tout cas pour l'aide.

  16. #15
    Lynx83

    Re : Importer fichier tableur dans Python

    Code:
    import csv
    
    
    
    def exportCSV(nomFichier,a,b,aNom,bNom):
        with open(nomFichier,"w") as fichier:
            writer=csv.writer(fichier,delimiter=";",lineterminator='\n')
            writer.writerow([aNom,bNom])
            for i in range(0,len(a)):
                writer.writerow([a[i],b[i]])
    
    
    def importCSV(nomfichier):
        x=[]
        y=[]
        R=[]
        omegapoint=[]
        with open(nomfichier,"r") as fichier:
            reader=csv.reader(fichier,delimiter=";")
            for row in reader:
                x.append(row[0])
                y.append(row[1])
                R.append(row[2])
        return(x,y,R)

    J'ai réussi ! Donc je mets mes codes si ça peut intéresser quelqu'un, sinon on peut archiver. Merci.
    Dernière modification par JPL ; 07/12/2015 à 22h22. Motif: Remplacement de la balise Quote par Code

  17. #16
    CM63

    Re : Importer fichier tableur dans Python

    Bonjour,

    Ben c'est bien. Comment ça "sinon" ?

  18. #17
    Lynx83

    Re : Importer fichier tableur dans Python

    Bonjour,

    J'aurais une nouvelle question très simple:

    Mon tableau importé est du type ['1,0001','2,0002',...] autrement dit les caractères (nombres) sont du type str (chaîne de caractère), et pour pouvoir les utiliser dans mes fonctions j'aurais besoin de les transformer en float. Comment puis-je faire?

  19. #18
    cherbe

    Re : Importer fichier tableur dans Python

    Bonjour
    Citation Envoyé par Lynx83 Voir le message
    Bonjour,
    J'aurais une nouvelle question très simple:
    Mon tableau importé est du type ['1,0001','2,0002',...] autrement dit les caractères (nombres) sont du type str (chaîne de caractère)
    Normal puisque le séparateur décimal est une virgule. Il faut d'abord la remplacer par un point.
    Quand ce sera fait, le programme va certainement les interpréter comme des nombres. Si ce n'est pas le cas, il suffit généralement de les multiplier par 1.

  20. #19
    Lynx83

    Re : Importer fichier tableur dans Python

    Ah c'est tout simple, merci.

    Mais je ne sais pas trop comment faire cela, je vais chercher...

  21. #20
    cherbe

    Re : Importer fichier tableur dans Python

    Citation Envoyé par Lynx83 Voir le message
    Ah c'est tout simple, merci.
    Mais je ne sais pas trop comment faire cela, je vais chercher...
    Tu ouvres le fichier avec un éditeur de texte et tu fais un rechercher/remplacer !

  22. #21
    JPL
    Responsable des forums

    Re : Importer fichier tableur dans Python

    En faisant attention car il utilise aussi la virgule comme séparateur des items ! Je commencerais donc par remplacer ',' par ';' avant de remplacer les virgules décimales.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  23. #22
    Lynx83

    Re : Importer fichier tableur dans Python

    Citation Envoyé par cherbe Voir le message
    Tu ouvres le fichier avec un éditeur de texte et tu fais un rechercher/remplacer !
    En faisant celà je n'arrive plus à enregistrer mon fichier sous le format .csv bizarrement, et donc à l'importer sur Python

  24. #23
    JPL
    Responsable des forums

    Re : Importer fichier tableur dans Python

    C'est étrange les csv sont des fichiers textes. Qu'est-ce qui t’empêche de l'enregistrer ? Je suppose que tu veux dire autre chose, explique-toi mieux.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  25. #24
    cherbe

    Re : Importer fichier tableur dans Python

    Citation Envoyé par Lynx83 Voir le message
    En faisant celà je n'arrive plus à enregistrer mon fichier sous le format .csv bizarrement, et donc à l'importer sur Python
    Tu l'as modifié avec quel logiciel ?

  26. #25
    Lynx83

    Re : Importer fichier tableur dans Python

    Avec Wordpad et LibreOffice écriture, bon et si je le fait directement à la base (sur regressi), en important mon même fichier .csv avec des points à la place des virgules

    j'obtient le code d'erreur Python:

    with open(nomfichier,"r") as fichier:
    FileNotFoundError: [Errno 2] No such file or directory: 'test.csv'

    Ca marchait avec l'ancien... GRR

  27. #26
    Lynx83

    Re : Importer fichier tableur dans Python

    Citation Envoyé par JPL Voir le message
    C'est étrange les csv sont des fichiers textes. Qu'est-ce qui t’empêche de l'enregistrer ? Je suppose que tu veux dire autre chose, explique-toi mieux.
    Depuis un logiciel de texte (wordpad par ex) pas possible d'enregistrer sous .csv

  28. #27
    JPL
    Responsable des forums

    Re : Importer fichier tableur dans Python

    Il faut utiliser le bloc-notes ou, plus évolué Notepad++. Il ne faut jamais utiliser un traitement de texte pour des fichiers textes. Les csv sont des fichiers .txt dont l'extension a été replacée par .csv.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  29. #28
    Lynx83

    Re : Importer fichier tableur dans Python

    Ah oui c'est vrai... j'avais utilisé le bloc notes, mais ça ne marche toujours pas. Toujours ce même code d'erreur: ne trouve pas le fichier :/

  30. #29
    JPL
    Responsable des forums

    Re : Importer fichier tableur dans Python

    Tu as pensé à mettre l'extension .csv ? N'oublie pas que Windows cachant par défaut les extensions les plus connues, ton fichier xxxx.csv a peut-être été enregistré comme xxxx.csv.txt sauf que tu ne verras pas le .txt si tu n'as pas modifié le réglage par défaut de Windows.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  31. #30
    Lynx83

    Re : Importer fichier tableur dans Python

    Pas sur que ce soit le problème car je n'arrive même plus à importer ce que j'arrivais avant
    y.append(row[2])
    IndexError: list index out of range
    >>>

    Que veut dire ce message svp?

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. exécution d'un fichier python rattaché à un fichier kivy
    Par roadbecri dans le forum Programmation et langages, Algorithmique
    Réponses: 7
    Dernier message: 24/11/2014, 14h43
  2. Python : pas moyen d'importer tkinter
    Par helium0xFF dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 10/09/2012, 13h26
  3. Rediriger la sortie de os.system dans un fichier .text en Python
    Par invite5894bdd9 dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 13/06/2012, 17h46
  4. Python - Peut-on lire un fichier et envoyer les lignes dans une liste au lieu d'une string ?
    Par invitef702cf04 dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 21/02/2012, 12h40
  5. comment importer un fichier dans kcam 4
    Par invite7c424786 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 27/06/2008, 05h53