有一个excel文件,文件中有5个sheet,每个sheet中都有5列数据,数据都是对应的,列名如col_list所示。我想分别计算每个sheet中第一列a的平均值,b的平均值.....,写了一个遍历读取不同sheet的代码,可以实现,但是不知道如何求均值,求大神给写点代码。
f = pd.ExcelFile('E:\Python\CD\CD2020.xlsx')
print(f.sheet_names) #没有问题
col_list = ['a','b','c','d','e']
for i in f.sheet_names:
data = pd.read_excel(f, sheet_name=i,header=0,index_col=0,parse_dates={'datetime': [0]}, encoding='utf-8')
print('\n数据', i, '为:\n', data) #也没有问题
接下来该如何处理?如何同时读取每个sheet的第一列求均值?
前面的回答完全不知道在说什么跟题主的问题没关毛钱关系。。
这个问题里没有描述是要将5个 sheet 的平均值合并到一起展示还是单独展示,我就按合并的展示来操作吧
f = pd.ExcelFile('E:\Python\CD\CD2020.xlsx')
print(f.sheet_names)
col_list = ['a','b','c','d','e']
result = [] # 存放每个 sheet 求平均之后的结果
for i in f.sheet_names:
data = pd.read_excel(f, sheet_name=i,header=0,index_col=0,parse_dates={'datetime': [0]}, encoding='utf-8')
result.append(data.mean().to_frame(name=i)) # 求均值并放入列表
pd.concat(result, axis=1) # 将结果中的5个 sheet 合并成一个 dataframe
解释一下:
data.mean() 计算出每一列的平均值,结果是一个 Series 。为了方便后面合并用方法 .to_frame(name=i) 转换成 dataframe
pd.concat 可以用来合并多个 dataframe 参数 axis=1 是按列来合并
结果大概是这样的