求不同维度的均值:现有成绩表df:

df表是某班从8月到12月某一学科的成绩表,计算每位同学5个月的平均成绩,效果如下:
小明 89.8
小红 89.8
小王 89.4
dtype: float64
每个月份所有同学的平均成绩,
8月 90.00
9月 88.67
10月 92.67
11月 89.33
12月 87.67
dtype: float64
该学科五个月班级总的平均成绩,
89.67
要求最多保留两位小数。
解题思路:每位同学5个月的平均成绩实质是求每一列的均值,直接对df表调用mean()方法,默认是对列计算均值;
每个月的平均成绩实质是计算每一行的均值,作为DataFrame的方法,mean()方法可以选择沿着哪个轴计算均值,指定axis=1计算的是每行数据的均值,题目要求最多保留两位小数,计算均值后得到的数据类型是series,可以调用series的round方法设置精度;
计算5个月班级总的平均成绩,计算表中所有数据的均值,计算均值前需要把二维的表通过stack方法降维成一维,再计算均值得到的就是整个数据集的均值,得到一个浮点型数据,所以不能调用pandas中的方法,需要调用python原生函数round来控制精度。
具体代码如下:
import pandas as pd
df = pd.DataFrame({"小明":[90,86,93,91,89],"小红":[92,90,89,95,83],"小王":[88,90,96,82,91]}
,index = ["8月","9月","10月","11月","12月"]
)
df.mean()#计算每一列的均值
df.mean(1).round(2) #计算每一行的均值
round(df.stack().mean(),2) #计算所有数据的均值









暂无数据