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 :

Faire une somme par mois


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Par défaut Faire une somme par mois
    Bonjour à tous,

    J'ai un fichier contenant des dates et des valeurs de la forme :
    2011-06-21;111
    2011-06-22;148
    2011-06-23;376
    2011-06-24;310
    2011-06-25;496
    2011-06-27;568
    2011-06-28;152
    2011-06-29;324
    2011-06-30;658
    2011-07-01;658
    2011-07-02;645
    2011-07-04;588
    2011-07-05;620
    2011-07-06;363
    2011-07-07;233
    2011-07-08;638
    2011-07-09;307
    2011-07-11;613
    2011-07-12;281
    2011-07-13;175
    2011-07-14;355
    2011-07-15;563
    2011-07-16;424
    2011-07-18;388
    2011-07-19;268
    2011-07-20;242
    2011-07-21;293
    2011-07-22;397
    2011-07-23;213
    2011-07-25;154
    2011-07-26;195
    2011-07-27;236
    2011-07-28;335
    je souhaite faire la somme par mois, comment faire ?

    merci de votre aide

  2. #2
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    somme = {}
    with open('tonfichier', 'r') as f:
        for line in f:
            date, valeur = line.split(';')
            if date[:-3] in somme:
                somme[date[:-3]] = somme[date[:-3]] + int(valeur)
            else:
                somme[date[:-3]] = int(valeur)
    Mais je suis surpris de cette question de votre pars jouclar.

    @+

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Par défaut
    Merci pour cette réponse PauseKawa.

    Sauf erreur de ma part , la somme n'est pas bonne. En effet j'ai testé avec le fichier ci-joint et je ne trouve pas le même résultat avec Excel.

  4. #4
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Re,

    Mon résultat est bon (j'ai mis cela dans un dico mais vous pouvez utiliser une liste de tuple, ce n'est pas préciser dans la question) si j'ai compris votre question.
    06 2011 > 3143
    07 2011 > 9184
    Mon résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {'2011-06': 3143, '2011-07': 9184}
    Ou est l'erreur ?

    @+

  5. #5
    Membre expérimenté Avatar de alexdevl
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 265
    Par défaut
    Bonjour,
    J'ai vérifié avec excel les valeurs données par pausekawa. Le résultat est ok.

    Sinon pour le dico il est possible d'utiliser setdefault :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    somme = {}
    with open('tonfichier', 'r') as f:
        for line in f:
            date, valeur = line.split(';')
            somme[date[:-3]]=somme.setdefault(date[:-3],0)+ int(valeur)
    Alex

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Par défaut
    oups

    milles excuses j'ai inversé le fichier de test Excel et fichier de traitement python.

    Le code fonctionne parfaitement

    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Faire une selection par mois en Vba
    Par Ram34 dans le forum VBA Access
    Réponses: 4
    Dernier message: 01/08/2012, 13h41
  2. [XSLT 1.0] Trier par mois et faire une somme
    Par TiBen dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 02/02/2012, 12h51
  3. Réponses: 5
    Dernier message: 15/09/2008, 15h06
  4. faire une somme par semaine et par client
    Par zer35 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 12/10/2007, 14h26
  5. [Conception] Faire une somme de valeurs définies par une boucle
    Par fixbraun dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 25/09/2006, 23h46

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