利用Python实现简单的Excel统计函数
作者:hqx 发布时间:2021-09-27 09:21:09
标签:Python,Excel,统计,函数
需求分析
根据原始数据,计算出累计和、回撤、连续正确、连续错误、连续正确值与连续错误值6项数据,其中原始数据大于等于0认定为正确,原始数据小于0为错误。明白了要求,那我们就开始撸代码吧~
解决步骤
import pandas as pd
#创建一个计算数据的函数
def calculate(df):
pass
#读取原始数据,将索引列去除
df = pd.read_excel('需求0621.xlsx',index_col=0)
#调用计算数据的函数
calculate(df)
先把整体思路写好,再去想办法计算每项数据
#计算累计和
lst1 = []
sum = 0
for i in range(df.shape[0]):
if i == 0:
lst1.append(df['N'][i])
sum += df['N'][i]
else:
sum += df['N'][i]
lst1.append(sum)
df['累计和'] = lst1
#计算回撤
lst2 = []
max = 0
for i in range(df.shape[0]):
if i == 0:
lst2.append(0)
elif df['累计和'][i] > max:
max = df['累计和'][i]
lst2.append(0)
elif df['累计和'][i] < max:
lst2.append(df['累计和'][i]-max)
elif df['累计和'][i] == max:
lst2.append(0)
df['回撤'] = lst2
#计算连续正确的个数
lst3 = []
correct = 0
for i in range(df.shape[0]):
if df['N'][i] >= 0:
correct += 1
lst3.append(correct)
else:
lst3.append(0)
correct = 0
df['连续正确'] = lst3
#计算连续错误的个数
lst4 = []
mistake = 0
for i in range(df.shape[0]):
if df['N'][i] < 0:
mistake += 1
lst4.append(mistake)
else:
lst4.append(0)
mistake = 0
df['连续错误'] = lst4
#计算连续正确值
lst5 = []
for i in range(df.shape[0]):
lst5.append('')
right = 0
for i in range(df.shape[0]):
if df['连续正确'][i] != 0:
right += df['N'][i]
elif df['连续正确'][i] == 0 and right != 0:
lst5[i-1] = right
right = 0
df['连续正确值'] = lst5
#计算连续错误值
lst6 = []
for i in range(df.shape[0]):
lst6.append('')
wrong = 0
for i in range(df.shape[0]):
if df['连续错误'][i] != 0:
wrong += df['N'][i]
elif df['连续错误'][i] == 0 and wrong != 0:
lst6[i-1] = wrong
wrong = 0
df['连续错误值'] = lst6
最后将dataframe保存到excel
df.to_excel('完成计算.xlsx')
print('保持成功')
最终结果
技术总结
虽然已经完成了要求计算出了所有的数据,但在写代码过程中计算的步骤都是基于python基础语法实现的,对于pandas的使用还要只有通过大量的练习才能够熟练的掌握
来源:https://blog.csdn.net/m0_69043821/article/details/125417629


猜你喜欢
- Css tranistions允许元素的属性在单位时间内发生平滑的过渡,在阅读完《CSS Transitions Module Level
- python多线程适合IO密集型场景,而在CPU密集型场景,并不能充分利用多核CPU,而协程本质基于线程,同样不能充分发挥多核的优势。针对计
- 在页面中自定义了changejs函数后页面提示错误:Active Server Pages 错误 'ASP 0138' 嵌套
- 由于gitlab的免费私有仓库的优势,所以在公司使用gitlab会多一些,对于gitlab来说,注册需要翻墙,而登录不需要。关于git是做什
- 前言需要注意,对实例化的文本组件的insert、delete等操作的index**都是浮点型而不是整型**,(1.0,2.0)表示的是对第一
- 本文实例讲述了JS高阶函数原理与用法。分享给大家供大家参考,具体如下:如果您正在学习JavaScript,那么您必须遇到高阶函数这个术语。这
- 在Python中,当我们有两个字典需要合并的时候,可以使用字典的 update 方法,例如:a = {'a': 1,
- 首先要兼容IE\FF滴然后有一个环境与条件:必须是使用em单位布局。因为这个是利用字号做缩放效果,并且兼容fontSize各项单位,例如px
- 这篇文章主要介绍了基于python读取.mat文件并取出信息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
- 折腾了一天的时间,才弄出点眉目来。 做AJAX应用或Flash应用,提交中文内容到后台,涉及到编码解码(encode、decode)及编码格
- 下面通过一段代码给大家介绍php参数过滤class mysafe{ public $logname; public $isshwomsg;
- 如何在VS2013下对MySQL5.6进行连接,本文为大家提供了解决方案,供大家参考,具体内容如下环境:win832系统,VS2013,My
- 1. python中创建新的csv文件(1). 使用csv.writer()创建:代码如下:import csvheaders = [
- 在Web开发中,后端代码写起来其实是相当容易的。例如,我们编写一个REST API,用于创建一个Blog:@api@post('/a
- 什么是Mosaic数据增强方法Yolov4的mosaic数据增强参考了CutMix数据增强方式,理论上具有一定的相似性!CutMix数据增强
- 这两天做了一个判断浏览器类型和版本号的业务,记录下相关的js代码: function allinfo(){ var ua = navigat
- 在TP5公共common.php文件里写<?php //计算某个类别所属的类别层数 function getcatelayer($ca
- 定义一个绘制甘特图的类# -*- coding: utf-8 -*-from datetime import datetimeimport
- 判断是否xx开始使用startswith示例代码:String = "12345 上山打老虎"if str(String
- python中pass的作用?pass代表一个空的语句块Python中pass的作用:示例1,定义一个类,类中没有任何内容保存,运行之后,该