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

Calcul scientifique Python Discussion :

Importer txt pour numpy


Sujet :

Calcul scientifique Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 13
    Par défaut Importer txt pour numpy
    Bonjour, je souhaite importer un fichier txt qui a le format suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    18/03/2011 12:39:18	MA	20,0	50,0	19,7	53,1
    18/03/2011 12:39:19	MA	20,0	50,0	19,7	53,1
    18/03/2011 12:39:20	MA	20,0	50,0	19,7	53,3
    La commande data=csv.reader(open(file, 'rb'), delimiter=' ') ne renvoi pas d'erreur, mais je n'arrive pas à accéder au contenu. L'objectif étant de pouvoir tracer ces données avec matplotlib et faire des calculs avec numpy.

    Pouvez vous m'aider ?

    Merci

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Si la ligne est aussi simple que ça, un simple .split devrait faire l'affaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    x = "18/03/2011 12:39:18 MA 20,0 50,0 19,7 53,1"
    print x.split(' ')
    ['18/03/2011', '12:39:18', 'MA', '20,0', '50,0', '19,7', '53,1']
    Bien entendu, tous les éléments sont des chaines de caractères. Pour accéder aux nombres flottants, il faudra d'abord remplacer la virgule par un point décimal.

    Tyrtamos

  3. #3
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 13
    Par défaut Conversion string avec ',' en float
    Comment peux t-on convertir les dernières valeur en float une fois ce split exécuté ? (Je souhaite éviter les boucles car les fichiers sont très long, ce qui engendrerai de long temps de calcul).
    Merci.

  4. #4
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Salut,

    Par un simple cast

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    text = "123.456"
    value = float(text)
    print type(value), value

  5. #5
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 13
    Par défaut
    Les valeurs en string sont de la forme '50,9' stockées dans un array (array(['50,9', '50,0', '49,9', ..., '91,9', '91,9', '91,9'],dtype='|S19'))...

  6. #6
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    data = ['18/03/2011', '12:39:18', 'MA', '20,0', '50,0', '19,7', '53,1']
    for word in data:
        try:
            value = float(word.replace(',', '.'))
        except:
            value = word
        print type(value), value

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/10/2009, 13h32
  2. [SQLS2K5]Pb Taille d'un .txt pour importation
    Par gusrom86 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 13/08/2008, 16h06
  3. Import XML pour mise à jour de données
    Par stylee307 dans le forum Access
    Réponses: 2
    Dernier message: 20/09/2006, 21h29
  4. [Importation] pbm pour importer un ".csv"
    Par javazer dans le forum Outils
    Réponses: 8
    Dernier message: 11/04/2006, 16h06

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