Maison > développement back-end > Tutoriel Python > Comment calculer des statistiques par groupe (nombre, moyenne, etc.) dans Pandas GroupBy ?

Comment calculer des statistiques par groupe (nombre, moyenne, etc.) dans Pandas GroupBy ?

Barbara Streisand
Libérer: 2024-12-28 04:36:10
original
597 Les gens l'ont consulté

How to Calculate Group-wise Statistics (Count, Mean, etc.) in Pandas GroupBy?

Obtenez des statistiques pour chaque groupe (nombre, moyenne, etc.) à l'aide de Pandas GroupBy

Problème :

Vous avez un DataFrame df dans Pandas et souhaitez calculer des statistiques par groupe telles que la moyenne, le nombre, etc. sur plusieurs colonnes.

Réponse rapide :

Pour obtenir le nombre de lignes par groupe, appelez simplement .size(), qui renvoie une série :

df.groupby(['col1','col2']).size()
Copier après la connexion

Pour un résultat DataFrame avec des décomptes sous forme de colonne, utilisez :

df.groupby(['col1', 'col2']).size().reset_index(name='counts')
Copier après la connexion
Copier après la connexion

Détaillé Exemple :

Considérez le DataFrame df :

  col1 col2  col3  col4  col5  col6
0    A    B  0.20 -0.61 -0.49  1.49
1    A    B -1.53 -1.01 -0.39  1.82
2    A    B -0.44  0.27  0.72  0.11
3    A    B  0.28 -1.32  0.38  0.18
4    C    D  0.12  0.59  0.81  0.66
5    C    D -0.13 -1.65 -1.64  0.50
6    C    D -1.42 -0.11 -0.18 -0.44
7    E    F -0.00  1.42 -0.26  1.17
8    E    F  0.91 -0.47  1.35 -0.34
9    G    H  1.48 -0.63 -1.14  0.17
Copier après la connexion

Obtenir le nombre de lignes :

df.groupby(['col1', 'col2']).size()
Copier après la connexion

Sortie :

col1  col2
A     B       4
C     D       3
E     F       2
G     H       1
dtype: int64
Copier après la connexion

Créer un DataFrame avec Compte :

df.groupby(['col1', 'col2']).size().reset_index(name='counts')
Copier après la connexion
Copier après la connexion

Sortie :

  col1 col2  counts
0    A    B       4
1    C    D       3
2    E    F       2
3    G    H       1
Copier après la connexion

Y compris les résultats pour plus de statistiques :

Pour calculer des statistiques supplémentaires comme la moyenne, médiane et min, utilisation agg() :

(df
.groupby(['col1', 'col2'])
.agg({
    'col3': ['mean', 'count'],
    'col4': ['median', 'min', 'count']
}))
Copier après la connexion

Sortie :

            col4                  col3      
          median   min count      mean count
col1 col2                                   
A    B    -0.810 -1.32     4 -0.372500     4
C    D    -0.110 -1.65     3 -0.476667     3
E    F     0.475 -0.47     2  0.455000     2
G    H    -0.630 -0.63     1  1.480000     1
Copier après la connexion

Diviser les statistiques en agrégations individuelles :

Pour plus de contrôle sur la sortie, divisez les statistiques et combinez-les en utilisant join:

gb = df.groupby(['col1', 'col2'])
counts = gb.size().to_frame(name='counts')
(counts
 .join(gb.agg({'col3': 'mean'}).rename(columns={'col3': 'col3_mean'}))
 .join(gb.agg({'col4': 'median'}).rename(columns={'col4': 'col4_median'}))
 .join(gb.agg({'col4': 'min'}).rename(columns={'col4': 'col4_min'}))
 .reset_index()
)
Copier après la connexion

Output:

  col1 col2  counts  col3_mean  col4_median  col4_min
0    A    B       4  -0.372500       -0.810     -1.32
1    C    D       3  -0.476667       -0.110     -1.65
2    E    F       2   0.455000        0.475     -0.47
3    G    H       1   1.480000       -0.630     -0.63
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal