利用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ò)誤。明白了要求,那我們就開始擼代碼吧~
解決步驟
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-02Python 找出出現(xiàn)次數(shù)超過(guò)數(shù)組長(zhǎng)度一半的元素實(shí)例
這篇文章主要介紹了Python 找出出現(xiàn)次數(shù)超過(guò)數(shù)組長(zhǎng)度一半的元素實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05python 實(shí)現(xiàn)GUI(圖形用戶界面)編程詳解
今天小編就為大家分享一篇python 實(shí)現(xiàn)GUI(圖形用戶界面)編程詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07Python參數(shù)傳遞機(jī)制傳值和傳引用原理詳解
這篇文章主要介紹了Python參數(shù)傳遞機(jī)制傳值和傳引用原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)實(shí)現(xiàn)查找兩個(gè)字典相同點(diǎn)的方法
這篇文章主要介紹了Python實(shí)現(xiàn)查找兩個(gè)字典相同點(diǎn)的方法,涉及Python常見集合運(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-07scrapy數(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