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

MATLAB Discussion :

Readtable importe des données numériques comme chaine de caractères


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2017
    Messages : 18
    Points : 9
    Points
    9
    Par défaut Readtable importe des données numériques comme chaine de caractères
    Bonjour à tous,

    je sollicite à nouveau votre aide pour un problème un peu déconcertant.
    N'ayant pas trouver d'aide tangible sur le forum ou les internets mondiaux, je pose la question ouverte ici. N'hésitez pas à déplacer le fil de discussion si celui-ci n'est pas posté au bon endroit.
    J'utilise actuellement un script permettant de faire l'import de données depuis des fichiers Excel pour ensuite en faire l'analyse.
    Pour ce faire, j'utilise la fonction readtable. Simple, efficace et robuste.
    Description du problème :
    Des données numériques sont importées comme chaines de caractères, faisant planté la suite du script.
    J'ai d'abord pensé à une mise en forme des cellules sous Excel incorrecte. J'ai tout essayé, rien n'y fait.
    Des données numériques sont aléatoirement importées comme chaine de caractères.
    Quelqu'un a-t-il déjà rencontré le problème ?

    Merci de votre aide,

    Bien cordialement,

    PierreCVVB

  2. #2
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 883
    Points : 3 431
    Points
    3 431
    Par défaut
    salut

    peut être as tu des cellules qui contiennent une chaine de caractère, par exemple '-' pour signifier que tu n'as pas de valeur
    dans ce cas, il faut exclure cette chaine avec TreatAsEmpty
    sinon il importe toute la colonne en chaine de caractères

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2017
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    Merci pour votre réactivité !
    En effet, j'ai bien pensé à des caractères "spéciaux" non pris en charge, mais rien de tout cela ne change la donne.
    J'ai épuré le problème et vous présente la difficulté rencontrée :

    Je fais un importdata manuel via l'utilitaire Matlab

    Nom : Capture.PNG
Affichages : 185
Taille : 56,4 Ko

    Jusque ici, seuls des valeurs numériques sont identifiées.
    Lorsque je créé une variable avec cet import, voici le résultat :

    Nom : Capture2.PNG
Affichages : 182
Taille : 39,6 Ko

    Des valeurs de type "string" sont identifiées, à partir d'une certaine colonne (surlignées en jaune pour l'exemple).
    Je vous joins également l'Excel.

    Bien cordialement,

    Pierrecvvb
    Fichiers attachés Fichiers attachés
    • Type de fichier : xlsx A.xlsx (13,0 Ko, 35 affichages)

  4. #4
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 883
    Points : 3 431
    Points
    3 431
    Par défaut
    ton problème c'est que tu as une ligne d'entête qui sert à rien et qui t'emmerde
    tu peux l'enlever de ton fichier
    ou faire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    toto = readtable('A.xlsx','range','2:28')

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2017
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Merci pour la réponse.
    En effet je viens de voir avec un import data manuel que certaine colonnes sont détectées comme étant du texte !
    Je ne comprends pas pourquoi. Même en spécifiant la plage des données, si une colonne ne comporte pas assez de double, elle passe automatiquement en texte.
    J'ai donc "triché", en spécifiant le type de variable.

    L'initial,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    opts.VariableNames = ["VarName1", "VarName2", "VarName3", "VarName4", "Test"];
    opts.VariableTypes = ["double", "double", "double", "string", "string"];
    devient,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    opts.VariableNames = ["VarName1", "VarName2", "VarName3", "VarName4", "Test"];
    opts.VariableTypes = ["double", "double", "double", "double", "double"];
    Cela fonctionne ainsi mais n'explique pas pourquoi cette mise en défaut en texte plutôt qu'en double.

    Merci pour tes réponses. Je m'en sors ainsi même si cela n'est pas optimal.

  6. #6
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 883
    Points : 3 431
    Points
    3 431
    Par défaut
    Citation Envoyé par pierrecvvb Voir le message
    Merci pour la réponse.
    Cela fonctionne ainsi mais n'explique pas pourquoi cette mise en défaut en texte plutôt qu'en double.
    probablement parce qu'il y a plus de cellule vides que de cellules contenant un chiffre

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/08/2008, 10h58
  2. Importer des données grace a des *.cvs dans MySQL
    Par Mic0001 dans le forum Installation
    Réponses: 3
    Dernier message: 05/01/2005, 20h26
  3. [CR]Importer des données d'une feuille excel
    Par rolan dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 17/12/2004, 23h32
  4. Réponses: 3
    Dernier message: 13/12/2004, 14h54
  5. Importer des données dans sql server avec DELPHI ???
    Par moutanakid dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/08/2004, 18h22

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