0
votes

Obtenez la moyenne de plusieurs colonnes sélectionnées dans un fichier de données Pandas

Je veux calculer la moyenne de toutes les valeurs dans des colonnes sélectionnées dans un Dataframe. Par exemple, j'ai un fichier de données avec des colonnes A, B, C, D et E et je veux la moyenne de toutes les valeurs des colonnes A, C et E.

import pandas as pd

df1 = pd.DataFrame( ( {'A': [1,2,3,4,5],
                      'B': [10,20,30,40,50],
                      'C': [11,21,31,41,51],
                      'D': [12,22,32,42,52],
                      'E': [13,23,33,43,53]} ) )

print( df1 )

print( "Mean of df1:", df1.mean() )

df2 = pd.concat( [df1['A'], df1['C'], df1['E'] ], ignore_index=True )
print( df2 )
print( "Mean of df2:", df2.mean() )

df3 = pd.DataFrame()
df3 = pd.concat( [ df3, df1['A'] ], ignore_index=True )
df3 = pd.concat( [ df3, df1['C'] ], ignore_index=True )
df3 = pd.concat( [ df3, df1['E'] ], ignore_index=True )
print( df3 )
print( "Mean of df3:", df3.mean() )


0 commentaires

3 Réponses :


1
votes

Vous pouvez remodeler dataframe à Série avec MultiDex par dataframe.stact puis utilisez moyenne : xxx

Une autre idée est une autre idée de convertir des valeurs en tableau 2D numpy, puis utilisez np.Mean : xxx


0 commentaires

1
votes

CAVEAT: seulement d'accord si les colonnes sont de même longueur. Sinon, cela donnerait la mauvaise réponse (comme les commentaires indiquaient).

mean = df1[['A', 'C', 'E']].mean(axis=1).mean()    
print(mean)


2 commentaires

@jezrael non dans ce cas car les colonnes ont le même nombre d'éléments chacun. Ainsi, DF1 [['A', 'B', 'B', 'C']]. Moyenne (). Moyenne () == DF1 [['A', 'C', 'E']]. Pile () .Mean () .


En effet, @jezrael serait juste, ce serait différent si elles sont différentes de longueurs. Je vais donc mettre en charge que cela ne fonctionnerait que si les colonnes ont la même longueur.



0
votes

Vous avez deux options que je connais:

pour moyenne (), min (), max (), vous pouvez utiliser la moyenne de moyenne, min de min, max de max, max de max céderait, moyenne, min, max de tous les éléments d'a, c, e. p>

afin que vous puissiez utiliser: Pour moyenne (): Entrez le code ici CODE> P>

df1[['A','C','E']].apply(np.std).std()    ##  this will not give error, but gives a 
                       value that is not what you want.
df1[['A','C','E']].values.std()    # this gives the std of all the elements of columns A, C, E.


4 commentaires

Lorsque j'utilise std = df1 [["A ',' c ',' E ']]]. valories.std () Je reçois une valeur de 17,93, alors que la valeur correcte doit être de 18,56.


Colonnes A, C, E a des éléments [1, 11, 13, 2, 21, 23, 3, 31, 33, 4, 41, 43, 5, 51, 53]. C'est ainsi que vous obtenez les éléments d'A, C, E: DF1 [["A ',' C ',' E ']]. Stack (). Valeurs; np.std ([1, 11, 13, 2, 21, 23, 3, 31, 33, 4, 41, 43, 5, 51, 53]) donne 17,93197020841702; Comment avez-vous eu 18.56?


DF2 = PD.CONCAT ([DF1 ['A'], DF1 ['C'], DF1 ['E']], Ignorer_index = true) Données df2.std () = 18.5613 Alors que DF1 [['A', 'C', 'E']]]. Valories.std () = 17.9319


L'écart-type pour une population est calculé à l'aide de N, où la STD pour un échantillon est calculée à l'aide de (N-1). Lorsque vous avez appliqué df2.std (), il a fallu la valeur par défaut comme N-1, ceci est défini à l'aide du paramètre ddof = 1. Si vous définissez ce paramètre sur 0, DDOF = 0 Vous obtenez la valeur de 17,93 DF2. std (ddof = 0) ## donne 17,93; ici n (15) est pris pour le calcul df2.std (ddof = 1) ## donne 18.5613; Ici N -1 (14) est pris pour le calcul, veuillez jeter un coup d'œil sur la déviation standard de la population VS Épuisement écart type.