# pandas get column average/mean

Each Answer to this Q is separated by one/two green lines.

I can’t get the average or mean of a column in pandas. A have a dataframe. Neither of things I tried below gives me the average of the column `weight`

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

The following returns several values, not one:

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

So does this:

``````allDF.groupby('weight').mean()
``````

If you only want the mean of the `weight` column, select the column (which is a Series) and call `.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
``````

Try `df.mean(axis=0)` , `axis=0` argument calculates the column wise mean of the dataframe so the result will be `axis=1` is row wise mean so you are getting multiple values.

Do try to give `print (df.describe())` a shot. I hope it will be very helpful to get an overall description of your dataframe.

Mean for each column in `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
``````

and if you want average of all columns:

``````df.stack().mean()
6.0
``````

you can use

``````df.describe()
``````

you will get basic statistics of the dataframe and to get mean of specific column you can use

``````df["columnname"].mean()
``````

You can also access a column using the dot notation (also called attribute access) and then calculate its mean:

``````df.your_column_name.mean()
``````

Additionally if you want to get the `round` value after finding the `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
``````

You can use either of the two statements below:

``````numpy.mean(df['col_name'])
# or
df['col_name'].mean()
``````

You can simply go for:
df.describe()
that will provide you with all the relevant details you need, but to find the min, max or average value of a particular column (say ‘weights’ in your case), use:

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

Do note that it needs to be in the numeric data type in the first place.

`````` import pandas as pd
df['column'] = pd.to_numeric(df['column'], errors="coerce")
``````

Next find the mean on one column or for all numeric columns using `describe()`.

``````df['column'].mean()
df.describe()
``````

Example of result from describe:

``````          column
count    62.000000
mean     84.678548
std     216.694615
min      13.100000
25%      27.012500
50%      41.220000
75%      70.817500
max    1666.860000
``````

You can easily follow the following code

``````import pandas as pd
import numpy as np

'Subject':['Accounts','Economics','Accounts','Economics','Accounts'],
'Score':[87,64,58,74,87],