web-dev-qa-db-fra.com

Pandas: calcule la moyenne ou l'écart standard sur toute la trame de données

Voici mon problème, j'ai un dataframe comme ceci:

    Depr_1  Depr_2  Depr_3
S3  0   5   9
S2  4   11  8
S1  6   11  12
S5  0   4   11
S4  4   8   8

et je veux juste calculer la moyenne sur toute la trame de données, car ce qui suit ne fonctionne pas:

df.mean()

Puis je suis venu avec:

df.mean().mean()

Mais cette astuce ne fonctionnera pas pour calculer l'écart type. Mes dernières tentatives ont été:

df.get_values().mean()
df.get_values().std()

Sauf que dans ce dernier cas, il utilise les fonctions mean () et std () de numpy. Ce n'est pas un problème pour la moyenne, mais pour std, car la fonction pandas utilise par défaut ddof=1, contrairement au numpy où ddof=0.

29
jrjc

Vous pouvez convertir le cadre de données en une seule colonne avec stack (cela change la forme de 5x3 en 15x1), puis prendre l'écart-type:

df.stack().std()         # pandas default degrees of freedom is one

Alternativement, vous pouvez utiliser values pour convertir un dataframe pandas en un tableau numpy avant de prendre l’écart-type:

df.values.std(ddof=1)    # numpy default degrees of freedom is zero

À la différence des pandas, numpy donnera l’écart type de l’ensemble du tableau par défaut. Il n’est donc pas nécessaire de modifier la structure avant de prendre l’écart type.

Quelques notes supplémentaires:

  • L’approche numpy ici est un peu plus rapide que celle pandas), ce qui est généralement vrai lorsque vous avez la possibilité d’effectuer la même chose avec numpy ou avec des pandas. La différence de vitesse dépend de la taille. de vos données, mais numpy était environ 10 fois plus rapide lorsque j’ai testé plusieurs images de différentes tailles sur mon ordinateur portable (version numpy 1.15.4 et pandas version 0.23.4).

  • Les approches numpy et pandas ne donneront pas exactement les mêmes réponses, mais seront extrêmement proches (identiques à plusieurs chiffres de précision). La différence est due à de légères différences de mise en œuvre en coulisse qui affecte la façon dont les valeurs en virgule flottante sont arrondies.

43
JohnE