Pandas : calculer la moyenne ou std (standard deviation) sur l'ensemble de la dataframe
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 fonctionne pas pour le calcul de 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 moyenne() et std() la fonction de numpy. Ce n'est pas un problème pour le dire, mais c'est pour les mst, comme les pandas fonction utilise par défaut ddof=1
, à la différence de la numpy où ddof=0
.
De par leur conception
oui mais pourquoi ne pas avoir la possibilité de
Ne pouvez pas répondre pourquoi, je ne suis pas un développeur sur les pandas, nous espérons que l'un d'entre eux va le voir et commenter
btw,
mean
fonctionne sur un axe spécifique, soit par une ligne ou une colonne. Il n'y a pas une méthode pour opérer sur l'ensemble du dataframe comme vous l'avez trouvé, une autre méthode serait quelque chose comme df.values.mean()
il utilise numpy veux dire je pense que c'est la même chose que ce pandas utilise.oui mais pourquoi ne pas avoir la possibilité de
axis=None
comme dans numpy ? Et laissez axis=0
par défaut ? df.values
est la même que df.get_values()
, mais merci pour s'en rendre compte, j'ai gagné de la salle.Ne pouvez pas répondre pourquoi, je ne suis pas un développeur sur les pandas, nous espérons que l'un d'entre eux va le voir et commenter
btw,
df.mean().mean()
ne sera pas nécessairement vous donner la bonne réponse si il y a des valeurs manquantes (parce qu'il calcule une moyenne des moyennes des colonnes et, implicitement, sur-poids des colonnes avec des valeurs manquantes par rapport aux colonnes sans valeurs manquantes)OriginalL'auteur jrjc | 2014-08-05
Vous devez vous connecter pour publier un commentaire.
Vous pouvez convertir le dataframe à une seule colonne avec
stack
(cela change la forme de 5x3 à 15x1), puis prendre la déviation standard:Alternativement, vous pouvez utiliser
values
pour convertir les pandas dataframe à un tableau numpy avant de prendre la déviation standard:Remarque que (à la différence des pandas) numpy donnera l'écart-type de l'ensemble de la matrice par défaut, donc il n'est pas nécessaire de remodeler avant de prendre la déviation standard.
OriginalL'auteur JohnE
Vous aimeriez 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
si vous souhaitez en lignes?
L'OP de demander de l'ensemble de df pas sur une ligne/colonne
OriginalL'auteur dartdog