pandas同时读取一个excel中几个sheets,并且将其中对应的列求平均值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 是按列来合并
结果大概是这样的
pandas读取和写入excel多个sheet表单
一、读取单个表单
import pandas as pd
excel_reader=pd.ExcelFile(‘文件.xlsx‘) # 指定文件 sheet_names = excel_reader.sheet_names # 读取文件的所有表单名,得到列表 df_data = excel_reader.parse(sheet_name=sheet_names[i]) # 读取表单的内容,i是表单名的索引,等价于pd.read_excel(‘文件.xlsx‘, sheet_name=sheet_names[i])
二、写入多个表单
import pandas as pd
excel_writer = pd.ExcelWriter(‘文件.xlsx‘) # 定义writer,选择文件(文件可以不存在) df.to_excel(‘excel_writer, sheet_name=‘自定义sheet_name‘, index=False‘) # 写入指定表单 excel_writer.save() # 储存文件 excel_writer.close() # 关闭writer
以上是关于pandas同时读取一个excel中几个sheets,并且将其中对应的列求平均值的主要内容,如果未能解决你的问题,请参考以下文章
pandas.read_excel 参数“sheet_name”不起作用