les pandas obtiennent la moyenne / moyenne de la colonne

155

Je ne peux pas obtenir la moyenne ou la moyenne d'une colonne en pandas. A avoir un dataframe. Aucune des choses que j'ai essayées ci-dessous ne me donne la moyenne de la colonneweight

>>> allDF 
         ID           birthyear  weight
0        619040       1962       0.1231231
1        600161       1963       0.981742
2      25602033       1963       1.3123124     
3        624870       1987       0.94212

Ce qui suit renvoie plusieurs valeurs, pas une:

allDF[['weight']].mean(axis=1)

Alors fait ceci:

allDF.groupby('weight').mean()
Pizza au pepperoni
la source
Reproduction
Jeru Luke
df.groupby('weight')n'était pas ce que vous vouliez, car il divisait le df en colonnes séparées, chacune avec une valeur de poids distincte. Au lieu de justedf['weight'].mean()
smci
allDF. weight.mean ()
DataFramed le

Réponses:

267

Si vous ne voulez que la moyenne de la weightcolonne, sélectionnez la colonne (qui est une série) et appelez .mean():

In [479]: df
Out[479]: 
         ID  birthyear    weight
0    619040       1962  0.123123
1    600161       1963  0.981742
2  25602033       1963  1.312312
3    624870       1987  0.942120

In [480]: df["weight"].mean()
Out[480]: 0.83982437500000007
DSM
la source
1
et si je voulais avoir une moyenne de chaque colonne?
Chris
3
@Chris df.describe ()
Abhishek Poojary
2
@Chris df.mean () vous donne le poids de chaque colonne et le renvoie dans une série.
emschorsch
24

Essayez df.mean(axis=0), l' axis=0argument calcule la moyenne par colonne de la trame de données afin que le résultat soit axis=1une moyenne par ligne, vous obtenez donc plusieurs valeurs.

Chandu
la source
13

Essayez de tenter print (df.describe())votre chance. J'espère qu'il sera très utile d'obtenir une description globale de votre dataframe.

naïomètre
la source
1
display(df.describe())est mieux (dans Jupyter Notebooks) car displayipython fournit du HTML formaté plutôt que de l'ASCII, ce qui est plus utile / agréable visuellement.
Zhanwen Chen
6

vous pouvez utiliser

df.describe() 

vous obtiendrez des statistiques de base sur le dataframe et pour obtenir la moyenne de la colonne spécifique que vous pouvez utiliser

df["columnname"].mean()
Arun Singh
la source
1
Ceci est un double des réponses mentionnées ci-dessus.
Mehdi Boukhechba
6

Vous pouvez également accéder à une colonne en utilisant la notation par points (également appelée accès aux attributs) puis calculer sa moyenne:

df.your_column_name.mean()
Nikos Tavoularis
la source
4

Moyenne pour chaque colonne en df:

    A   B   C
0   5   3   8
1   5   3   9
2   8   4   9

df.mean()

A    6.000000
B    3.333333
C    8.666667
dtype: float64

et si vous voulez la moyenne de toutes les colonnes:

df.stack().mean()
6.0
Harvey
la source
1

De plus, si vous souhaitez obtenir la roundvaleur après avoir trouvé le fichier mean.

#Create a DataFrame
df1 = {
    'Subject':['semester1','semester2','semester3','semester4','semester1',
               'semester2','semester3'],
   'Score':[62.73,47.76,55.61,74.67,31.55,77.31,85.47]}
df1 = pd.DataFrame(df1,columns=['Subject','Score'])

rounded_mean = round(df1['Score'].mean()) # specified nothing as decimal place
print(rounded_mean) # 62

rounded_mean_decimal_0 = round(df1['Score'].mean(), 0) # specified decimal place as 0
print(rounded_mean_decimal_0) # 62.0

rounded_mean_decimal_1 = round(df1['Score'].mean(), 1) # specified decimal place as 1
print(rounded_mean_decimal_1) # 62.2
Md. Tanvir Raihan
la source
1

Vous pouvez utiliser l'une des deux instructions ci-dessous:

numpy.mean(df['col_name'])
# or
df['col_name'].mean()
Davidbilla
la source
Veuillez enrichir votre réponse avec des commentaires appropriés. Sinon, il est susceptible d'être marqué pour suppression
Don
0
You can easily followthe following code
    `import pandas as pd 
    import numpy as np 

    classxii = {'Name':['Karan','Ishan','Aditya','Anant','Ronit'],
        'Subject':['Accounts','Economics','Accounts','Economics','Accounts'],
        'Score':[87,64,58,74,87],
        'Grade':['A1','B2','C1','B1','A2']}
    df = pd.DataFrame(classxii,index = ['a','b','c','d','e'],columns=['Name','Subject','Score','Grade'])
    print(df)
    #use the below for mean if you already have a dataframe
print('mean of score is:')
print(df[['Score']].mean())
CHASSEUR
la source
0

Vous pouvez simplement choisir: df.describe () qui vous fournira tous les détails pertinents dont vous avez besoin, mais pour trouver la valeur minimale, maximale ou moyenne d'une colonne particulière (par exemple, `` poids '' dans votre cas), utilisez:

    df['weights'].mean(): For average value
    df['weights'].max(): For maximum value
    df['weights'].min(): For minimum value
SHAGUN SHARMA
la source