利用Python實(shí)現(xiàn)簡(jiǎn)單的Excel統(tǒng)計(jì)函數(shù)
需求分析

根據(jù)原始數(shù)據(jù),計(jì)算出累計(jì)和、回撤、連續(xù)正確、連續(xù)錯(cuò)誤、連續(xù)正確值與連續(xù)錯(cuò)誤值6項(xiàng)數(shù)據(jù),其中原始數(shù)據(jù)大于等于0認(rèn)定為正確,原始數(shù)據(jù)小于0為錯(cuò)誤。明白了要求,那我們就開(kāi)始擼代碼吧~
解決步驟
import pandas as pd
#創(chuàng)建一個(gè)計(jì)算數(shù)據(jù)的函數(shù)
def calculate(df):
pass
#讀取原始數(shù)據(jù),將索引列去除
df = pd.read_excel('需求0621.xlsx',index_col=0)
#調(diào)用計(jì)算數(shù)據(jù)的函數(shù)
calculate(df)先把整體思路寫好,再去想辦法計(jì)算每項(xiàng)數(shù)據(jù)
#計(jì)算累計(jì)和
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['累計(jì)和'] = lst1#計(jì)算回撤
lst2 = []
max = 0
for i in range(df.shape[0]):
if i == 0:
lst2.append(0)
elif df['累計(jì)和'][i] > max:
max = df['累計(jì)和'][i]
lst2.append(0)
elif df['累計(jì)和'][i] < max:
lst2.append(df['累計(jì)和'][i]-max)
elif df['累計(jì)和'][i] == max:
lst2.append(0)
df['回撤'] = lst2#計(jì)算連續(xù)正確的個(gè)數(shù)
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['連續(xù)正確'] = lst3#計(jì)算連續(xù)錯(cuò)誤的個(gè)數(shù)
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['連續(xù)錯(cuò)誤'] = lst4#計(jì)算連續(xù)正確值
lst5 = []
for i in range(df.shape[0]):
lst5.append('')
right = 0
for i in range(df.shape[0]):
if df['連續(xù)正確'][i] != 0:
right += df['N'][i]
elif df['連續(xù)正確'][i] == 0 and right != 0:
lst5[i-1] = right
right = 0
df['連續(xù)正確值'] = lst5#計(jì)算連續(xù)錯(cuò)誤值
lst6 = []
for i in range(df.shape[0]):
lst6.append('')
wrong = 0
for i in range(df.shape[0]):
if df['連續(xù)錯(cuò)誤'][i] != 0:
wrong += df['N'][i]
elif df['連續(xù)錯(cuò)誤'][i] == 0 and wrong != 0:
lst6[i-1] = wrong
wrong = 0
df['連續(xù)錯(cuò)誤值'] = lst6最后將dataframe保存到excel
df.to_excel('完成計(jì)算.xlsx')
print('保持成功')最終結(jié)果

技術(shù)總結(jié)
雖然已經(jīng)完成了要求計(jì)算出了所有的數(shù)據(jù),但在寫代碼過(guò)程中計(jì)算的步驟都是基于python基礎(chǔ)語(yǔ)法實(shí)現(xiàn)的,對(duì)于pandas的使用還要只有通過(guò)大量的練習(xí)才能夠熟練的掌握
到此這篇關(guān)于利用Python實(shí)現(xiàn)簡(jiǎn)單的Excel統(tǒng)計(jì)函數(shù)的文章就介紹到這了,更多相關(guān)Python實(shí)現(xiàn)Excel統(tǒng)計(jì)函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中用format函數(shù)格式化字符串的用法
這篇文章主要介紹了Python中用format函數(shù)格式化字符串的用法,格式化字符串是Python學(xué)習(xí)當(dāng)中的基礎(chǔ)知識(shí),本文主要針對(duì)Python2.7.x版本,需要的朋友可以參考下2015-04-04
從多個(gè)tfrecord文件中無(wú)限讀取文件的例子
今天小編就為大家分享一篇從多個(gè)tfrecord文件中無(wú)限讀取文件的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
Python 找出出現(xiàn)次數(shù)超過(guò)數(shù)組長(zhǎng)度一半的元素實(shí)例
這篇文章主要介紹了Python 找出出現(xiàn)次數(shù)超過(guò)數(shù)組長(zhǎng)度一半的元素實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
python 實(shí)現(xiàn)GUI(圖形用戶界面)編程詳解
今天小編就為大家分享一篇python 實(shí)現(xiàn)GUI(圖形用戶界面)編程詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
Python參數(shù)傳遞機(jī)制傳值和傳引用原理詳解
這篇文章主要介紹了Python參數(shù)傳遞機(jī)制傳值和傳引用原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)實(shí)現(xiàn)查找兩個(gè)字典相同點(diǎn)的方法
這篇文章主要介紹了Python實(shí)現(xiàn)查找兩個(gè)字典相同點(diǎn)的方法,涉及Python常見(jiàn)集合運(yùn)算操作技巧,需要的朋友可以參考下2018-02-02
教你用Python來(lái)制作一個(gè)自動(dòng)搶票的腳本小程序
大麥網(wǎng),是中國(guó)綜合類現(xiàn)場(chǎng)娛樂(lè)票務(wù)營(yíng)銷平臺(tái),業(yè)務(wù)覆蓋演唱會(huì)、 話劇、音樂(lè)劇、體育賽事等領(lǐng)域,但是因?yàn)槠睌?shù)有限,還有黃牛們不能丟了飯碗,所以導(dǎo)致了,很多人都搶不到票,那么,今天帶大家用Python來(lái)制作一個(gè)自動(dòng)搶票的腳本小程序,需要的朋友可以參考下2023-07-07
scrapy數(shù)據(jù)存儲(chǔ)在mysql數(shù)據(jù)庫(kù)的兩種方式(同步和異步)
這篇文章主要介紹了scrapy數(shù)據(jù)存儲(chǔ)在mysql數(shù)據(jù)庫(kù)的兩種方式(同步和異步),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02

