Forum Linux.général quel outil pour traiter une base de données moyenne

Posté par  (site web personnel, Mastodon) . Licence CC By‑SA.
3
9
juil.
2018

Salut à tous,

Je me retrouve au boulot à traiter et faire ressortir des informations d'un export de bdd. Le fichier n'est pas énorme, il contient quelques centaines de lignes. Pour l'instant je travaille sur un fichier .xls. Bien sûr je me retrouve très rapidement à réaliser des opérations très répétitives, car Excel ou Calc ne sont pas adaptés pour ce travail. Les opérations à faire sont par exemple:

  • Compter le nombre d'occurences
  • Supprimer les occurences uniques
  • Séparer du contenu selon un symbole séparateur

De quel outil je devrais m'emparer pour réaliser ces opérations? Via python, perl? Sans formation informatique, je connais superficiellement du shell et quelques bouts de programmation. Qu'est-ce qu'on utilise pour traiter des datas et en faire ressortir les informations que l'on veut?

10.07: Wouah! Merci pour ces réponses diverses et argumentées. Je dois analyser tout cela.

  • # SQL

    Posté par  (Mastodon) . Évalué à 9.

    Salut,

    SQL est fait pour ça… Ré-importe les données dans une base SQLite et fait des requêtes dessus… enfin, si c'est adapté !

    • Compter des occurences :
    SELECT COUNT(*) FROM ... WHERE ...;
    
    • Supprimer des occurences uniques :
    DELETE FROM ... WHERE id IN (SELECT id, COUNT(*) FROM ... GROUP BY ... );
    
    • Séparer des données

    … Je te laisse chercher …

    Courage !

    • [^] # Re: SQL

      Posté par  (site web personnel) . Évalué à 1.

      Je plussoie !

      Je le fais depuis peu aussi en ligne de commande dans SQLite, ça facilite la vie !

      Les commandes ".mode csv" et ".import FILE TABLE" permettent d'importer facilement puis de profiter de la puissance du langage de requête SQL.

  • # Ou bien pandas (outil python)

    Posté par  (site web personnel) . Évalué à 3.

    Pandas (Python Data Analysis Library) est taillé aussi pour ce genre de choses et te permet d'automatiser (mais la piste SQL est à considérer). Voir selon tes connaissances / habitudes / autorisation d'installation d'outils…

    Python 3 - Apprendre à programmer dans l'écosystème Python → https://www.dunod.com/EAN/9782100809141

    • [^] # Re: Ou bien pandas (outil python)

      Posté par  . Évalué à 3.

      Panda, c'est quand meme un peu compliqué. Très difficile d'anticiper le type d'objet que tu vas obtenir si tu fais un group by par exemple. Il faut avoir une image mentale de toute la hierarchie de classes qu'il y a derriere un DataFrame, les multi index, les series et j'en passe.

      On se rend compte a quel point SQL est bien foutu. C'est d'une perfection vertigineuse. Je love SQL.

  • # Tableur

    Posté par  . Évalué à 5.

    Compter le nombre d’occurrences -> les tables dynamiques sont faites pour ça
    Supprimer les occurrences uniques -> l'autofiltre devrait faire l'affaire

  • # Oneshot ou récurrent ?

    Posté par  . Évalué à 4.

    Ce qu'il faut surtout regarder c'est si ce travaille va être demandé une seule et unique fois ou si c'est répétitif par exemple toutes les semaines…

    Si c'est à faire une seule fois tu gagneras surement ton temps avec ton tableur, outil que pour le moment tu maitrise le mieux d'après ce que j'ai compris.

    Si c'est récurrent alors là effectivement tu vas devoir explorer d'autres pistes histoire que dans un avenir plus ou moins proche tu puisses automatiser ce genre de tâches qui à mon avis n'amène rien professionnellement si on les garde en traitement manuel.

    Au boulot j'ai un peu le même genre de tâches qui me sont demandées. Comme cela revient régulièrement j'ai donc mis en place les outils pour que ça se fasse tout seul. Bon par contre moi de mon côté j'ai un max de contrainte technique sofware… Donc exit l'installation d'une BDD pour y faire mes requêtes je suis obligé de travailler sur des fichiers plats qui sont en règles générales en csv, voir xlsx (que je transforme en csv pour bosser plus vite).
    Pour ma part je me suis donc tourné vers PowerShell qui est le seul outil présent nativement sous Windows pour faire ça (pas de droits admin pour installer autre chose), mais par contre une fois que tu maitrises ce langage tu peux faire un max de choses.

    • [^] # cygwin ?

      Posté par  . Évalué à 2.

      il y a très très longtemps dans une galaxie très très lointaine, j'avais aussi des contraintes professionnelles sur le système et les outils que je pouvais utiliser. A l'époque, j'utilisais cygwin, qui ne nécessitait pas les droits d'admin pour être installé. J'imagine que c'est toujours le cas. Dans ce contexte, ce n'est probablement pas aussi pratique que d'utiliser powershell, mais ça permet d'écrire des scripts shells portables pour quelqu'un qui ne connaitraît pas powershell.

      • [^] # Re: cygwin ?

        Posté par  . Évalué à 1.

        Interdiction d'ajouter des logiciels sans passer par l'étape demande, validation, packageage, déploiement…. Autant te dire que c'est limite impossible ce type de demande.
        Donc je fais avec les moyens par défaut. Mais j'avoue que j'aime bien PowerShell, qui permet également de monter des GUI rapidement sans outil supplémentaire. Petit plus les scripts sont maintenant compatibles Linux et Mac. Toutes les fonctions ne sont pas supportées mais le gros est là.

        • [^] # Re: cygwin ?

          Posté par  . Évalué à 2.

          Interdiction d'ajouter des logiciels sans passer par l'étape demande, validation, packageage, déploiement….

          ah ouais, c'est strict :/ limite on se demande même pourquoi ils vous laissent ne serait-ce que vous approcher d'un clavier …

          Ça me fait penser qu'il y a quelques années, le buzzword, c'est le BYOD (bring your own device). De ce que j'avais compris, c'était parce qu'à imposer trop de contraintes pour raisons de sécurité, les gens en arrivait à préférer bosser sur leur matos perso et à transférer leur boulot terminé sur leur ordi pro, ce qui mettait par terre toute les belles machines de contrôle mises en place par les DSI. Mais ça fait longtemps que je n'ai pas vu passer l'acronyme. La mode a du changer :)

          • [^] # Re: cygwin ?

            Posté par  . Évalué à 1.

            Ah mais ce que tu dis est vrai, je le vois de plus en plus autour de moi…

  • # Metabase

    Posté par  (site web personnel) . Évalué à 3.

    L'outil metabase a été proposé et retenu pour des questions précédentes un peu similaire :

    Des outils proposés aussi pour le "nettoyage" : OpenRefine et Illico (il y a eu une news dessus : https://linuxfr.org/news/oui-illico)

    Bonnes lectures et dis nous si tu y trouves ton bonheur !

  • # Le bon vieux Awk

    Posté par  (Mastodon) . Évalué à 3.

    si t'aimes scripter, awk est une autre bonne idée. pour peu que tu lui donnes à manger des données assez faciles à traiter (par exemple un export CSV), écrire les quelques fonctions dont tu as besoin c'est pas très dur.

    En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.