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 :

manipulation de table et calcul


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 321
    Par défaut manipulation de table et calcul
    bonjour,

    j'ai besoin d'extraire de la donnée et de faire réaliser un calcul de somme
    le tableau que j'extrait>>>

    REG DEPL TECH D
    SO Fait Pas de donnée Pas de donnée
    MED A faire Fait A faire
    la première ligne représente les noms de colonne...
    le calcul se fait par REG et pour chaque valeur de donnée sur les 3 colonnes suivantes en exluant les valeurs Pas de donnée

    je veux obtenir ce genre de résultat pour la première ligne
    REG DEPL DEPL TECH TECH D D
    SO somme "fait " somme "a faire" somme "fait " somme "a faire" somme "fait " somme "a faire"

    Quelle librairies pourrait me permettre d'obtenir ce résultat en étant plus optimiser..??
    des liens pour me guider serait sympa..

    merci d'avance

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    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 762
    Par défaut
    Salut,

    Citation Envoyé par bernards111 Voir le message
    Quelle librairies pourrait me permettre d'obtenir ce résultat en étant plus optimiser..??
    Parcourir un tableau, c'est deux boucles "for" imbriquées... et pour balayer une dizaine de cases pas facile de voir ce que pourrait apporter une bibliothèque magique aux instructions de base.

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

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 321
    Par défaut
    j'extrait mes infos avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    with(arcpy.da.SearchCursor (table,champ)) as cur:
        for row in cur:
            a.append(row)
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    from collections import Counter
    Counter(a)
    mais cela me donne un compte sur les valeurs de la ligne " SO Fait Pas de donnée Pas de donnée" et pas sur " SO Fait", ...ect

    je ne vois pas comment réaliser ce calcul par colonne???

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    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 762
    Par défaut
    Citation Envoyé par bernards111 Voir le message
    je ne vois pas comment réaliser ce calcul par colonne???
    Se dépatouiller avec des listes de listes est pourtant ce qu'on apprend dans tous les tutos!
    Prenez un "tableau":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> L = [ [ x, x, x ] for x in range(4) ]
    >>> L
    [[0, 0, 0], [1, 1, 1], [2, 2, 2], [3, 3, 3]]
    Puis on peu le transposer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> TL = list(zip(*L))
    >>> TL
    [(0, 1, 2, 3), (0, 1, 2, 3), (0, 1, 2, 3)]
    >>>
    Les colonnes sont devenues "lignes".
    A vous d'essayer de comprendre pour adapter cela à votre cas.

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

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 321
    Par défaut
    merci.;

    oui je vois bien mais si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Counter(TL)
    Counter({(0, 1, 2, 3): 3})
    alors j'aimerais obtenir:

    ({(0): 3})
    ({(1): 3})
    ({(2): 3})..ect

    alors je peux l'avoir si je refait une boucle sur l'indice:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    z=[]
    for row in TL:
    	z.append(row[0])
    Counter(z)
    mais je trouve la démarche trop longue et je me demandait si il n'y avait pas justement des lib ou une manière de faire qui pourrait optimiser ce traitement...

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    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 762
    Par défaut
    Citation Envoyé par bernards111 Voir le message
    mais si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Counter(TL)
    Counter({(0, 1, 2, 3): 3})
    Counter(TL) fabrique un dictionnaire ou les clefs seront les différents éléments de la liste de liste (i.e. la liste [ 0, 1, 2, 3 ]) et les valeurs associées le nombre d’occurrences.
    Citation Envoyé par bernards111 Voir le message
    alors j'aimerais obtenir:

    ({(0): 3})
    ({(1): 3})
    ({(2): 3})..ect
    Une double boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> for k, v in Counter({(0, 1, 2, 3): 3}).items():
    ...     for x in k:
    ...         print (x, v)
    ...
    0 3
    1 3
    2 3
    3 3
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Créer des DLL manipulant les tables d'une BDD
    Par dj_techno dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/02/2007, 08h20
  2. [Table Paradox] Calcul complexe
    Par bastion dans le forum Bases de données
    Réponses: 1
    Dernier message: 18/02/2007, 16h53
  3. parcour d'une table et calcul date?
    Par dj_techno dans le forum Bases de données
    Réponses: 4
    Dernier message: 25/08/2006, 09h02
  4. Astuce pour la manipulation des tables
    Par kaouane dans le forum Bases de données
    Réponses: 3
    Dernier message: 27/05/2006, 12h29
  5. Impossible de manipuler une table.
    Par ma2th dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 22/08/2004, 21h02

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