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 |