IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Récupérer la première colonne de chacun de mes fichiers


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 8
    Par défaut Récupérer la première colonne de chacun de mes fichiers
    Bonsoir, j'ai regardé la doc sur les tableaux, les matrices, les listes, numpy, je ne trouve pas la réponse à ma question pourtant ça semble tout bête.

    J'ai deux programmes, dans le premier, je crée des fichiers sans extension. Ce sont des listes transformées en tableaux pour des calculs avec donc j'ai une vingtaine de fichiers contenant des tableaux à 2 D.

    dans mon second programme, je veux juste récupérer les données présentes dans ces fichiers et là, je bug.

    je peux afficher le contenu mais je n'arrive pas à extraire la première colonne de chacun des tableaux

    J'aimerais avoir la méthode pour récupérer la première colonne de chaque tableau pour créer un tableau unique de toutes ces premières colonnes.

    J'ai rangé mes fichiers dans des listes différentes. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     for trait in range (1,10):
     
                listefichiers = [] 
                chemin = '.\\valeur\\%s%d%d%dindice' % (nomf,adate[year],bdate[month],cdate[week])
                listefichiers .append(chemin)
    Juste une méthode m'aiderait.
    j'ai essayé de créer une liste vide, de faire une boucle mais je ne vois pas comment extraire la colonne 1 de chaque tableau de chacun des fichiers car il n'a pas l'air de voir que ce sont des tableaux dans les fichiers pourtant quand je lui demande de me les afficher, ce sont bien des tableaux.

    Merci beaucoup de m'aider.
    Nat

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Comment sont écrit ces fichier ?

    Tu peux en montrer un exemple ?

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 8
    Par défaut
    Salut,

    j'ai des listes, ex: "temp".
    je les ai transformées en tableau car j'ai fait des calculs avec certaines d'entre elles.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    data = np.array(temp) #transformation de la liste en tableau
    sortie = '.\\valeur\\%s%d%d%dindice' % (nomf,adate[year],bdate[month],cdate[week]) #nom du fichier de destination des données en sortie
    fid = open(sortie, 'w') #ouverture du fichier en écriture
    fid.write(str(data)) #écriture des données 
    fid.close #fermeture du fichier
    Nat

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 762
    Par défaut
    Salut,

    Essayez de comprendre ce qui se passe.
    On écrit fabrique un array et on le pousse dans un fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    >>> data = np.array([[1,2], [3,4]])
    >>> data
    array([[1, 2],
           [3, 4]])
    >>> print (data)
    [[1 2]
     [3 4]]
    >>> f = open('foo.txt', 'w')
    >>> f.write(data)
    >>> f.close()
    Si vous voulez "traiter" les données que vous avez écrites, il faut aller voir à quoi elles ressemblent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> f = open('foo.txt', 'r')
    >>> f.read()
    '\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00'
    C'est un fichier binaire, pas facile à traiter autrement qu'avec numpy.
    Il serait plus simple d'écrire le tableau sous forme CSV:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> np.savetxt('foo3.txt', data, delimiter=",")
    >>> f = open('foo3.txt')
    >>> f.read()
    '1.000000000000000000e+00,2.000000000000000000e+00\n3.000000000000000000e+00000000000000000e+00\n'
    >>>
    Dans ce cas, c'est un fichier texte où les lignes correspondent à celles du tableau et la valeur de chaque colonne est séparée par ",".

    Tout dépend de ce que vous voulez faire...mais ce ne sera pas le même travail pour lire et décoder.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    C'est pas très pratique ce que tu fais là.

    Si je le reproduis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Python 2.7.3 (default, Dec 18 2014, 19:03:52) 
    [GCC 4.6.3] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import numpy
    >>> a = [['bgf', 'jhy', 'lk'], ['lkn', 'pm', 'olk'], ['vc', 'bgf', 'ldf']]
    >>> arr = numpy.array(a)
    >>> f = open('array', 'w')
    >>> f.write(str(a))
    >>> f.close()
    j'obtiens ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    >>> f = open('array', 'r')
    >>> l = f.readlines()
    >>> f.close()
    >>> print l
    ["[['bgf', 'jhy', 'lk'], ['lkn', 'pm', 'olk'], ['vc', 'bgf', 'ldf']]"]
    Je n'ai pas envie de parser ces infos, faisons quelque chose de plus adéquat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    >>> with open('array', 'w') as outf:
    ...     for l in arr:
    ...             outf.write(", ".join(l) + "\n")
    ... 
    >>> with open('array', 'r') as inf:
    >>>     ls = inf.readlines()
    >>> for l in ls:
    ...     print l.strip()
    ...     print l.split(', ')[0] # 1ere colonne
    ... 
    bgf, jhy, lk
    bgf
    lkn, pm, olk
    lkn
    vc, bgf, ldf
    vc
    Maintenant avec le module csv
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    >>> import csv
    >>> with open('array.csv', 'w') as outf:
    ...     writer = csv.writer(outf, delimiter=' ')
    ...     for a in arr:
    ...             writer.writerow(a)
    ... 
    >>> with open('array.csv', 'r') as inf:
    ...     reader = csv.reader(inf, delimiter=' ')
    ...     for row in reader:
    ...             print row
    ... 
    ['bgf', 'jhy', 'lk']
    ['lkn', 'pm', 'olk']
    ['vc', 'bgf', 'ldf']
    >>>
    Plus propre, non ?

  6. #6
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut wiztricks,

    C'est vrai qu'il convient de signaler que les valeurs numériques seront récupérées en strings

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    >>> arr = numpy.array([[5, 4, 87], [64, 2, 91]] )
    >>> with open('array.csv', 'w') as outf:
    ...     writer = csv.writer(outf, delimiter=' ')
    ...     for a in arr:
    ...             writer.writerow(a)
    ... 
    >>> with open('array.csv', 'r') as inf:
    ...     reader = csv.reader(inf, delimiter=' ')
    ...     for row in reader:
    ...             print row
    ... 
    ['5', '4', '87']
    ['64', '2', '91']

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 762
    Par défaut
    Salut,

    Citation Envoyé par VinsS Voir le message
    Plus propre, non ?
    On peut passer par le module CSV de Python ou utiliser les fonctions internes du module numpy.
    Qu'est ce qui est le plus adapté/simple dépend de ce qu'on veut faire... et çà c'est plus ou moins confus (et dans la tête du PO).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 8
    Par défaut
    merci beaucoup à vous deux !

    J'essaierai ce soir car je n'ai aucun module python sur le PC actuel pour tester.

    Bonne journée,
    Nat

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/02/2014, 14h43
  2. Réponses: 12
    Dernier message: 21/05/2010, 13h36
  3. [JXTable]Récupérer valeur de colonne invisible ?
    Par Baptiste Wicht dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 02/07/2007, 21h22
  4. [JTable] Insertion d'images dans la première colonne
    Par cocolepelo dans le forum Composants
    Réponses: 2
    Dernier message: 29/11/2005, 15h17
  5. where sur la première colonne
    Par r-zo dans le forum Requêtes
    Réponses: 8
    Dernier message: 28/07/2003, 09h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo