记使用Python+Pandas和Scipy库计算TRIMMEAN(截尾均值)的demo

需求:一个excel表格,内有46个sheet页,每个sheet页都有30组左右的数据,需要计算每个sheet页中每组数据的TRIMMEAN。并将计算的结果存在当前sheet页中

原始数据格式如图所示,

解决办法:首先是找到计算TRIMMEAN的库,即需要用到scipy中的stats,里边有trim_mean()方法

第二步:要求将d=(1,2,4)的所有a列的数据读取出来,传给trim_mean()进行计算,并将计算结果保存到表格中,

代码如下

import pandas as pd
from scipy.stats import *

excelname = 'dura.xlsx' #原始数据文件
writ = pd.ExcelWriter('dura1.xlsx')  #创建新的excel表格
def trim11(a):  #计算trimmean的函数
    return trim_mean(a,0.2) 



for x in range(0,46):  # 循环读取sheet页
    df = pd.read_excel(excelname,sheet_name=x)  #读取原始数据文件,并通过循环读取不同的sheet页面
    
    dlist = []  #创建空列表,存储duration
    ralist = []  #创建空列表,存储计算的结果rate
    
    dict1 = {"du":0,"ra":0} # 创建字典,存储结构保存使用
    for y in range(1,40):  #循环判断d是否存在,因为每个sheet页中的duration并不是从1开始的,有的从1开始,有的从2开始
        if y in df['d'].values:  #判断d是否存在该值,如果存在,继续下面的代码
            a = df.loc[df['d']==y,['d','a']]  #存在d,则筛选d,例如duration=1,则把所有的1都筛选出来
            aa = a['a'].values  #筛选出来所有的d=1后,把对应的a值取出来,并赋值给aa
            b = trim11(aa)  #将aa变量存储的值传入到计算trimmean的函数中,改函数会返回计算结果,并将结果赋值给b
            # print(x+1,y,b)  #x为sheet名称,y为d,b为a的值
            dlist.append(y)  #将当前循环中的d值添加到dlist列表中
            ralist.append(b)  #将当前循环中计算的a结果添加到ralist列表中
    
    #下面的代码是将列表添加到字典中    
    dict1['du'] = dlist
    dict1['ra']=ralist
    #下面的代码是将dict1字典的数据转换成DataFrame数据,pandas库可以识别的数据,并保存到excel中
    data2 = pd.DataFrame(dict1)
    savedata = pd.concat([df,data2],axis=1)
    savedata.to_excel(writ,sheet_name=str(x+1))  #保存时指定不同的sheet名称

#所有的循环操作结束,将文件进行保存
writ.save()
writ.close()

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Test9912

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值