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 :

Moyenne de plusieurs colonnes


Sujet :

Python

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2022
    Messages : 2
    Par défaut Moyenne de plusieurs colonnes
    Bonjour,

    j'ai besoin d'un coup de main sur une fonction que je pense simple mais qui me bloque.

    Voici ma table :
    Nom : Capture d’écran 2022-04-06 à 10.35.42.png
Affichages : 219
Taille : 31,8 Ko

    Je voudrais calculer pour chaque pays et chaque énergie la moyenne consommée par année par secteur.
    De ce fait je souhaiterai une nouvelle colonne avec soit le pourcentage de chaque conso par énergie (toujours par pays par année)

    J'ai essayé cette fonction mais ça modifie la colonne Consumption :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    df_transposed.groupby(['Country','Energy','Sectors','Year'])['Consumption'].mean().reset_index()
    Merci à tous

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 816
    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 816
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par SFritsch Voir le message
    Voici ma table :
    Une table? Donc c'est un souci SQL, pas Python.

    Citation Envoyé par SFritsch Voir le message
    De ce fait je souhaiterai une nouvelle colonne avec soit le pourcentage de chaque conso par énergie (toujours par pays par année)
    Ok, et avec soit quoi d'autre? Car quand on commence une phrase par "avec soit un truc" ça induit une alternative qu'on est présumé compléter avec une autre...

    Citation Envoyé par SFritsch Voir le message
    J'ai essayé cette fonction mais ça modifie la colonne Consumption :

    df_transposed.groupby(['Country','Energy','Sectors','Year'])['Consumption'].mean().reset_index()
    Mouais. Et c'est quoi "df_transposed" ???

    En tout cas, en SQL ça marche nickel
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    drop database if exists "essai";
    create database "essai"
    	template = "template0"
    	encoding = 'utf8';
    \connect "essai"
     
    create table energie(
    	"pays" varchar,
    	"energie" varchar,
    	"secteur" varchar,
    	"year" smallint,
    	"conso" float
    );
     
    insert into energie values('Australie', 'Huile', 'Transport', 1971, 12.5);
    insert into energie values('Australie', 'Huile', 'Transport', 1971, 14.5);
    insert into energie values('Australie', 'Huile', 'Transport', 1971, 16.5);
    insert into energie values('Australie', 'Huile', 'Industrie', 1971, 22.5);
    insert into energie values('Australie', 'Huile', 'Industrie', 1971, 24.5);
    insert into energie values('Australie', 'Huile', 'Industrie', 1971, 26.5);
    insert into energie values('Australie', 'Fioul', 'Transport', 1971, 32.5);
    insert into energie values('Australie', 'Fioul', 'Transport', 1971, 34.5);
    insert into energie values('Australie', 'Fioul', 'Transport', 1971, 36.5);
    insert into energie values('Australie', 'Fioul', 'Industrie', 1971, 42.5);
    insert into energie values('Australie', 'Fioul', 'Industrie', 1971, 44.5);
    insert into energie values('Australie', 'Fioul', 'Industrie', 1971, 46.5);
    insert into energie values('Australie', 'Huile', 'Transport', 1975, 112.5);
    insert into energie values('Australie', 'Huile', 'Transport', 1975, 114.5);
    insert into energie values('Australie', 'Huile', 'Transport', 1975, 116.5);
    insert into energie values('Australie', 'Huile', 'Industrie', 1975, 122.5);
    insert into energie values('Australie', 'Huile', 'Industrie', 1975, 124.5);
    insert into energie values('Australie', 'Huile', 'Industrie', 1975, 126.5);
    insert into energie values('Australie', 'Fioul', 'Transport', 1975, 132.5);
    insert into energie values('Australie', 'Fioul', 'Transport', 1975, 134.5);
    insert into energie values('Australie', 'Fioul', 'Transport', 1975, 136.5);
    insert into energie values('Australie', 'Fioul', 'Industrie', 1975, 142.5);
    insert into energie values('Australie', 'Fioul', 'Industrie', 1975, 144.5);
    insert into energie values('Australie', 'Fioul', 'Industrie', 1975, 146.5);
     
    insert into energie values('Espagne', 'Huile', 'Transport', 1971, 212.5);
    insert into energie values('Espagne', 'Huile', 'Transport', 1971, 214.5);
    insert into energie values('Espagne', 'Huile', 'Transport', 1971, 216.5);
    insert into energie values('Espagne', 'Huile', 'Industrie', 1971, 222.5);
    insert into energie values('Espagne', 'Huile', 'Industrie', 1971, 224.5);
    insert into energie values('Espagne', 'Huile', 'Industrie', 1971, 226.5);
    insert into energie values('Espagne', 'Fioul', 'Transport', 1971, 232.5);
    insert into energie values('Espagne', 'Fioul', 'Transport', 1971, 234.5);
    insert into energie values('Espagne', 'Fioul', 'Transport', 1971, 236.5);
    insert into energie values('Espagne', 'Fioul', 'Industrie', 1971, 242.5);
    insert into energie values('Espagne', 'Fioul', 'Industrie', 1971, 244.5);
    insert into energie values('Espagne', 'Fioul', 'Industrie', 1971, 246.5);
    insert into energie values('Espagne', 'Huile', 'Transport', 1975, 312.5);
    insert into energie values('Espagne', 'Huile', 'Transport', 1975, 314.5);
    insert into energie values('Espagne', 'Huile', 'Transport', 1975, 316.5);
    insert into energie values('Espagne', 'Huile', 'Industrie', 1975, 322.5);
    insert into energie values('Espagne', 'Huile', 'Industrie', 1975, 324.5);
    insert into energie values('Espagne', 'Huile', 'Industrie', 1975, 326.5);
    insert into energie values('Espagne', 'Fioul', 'Transport', 1975, 332.5);
    insert into energie values('Espagne', 'Fioul', 'Transport', 1975, 334.5);
    insert into energie values('Espagne', 'Fioul', 'Transport', 1975, 336.5);
    insert into energie values('Espagne', 'Fioul', 'Industrie', 1975, 342.5);
    insert into energie values('Espagne', 'Fioul', 'Industrie', 1975, 344.5);
    insert into energie values('Espagne', 'Fioul', 'Industrie', 1975, 346.5);
     
    select pays, energie, secteur, year, avg(conso) from energie group by pays, energie, secteur, year order by 1, 2, 3, 4;
       pays    | energie |  secteur  | year |  avg  
    -----------+---------+-----------+------+-------
     Australie | Fioul   | Industrie | 1971 |  44.5
     Australie | Fioul   | Industrie | 1975 | 144.5
     Australie | Fioul   | Transport | 1971 |  34.5
     Australie | Fioul   | Transport | 1975 | 134.5
     Australie | Huile   | Industrie | 1971 |  24.5
     Australie | Huile   | Industrie | 1975 | 124.5
     Australie | Huile   | Transport | 1971 |  14.5
     Australie | Huile   | Transport | 1975 | 114.5
     Espagne   | Fioul   | Industrie | 1971 | 244.5
     Espagne   | Fioul   | Industrie | 1975 | 344.5
     Espagne   | Fioul   | Transport | 1971 | 234.5
     Espagne   | Fioul   | Transport | 1975 | 334.5
     Espagne   | Huile   | Industrie | 1971 | 224.5
     Espagne   | Huile   | Industrie | 1975 | 324.5
     Espagne   | Huile   | Transport | 1971 | 214.5
     Espagne   | Huile   | Transport | 1975 | 314.5
    (16 rows)
    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]

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2022
    Messages : 2
    Par défaut
    Merci pour ton retour ! Non ce n'est pas du SQL, j'avoue avoir utiliser groupby en pensant que ça marcherait mais je n'aurais peut être pas dû.

    Concernant le "soit" oublié, je me suis rendue compte en l'écrivant que ma deuxième option n'était pas bonne, c'est pourquoi je ne l'ai pas écris.
    (ps : c'est pour voir si on me suis ! )

    df_transposed, en fait c'est ma dataframe en python qui a été transposé dans un autre sens. On peut donc l'appeler plus communément df.


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

    Citation Envoyé par SFritsch Voir le message
    J'ai essayé cette fonction mais ça modifie la colonne Consumption
    ça ne modifie pas la colonne mais fabrique une nouvelle dataframe avec le résultat de la moyenne dans la colonne "Consumption" (comme vous l'avez demandé).

    Pour le reste, je ne suis pas sur d'avoir compris ce que vous cherchez à faire... Et quoique ce soit, si vous ne postez pas un minimum de données d'exemple...(*) on ne pourra pas reproduire ce que vous constatez ni vous suggérer quoi que ce soit (sauf d'aller lire la documentation).
    (*) comme il n'y a que vous qui sachiez ce que vous voulez, difficile de fabriquer un jeu de données significatif à votre place.

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

Discussions similaires

  1. calcul de moyenne sur plusieurs plages dans une colonne
    Par Jean-luc79 dans le forum Excel
    Réponses: 2
    Dernier message: 19/12/2014, 11h20
  2. Moyenne de plusieurs colonnes
    Par stgthe8 dans le forum LabVIEW
    Réponses: 4
    Dernier message: 14/05/2012, 19h30
  3. Calculer une moyenne sur plusieurs colonnes
    Par stöckli dans le forum Requêtes
    Réponses: 5
    Dernier message: 12/10/2011, 14h44
  4. tri par moyenne sur plusieurs colonnes
    Par adr22 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/12/2007, 16h19
  5. [MySQL] Moyenne plusieurs colonnes
    Par guenaldo dans le forum Requêtes
    Réponses: 1
    Dernier message: 10/06/2007, 00h21

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