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 :

[Python 3.X] Travailler sur des gros CSV


Sujet :

Python

  1. #1
    Membre averti
    Profil pro
    manager
    Inscrit en
    Juin 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : manager

    Informations forums :
    Inscription : Juin 2007
    Messages : 44
    Par défaut [Python 3.X] Travailler sur des gros CSV
    Bonjour,

    J'ai différents "dumps" au format csv sur lesquels je souhaite filtrer uniquement les enregistrements qui m'intéressent.
    C'est un fichier avec header du type :
    champ1;champ2; champ3;....champn (n=37)
    val1;val2; val3,....valn
    val1;val2; val3,....valn
    val1;val2; val3,....valn
    val1;val2; val3,....valn
    ...

    Selon ma (vieille) logique de programmation, j'avais l'habitude de travailler avec des "records", un par un. Globalement, sur les 20 millions d'enregistrement, je souhaite lire le fichier et n'enregistrer, dans un nouveau fichier, que les enregistrement répondant à deux ou trois règles simples du type :

    si champ3 <> champ25 alors
    si champ 17 == "nnn" alors
    enregistrer
    sinon
    enregistrement suivant
    fs
    fs

    J'ai regardé différentes options, je suis un peu perdu entre les listes, dictionnaires, etc, sachant que je traite les enregistrement un par un. Le fin du fin serait une boite de dialogue avec tkinter me permettant de sélectionner le fichier en entrée et celui en sortie.

    Que me conseilleriez vous, les seuls exemples de dictionnaires trouvés ou de traitement de fichiers csv consistant à tout traiter en mémoire ce qui n'est pas possible compte tenu du volume de données à traiter.
    J'ai regardé rapidement numpy et pandas, j'ai été plutôt perdu. Je suis aussi plutôt débutant ++ en python.

    par avance merci

    TGM

  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,

    Python dispose d'un module "csv" pour lire et écrire les fichiers csv => https://docs.python.org/3/library/csv.html#module-csv

    Quand on lit un fichier csv avec ce module, on le lit ligne par ligne et on récupère en mémoire la ligne lue sous forme d'une liste de champs: ligne=[champ1, champ2, ...].

    Il est alors facile de savoir si cette ligne doit être retenue (filtrage): if ligne[2]==xxx etc...

    pour l'enregistrer dans un fichier csv "résultat".

    A noter qu'en plus du filtrage, cette ligne peut être modifiée si on veut avant l'enregistrement.

    La doc du module csv donne des exemples simples d'utilisation. Si ça ne suffit pas, demande!

  3. #3
    Membre averti
    Profil pro
    manager
    Inscrit en
    Juin 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : manager

    Informations forums :
    Inscription : Juin 2007
    Messages : 44
    Par défaut [Python 3.X] Travailler sur des gros CSV
    Bonjour Tyrtamos,

    J'ai regardé la doc en question, mais je ne suis pas certain d'avoir tout compris, entre les listes, les dictionnaires et les tuples.
    je vais rester sur les listes "simples".

    j'essaie différents trucs. je reviendrai crier "au secours" prochainement
    Ou poster mes cochonneries si cela peut servir à quelqu'un.
    j'ai pas mal galéré dans le retraitement et la reconversion d'un fichier bibtex, ça ne pourra pas être pire

    merci

Discussions similaires

  1. quel logiciel pour faire du SQL sur des GROS fichiers bruts (csv)?
    Par flipo44 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 24/06/2010, 16h59
  2. Débutant travailler sur des images
    Par doud dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 15/08/2005, 15h47
  3. Travailler sur des sources distantes avec Eclipse
    Par El Saigneur dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 12/07/2004, 09h40
  4. Methode de programmation sur des gros projets
    Par dynobremo dans le forum EDI
    Réponses: 10
    Dernier message: 08/06/2004, 02h59
  5. Travailler sur des données qui doivent être triées
    Par haypo dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 19/07/2003, 17h13

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