Comment obtenir efficacement des mesures statistiques (telles que la moyenne, l'écart-type) pour une colonne spécifique dans un dataframe pandas en utilisant describe() ?

Introduction

La fonction describe() de Pandas est utilisée pour générer des statistiques descriptives pour les colonnes numériques d'une DataFrame. Elle renvoie des informations telles que le nombre d'observations, la moyenne, l'écart type et les quartiles pour chaque colonne. Cette fonction est très utile pour explorer rapidement les données et obtenir un aperçu de leur distribution.

Dans ce tutoriel, nous allons apprendre comment utiliser la fonction describe() dans Pandas pour calculer efficacement ces mesures statistiques.

Création d'une dataframe pandas.

D'abord, créons une dataframe Pandas en générant des nombres aléatoires à partir d'une distribution Gaussienne à l'aide de la bibliothèque NumPy:

import numpy as np
import pandas as pd

mu1 = 10.0
sigma1 = 2.0

data1 = np.random.randn(100000) * sigma1 + mu1

df1 = pd.DataFrame(data1, columns = ['var_1'])

df1['group'] = 'A'

print( df1 )

Notre DataFrame ressemble alors à ceci:

           var_1 group
0       7.546591     A
1       7.910452     A
2       6.794720     A
3       6.913027     A
4       9.748158     A
...          ...   ...
99995  10.887914     A
99996  12.074681     A
99997   7.826811     A
99998  11.396126     A
99999  10.587124     A

[100000 rows x 2 columns]

Obtenir des mesures statistique pour une colonne spécifique.

Utilisation de la fonction describe()

Pour obtenir des informations statistiques pour la colonne 'var_1', nous pouvons simplement appeler la fonction describe() sur notre DataFrame :

df1['var_1'].describe()

La sortie sera un objet de type Series avec les informations suivantes :

count    100000.000000
mean          9.997635
std           1.996487
min           1.719631
25%           8.652156
50%           9.993236
75%          11.352676
max          18.922716
Name: var_1, dtype: float64

Veuillez noter que vous pouvez extraire des informations de la série en utilisant la méthode suivante:

df1['var_1'].describe()['count']

donne comme résultat

100000.0

tandis que

df1['var_1'].describe()['25%']

donne comme résultat

8.65215584318412

En utilisant describe() avec groupby()

Incorporons des données supplémentaires dans notre dataframe.

mu2 = 5.0
sigma2 = 1.0

data2 = np.random.randn(100000) * sigma2 + mu2

df2 = pd.DataFrame(data2, columns = ['var_1'])

df2['group'] = 'B'

df = pd.concat([df1,df2])

print(df)

Notre DataFrame ressemble maintenant à ceci :

          var_1 group
0      7.546591     A
1      7.910452     A
2      6.794720     A
3      6.913027     A
4      9.748158     A
...         ...   ...
99995  4.884224     B
99996  6.063100     B
99997  5.438565     B
99998  3.878364     B
99999  5.046344     B

[200000 rows x 2 columns]

Pour effectuer des statistiques sur la colonne var_1 en séparant les données appartenant aux groupes A ou B, une solution possible consiste à utiliser la fonction groupby de pandas.

df.groupby('group').describe()

Le code mentionné ci-dessus produira alors le résultat suivant.

          var_1                                                               \
          count      mean       std       min       25%       50%        75%   
group                                                                          
A      100000.0  9.997635  1.996487  1.719631  8.652156  9.993236  11.352676   
B      100000.0  4.996937  0.998049  1.036177  4.322948  5.000255   5.670038


             max  
group             
A      18.922716  
B       9.450537

Appliquer la fonction describe() à l'ensemble d'une dataframe.

Ajoutons une autre colonne à notre dataframe.

mu3 = 25.0
sigma3 = 10.0

data3 = np.random.randn(200000) * sigma3 + mu3

df['var_2'] = data3

print(df)

Notre DataFrame ressemble maintenant à ceci :

          var_1 group      var_2
0      7.546591     A  38.777234
1      7.910452     A  24.201025
2      6.794720     A  38.682980
3      6.913027     A  18.793834
4      9.748158     A  38.399589
...         ...   ...        ...
99995  4.884224     B  19.272981
99996  6.063100     B  20.640537
99997  5.438565     B  20.761374
99998  3.878364     B  20.184042
99999  5.046344     B  19.829434

[200000 rows x 3 columns]

Notez que nous pouvons utiliser la fonction describe() sur l'ensemble de la dataframe :

df.describe()

Le code mentionné ci-dessus produira alors le résultat suivant

               var_1          var_2
count  200000.000000  200000.000000
mean        7.497286      24.975396
std         2.956822      10.005165
min         1.036177     -20.486187
25%         4.985870      18.198013
50%         6.667710      24.970786
75%         9.993223      31.695061
max        18.922716      68.275304

Références

Liens Site
describe pandas.pydata.org
mean pandas.pydata.org
Comment fusionner / concatener deux dataframes avec pandas en python ? moonbooks.org