los pandas obtienen columna promedio / media

155

No puedo obtener el promedio o la media de una columna en pandas. A tiene un marco de datos. Ninguna de las cosas que probé a continuación me da el promedio de la columnaweight

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

Lo siguiente devuelve varios valores, no uno:

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

Entonces esto:

allDF.groupby('weight').mean()
Pizza de peperoni
fuente
df.groupby('weight')no era lo que querías, porque dividía el df en columnas separadas, cada una con un valor de peso distinto. En lugar de solodf['weight'].mean()
smci
allDF. weight.mean ()
DataFramed

Respuestas:

267

Si solo desea la media de la weightcolumna, seleccione la columna (que es una Serie) y llame a .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
fuente
1
¿Y si quisiera obtener una media de cada columna?
Chris
3
@Chris df.describe ()
Abhishek Poojary
2
@Chris df.mean () le da el peso de cada columna y lo devuelve en una serie.
emschorsch
24

Intente df.mean(axis=0), el axis=0argumento calcula la media sabia de la columna del marco de datos, por lo que el resultado será la axis=1media sabia de la fila para que obtenga valores múltiples.

Chandu
fuente
13

Intenta darle print (df.describe())una oportunidad. Espero que sea muy útil obtener una descripción general de su marco de datos.

nainómetro
fuente
1
display(df.describe())es mejor (en Jupyter Notebooks) porque displaydesde ipython proporciona HTML formateado en lugar de ASCII, que es más útil / agradable visualmente.
Zhanwen Chen
6

puedes usar

df.describe() 

obtendrá estadísticas básicas del marco de datos y para obtener una columna específica puede usar

df["columnname"].mean()
Arun Singh
fuente
1
Este es un duplicado de las respuestas mencionadas anteriormente.
Mehdi Boukhechba
6

También puede acceder a una columna utilizando la notación de puntos (también llamada acceso de atributo) y luego calcular su media:

df.your_column_name.mean()
Nikos Tavoularis
fuente
4

Media para cada columna 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

y si quieres un promedio de todas las columnas:

df.stack().mean()
6.0
Harvey
fuente
1

Además, si desea obtener el roundvalor después de encontrar el 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
fuente
1

Puede usar cualquiera de las dos declaraciones a continuación:

numpy.mean(df['col_name'])
# or
df['col_name'].mean()
davidbilla
fuente
Por favor, enriquezca su respuesta con los comentarios adecuados. De lo contrario, es probable que esté marcado para su eliminación
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())
CAZADOR
fuente
0

Simplemente puede ir a: df.describe () que le proporcionará todos los detalles relevantes que necesita, pero para encontrar el valor mínimo, máximo o promedio de una columna en particular (diga 'pesos' en su caso), use:

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