Pandas: calculer la moyenne ou std (écart-type) sur toute la base 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 de calculer la moyenne sur l'ensemble de l'dataframe, que la suivante ne fonctionne pas :
df.mean()
Alors 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 la fonction moyenne() et std() à partir de numpy. Ce n'est pas un problème pour la moyenne, mais il est Pour std, comme la fonction pandas utilise par défaut ddof=1
, à la différence de la numpy one où ddof=0
.
2 réponses
Vous pouvez convertir le dataframe à une seule colonne avec
df.stack().std() # pandas default degrees of freedom is one
Alternativement, vous pouvez utiliser values
pour passer d'une base de données pandas à un tableau numpy avant de prendre l'écart type:
df.values.std(ddof=1) # numpy default degrees of freedom is zero
notez que (contrairement à pandas) num PY donnera l'écart-type de l'ensemble du tableau par défaut, donc il n'y a pas besoin de remodeler avant de prendre le standard écart.
vous pourriez aimer df.describe() je pense que c'est ce que vous voulez http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.describe.html?highlight=describe#pandas.DataFrame.describe