pandas同时读取一个excel中几个sheets,并且将其中对应的列求平均值

有一个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 是按列来合并

结果大概是这样的

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-06-18
可以通过 data structure intro setion 来查看有关该节内容的详细信息。 1、可以通过传递一个list对象来创建一个series,pandas会默认创建整型索引: 2、通过传递一个numpy array,时间索引以及列标签来创建一个dataframe:
第2个回答  2020-06-18
有5个sheet,每个sheet中都有5列数据,数据都是对应的,列