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 :

Utiliser Python pour analyser,détecter et parser du csv


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Créateur d'entreprise
    Inscrit en
    Août 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Créateur d'entreprise
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2016
    Messages : 32
    Points : 16
    Points
    16
    Par défaut Utiliser Python pour analyser,détecter et parser du csv
    Bonjour à tous,
    Pour un projet perso, je cherche à utiliser Python pour travailler sur des fichiers csv avec des formats et des données complément hétérogènes, je m'explique :
    - plusieurs fichier csv en input, tous différents dans leur format, leur taille, l'ordre des colonnes, comportant tous les mêmes données mais avec des formats très différents. Par exemple la colonne des dates (sans toujours un titre de colonne) en "2021/03/01" ou "01-03-2021" , les colonnes dans des ordres différents etc...
    - Je voudrais utiliser Python pour analyser ces fichiers, "détecter " ces dates et les sortir en output sur un format tableau commun. Les formats sont différents, sans titre de colonne et sans ordre commun donc difficilement identifiable pour du parsing classique.
    Est-ce que Python est le bon outil ?
    Merci pour votre aide et vos avis et bonne journée
    Nico

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 239
    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 239
    Points : 36 692
    Points
    36 692
    Par défaut
    Salut,

    Citation Envoyé par Nico_projet Voir le message
    Est-ce que Python est le bon outil ?
    Python est un langage de programmation, donc un bon outil pour programmer çà ou autre chose...

    Mais programmer, c'est d'abord un travail de conception (à quoi va bien pouvoir ressembler le truc que j'ai besoin et comment le construire)... puis une fois qu'on a un plan qui tient la route, on peut partir à coder (en Python ou dans n'importe quel autre langage).

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

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2013
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 80
    Points : 119
    Points
    119
    Par défaut
    Hello,

    Le langage Python est un couteau suisse... vraiment... et pour répondre à votre question, oui, il existe des moyens simples et rapides de faire ce que vous dîtes ; néanmoins, si vous posez la question, vous êtes certainement "novice" en la matière et je vous conseille de commencer par les bases (cours Open Classroom par exemple).

    Enfin, renseignez vous sur le module "pandas" qui sera crucial dans votre projet ; il est muni (entre autres) des fonctions "pandas.read_csv()" et "pandas.read_excel" qui vous permettent de "lire et charger" une version "pythonisée" de vos fichiers en quelques lignes.

    Pour l'anecdote, je travaille en banque (côte salle de marché), et j'ai un avantage indéniable à tout faire en python par rapport à mes collègues qui bossent en VBA, voire directement sur les feuilles Excel...

    Bon courage !

  4. #4
    Membre à l'essai
    Homme Profil pro
    Créateur d'entreprise
    Inscrit en
    Août 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Créateur d'entreprise
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2016
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    Merci a tous les deux pour vos réponses.
    Quelle serait d'après vous la démarche à suivre pour correctement préparer le projet, avant de démarrer l'écriture du code, donc les réflexions et l'archi techniques ?
    Nico

  5. #5
    Membre régulier
    Inscrit en
    Juillet 2013
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 80
    Points : 119
    Points
    119
    Par défaut
    Quelle serait d'après vous la démarche à suivre pour correctement préparer le projet, avant de démarrer l'écriture du code, donc les réflexions et l'archi techniques ?
    Je n'ai pas de formation académique, ma réponse ne sera peut-être pas la meilleure, ne la prenez pas pour vérité absolue : je suis plutôt d'avis de me lancer directement dans l'écriture du code, par petit bout, comme indiqué dans mon message précédent.

    Premier exercice : téléchargez un fichier .csv (ou créez le), et essayer de "lire" le fichier via le module "pandas". ça devrait donner quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import pandas as pd
     
    filename = 'myFile.csv'
    df = pd.read_csv(filename)
    print(df)
    Si cela vous semble abstrait, on part d'assez loin et je vous invite à regarder les tutos sur Internet (que vous pouvez suivre step by step)

  6. #6
    Membre à l'essai
    Homme Profil pro
    Créateur d'entreprise
    Inscrit en
    Août 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Créateur d'entreprise
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2016
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    Merci Charlie, je vais essayer cet exemple.
    Bonne soirée. Nico

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 239
    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 239
    Points : 36 692
    Points
    36 692
    Par défaut
    Salut,

    Citation Envoyé par Nico_projet Voir le message
    Quelle serait d'après vous la démarche à suivre pour correctement préparer le projet, avant de démarrer l'écriture du code, donc les réflexions et l'archi techniques ?
    Partez d'exemples de vos fichiers CSV.

    Essayez d'imaginer les traitements à faire pour deviner la présence d'une entête (ou pas), le délimiteur, le type des différentes colonnes et le format des dates.
    Çà va vous donner une idée du problème à résoudre et de l'appétit pour aller chercher un peu sur Internet ce qui a déjà été fait dans ce domaine.

    note: vous pouvez aller regarder l'état de l'art directement mais sans avoir étudié un peu le problème par vous même, vous n'aurez pas encore assez de recul pour jauger les différentes solutions proposées.

    pandas ne devine pas le type de données qu'il y a dans les fichiers (et encore moins le format des dates).... Et si vous voulez juste lire un fichier CSV, le module csv suffit et sait deviner quelques unes des informations intéressantes.

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

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 631
    Points : 30 865
    Points
    30 865
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Ici un bon résumé des diverses problématiques d'un CSV...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Membre à l'essai
    Homme Profil pro
    Créateur d'entreprise
    Inscrit en
    Août 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Créateur d'entreprise
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2016
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    Bonsoir et merci pour vos réponses.
    - Wiztricks: j'ai fouillé un peu et comme tu l'indiques, Panda ne permet pas de trouver par exemple des dates sous différents formats, mais plutôt à travailler sur des formats classiques et les sortir en output différemment ou appliquer des règles, du parsing en fait ?
    Quelle serait a t'on avis la solution ? Un algo qui pourrait faire le job et plus "intelligent" ? Toujours sous Python ?
    Merci
    NT

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 239
    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 239
    Points : 36 692
    Points
    36 692
    Par défaut
    Salut,

    Citation Envoyé par Nico_projet Voir le message
    Quelle serait a t'on avis la solution ? Un algo qui pourrait faire le job et plus "intelligent" ? Toujours sous Python ?
    La solution, c'est du travail pour la construire voire s'inspirer (ou recopier) de ce qui a déjà été fait (mais je ne vais pas chercher à votre place).

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

  11. #11
    Membre à l'essai
    Homme Profil pro
    Créateur d'entreprise
    Inscrit en
    Août 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Créateur d'entreprise
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2016
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    Merci Wiztricks, je vais bosser dessus !

  12. #12
    Membre régulier
    Inscrit en
    Juillet 2013
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 80
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par Nico_projet Voir le message
    Bonsoir et merci pour vos réponses.
    - Wiztricks: j'ai fouillé un peu et comme tu l'indiques, Panda ne permet pas de trouver par exemple des dates sous différents formats, mais plutôt à travailler sur des formats classiques et les sortir en output différemment ou appliquer des règles, du parsing en fait ?
    Quelle serait a t'on avis la solution ? Un algo qui pourrait faire le job et plus "intelligent" ? Toujours sous Python ?
    Merci
    NT
    Je ne comprends pas, vous souhaitez travailler avec un dataframe contenant des dates sous différents formats !? Genre JJMMYYYY et JJ-MM-YY (par exemple) ? Le méthode read_excel permet de "parser" les colonnes que l'on sait être des dates mais si vraiment c'est hyper compliqué (du genre "2020, semaine 38, mardi") vous pouvez créer une fonction qui crée une nouvelle colonne avec le "bon" format puis remplacer l'ancienne par la nouvelle.

  13. #13
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 239
    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 239
    Points : 36 692
    Points
    36 692
    Par défaut
    Citation Envoyé par charliemtx Voir le message
    vous pouvez créer une fonction qui crée une nouvelle colonne avec le "bon" format puis remplacer l'ancienne par la nouvelle.
    Çà on sait faire...
    Mais le sujet de cette discussion est de deviner le format pour appliquer la bonne fonction...

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

  14. #14
    Membre à l'essai
    Homme Profil pro
    Créateur d'entreprise
    Inscrit en
    Août 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Créateur d'entreprise
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2016
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    Les fichiers comporteront des colonnes diverses dont une avec des dates, toutes ces colonnes seront présentées différemment avec pas toujours des titres de colonnes donc difficilement identifiables, et des formats de dates différents. L'outil développé devra identifier la seule colonne qui comprend ces dates et l'extraire, sans que je puisse lui indiquer laquelle donc "tout seul". L'objectif est donc d'avoir ce traitement en automatique, en allant chercher ce fichier, le traiter, et me fournir le résultat, toujours le même mais sur des fichiers différents.

  15. #15
    Membre régulier
    Inscrit en
    Juillet 2013
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 80
    Points : 119
    Points
    119
    Par défaut
    J’en doute mais je pose la question au cas où : est ce que les colonnes sont des «*floats*» à l’exception de la colonne à identifier qui contiendrait des «*strings*» ?
    Ce serait chouette que vous donniez un exemple de dataframe

  16. #16
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 678
    Points
    13 678
    Billets dans le blog
    1
    Par défaut
    En général, quand on a des fichiers variés, on a quelques formats qui reviennent. Ce n'est pas aléatoire. On a donc un algo pour lire chaque type de fichier, et pour chaque type de fichier, on connait le format de chaque colonne car on sait quelle colonne représente quelle donnée.

    Il y a quelque chose de plus important qui me chagrine : si on ne sait pas quelle colonne est la date, comment sait-on ce que sont les autres colonnes ? Si on ne sait pas ce que sont les autres colonnes, que va-t-on faire des données ?

    Je rejoins charliemtx : avoir quelques exemples permettrait de mieux comprendre la situation.

  17. #17
    Membre à l'essai
    Homme Profil pro
    Créateur d'entreprise
    Inscrit en
    Août 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Créateur d'entreprise
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2016
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    Bonsoir,
    En fait je pense que j'ai été trop loin : même si les fichiers seront différents, il y aura toujours un titre de colonne en "Date" ou "Date-Time" , ce qui devrait être reconnu par Panda je pense ? Je vais également essayer d'avoir le format du fichier avant le traitement pour gagner encore du temps, quand cela sera possible
    Je ne dois pas identifier que les colonnes avec "Date", mais également d'autres colonnes avec d'autres titres et cela devrait être possible je pense toujours avec Panda, pour les sortir dans un format bien précis avec lequel je pourrais alors allez plus loin dans mes traitements

Discussions similaires

  1. Utiliser JDT pour analyser un JAR hors projet
    Par hodac dans le forum Eclipse Platform
    Réponses: 4
    Dernier message: 10/05/2010, 18h26
  2. [Turbo Pascal] Peut-on utiliser GetPixel pour analyser une image sans l'afficher ?
    Par _Hope_ dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 01/01/2009, 23h07
  3. utiliser python pour utiliser XSLT
    Par DrDam dans le forum Général Python
    Réponses: 1
    Dernier message: 25/05/2008, 17h26
  4. Utiliser Python et PostGresql pour créer un site Web
    Par rvweb dans le forum Réseau/Web
    Réponses: 8
    Dernier message: 22/10/2006, 21h03
  5. comment utiliser Scanner pour parser un String?
    Par ricardvince dans le forum Langage
    Réponses: 4
    Dernier message: 03/10/2006, 15h15

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