Python+Excel數(shù)據(jù)分析實(shí)戰(zhàn):軍事體能考核成績(jī)?cè)u(píng)定(一)項(xiàng)目概況

一诗芜、技術(shù)背景

Excel(Microsoft office)是現(xiàn)在最常用的辦公軟件,主要涉及電子表格制作埃疫、數(shù)據(jù)處理伏恐、報(bào)表輸出展示以及更高端的還有金融建模等;我們知道熔恢,在需要批處理多個(gè)Excel工作表以及工作簿的時(shí)候脐湾,需要用到一個(gè)自動(dòng)化的利器:VBA。

如果處理相對(duì)簡(jiǎn)單以及數(shù)據(jù)量不大叙淌,建議使用VBA秤掌,如果考慮產(chǎn)品版本控制愁铺,數(shù)據(jù)量過(guò)大,數(shù)據(jù)統(tǒng)計(jì)和數(shù)據(jù)分析這些問(wèn)題闻鉴,以及考慮到學(xué)習(xí)的性價(jià)比和技術(shù)的價(jià)值最大化茵乱,學(xué)習(xí)一門編程語(yǔ)言,是非常有意義的孟岛。

那么有哪些編程語(yǔ)言也可以操作Excel呢瓶竭?

(一)Go語(yǔ)言 : Excelize

Excelize 是 Go 語(yǔ)言編寫的用于操作 Office Excel 文檔基礎(chǔ)庫(kù),基于 ECMA-376渠羞,ISO/IEC 29500 國(guó)際標(biāo)準(zhǔn)斤贰。可以使用它來(lái)讀取次询、寫入由 Microsoft Excel 2007 及以上版本創(chuàng)建的電子表格文檔荧恍。支持 XLSX / XLSM / XLTM 等多種文檔格式,高度兼容帶有樣式屯吊、圖片(表)送巡、透視表、切片器等復(fù)雜組件的文檔盒卸,并提供流式讀寫 API骗爆,用于處理包含大規(guī)模數(shù)據(jù)的工作簿。

Excelize是國(guó)人編寫的基于Go語(yǔ)言的Excel庫(kù)蔽介,中文文檔相對(duì)來(lái)說(shuō)更為齊全摘投,同時(shí)Go語(yǔ)言是編譯型語(yǔ)言,編譯后只有1個(gè)運(yùn)行文件屉佳,可以方便的拷貝到其他電腦使用谷朝,同時(shí)不用安裝額外的運(yùn)行時(shí),Go語(yǔ)言還有一個(gè)優(yōu)勢(shì)就是武花,速度真的非常快杈帐。

缺點(diǎn):Go語(yǔ)言本身的錯(cuò)誤處理真的是太迷了体箕,可以看到每次對(duì)象賦值都要聲明err,然后判斷err != nil;同時(shí)在數(shù)據(jù)結(jié)構(gòu)上挑童,Go語(yǔ)言在對(duì)二維表(行列)操作時(shí)累铅,也會(huì)有一點(diǎn)繞。

結(jié)論:Excelize可以說(shuō)是國(guó)內(nèi)最好的第三方Excel操作庫(kù)站叼,雖然上手會(huì)有一點(diǎn)難度娃兽,但是在功能的豐富性和較好的運(yùn)行性能,還是值得一試的尽楔。

(二)Python : Pandas

Pandas是一個(gè)強(qiáng)大的分析結(jié)構(gòu)化數(shù)據(jù)的工具集投储;它的使用基礎(chǔ)是Numpy(提供高性能的矩陣運(yùn)算)第练,用于數(shù)據(jù)挖掘和數(shù)據(jù)分析。 Pandas中有DataFrame和Series兩個(gè)數(shù)據(jù)類型玛荞,就好像Excel的工作表和數(shù)據(jù)列(轉(zhuǎn)置后也可以看作:數(shù)據(jù)行)娇掏,這就和Excel天生契合。

缺點(diǎn):Pandas在數(shù)據(jù)處理上是非常方便的勋眯,但在文檔外操作婴梧,如批量修改工作簿名稱,就需要引入os庫(kù)客蹋;同時(shí)如果已有Excel文檔是帶格式(顏色填充塞蹭、字體設(shè)置、單元格合并等)讶坯,寫入Excel的時(shí)候就會(huì)破壞掉原來(lái)的格式番电。同時(shí),Python作為腳本語(yǔ)言闽巩,如果到其他電腦運(yùn)行钧舌,需要額外安裝運(yùn)行環(huán)境。

結(jié)論:如果純粹的處理大批量數(shù)據(jù)(十萬(wàn)級(jí)以上)涎跨,pandas自帶各類聚合函數(shù)洼冻,讓你處理起來(lái)得心應(yīng)手;同時(shí)Pandas可以結(jié)合matplotlib等第三方繪圖庫(kù)隅很,可以方便的可視化數(shù)據(jù)撞牢,如果你的數(shù)據(jù)本身可以離開Excel,如數(shù)據(jù)是從數(shù)據(jù)庫(kù)導(dǎo)入Excel叔营,那么也可以直接使用Pandas導(dǎo)入數(shù)據(jù)庫(kù)數(shù)據(jù)屋彪,然后在Pandas上進(jìn)行分析處理;Pandas底層使用numpy绒尊,在矩陣運(yùn)算中具有非常高的性能畜挥。

(三)Python : Openpyxl

openpyxl是一個(gè)用于讀取/寫入Excel2007及以上版本(即xlsx格式)文件的Python庫(kù),不論是Excel內(nèi)的特殊格式婴谱,還是單元格處理蟹但,都提供了相應(yīng)的函數(shù),與Excelize近乎相當(dāng)谭羔。

缺點(diǎn):Openpyxl不像pandas那樣华糖,底層使用numpy,所以在運(yùn)行速度上瘟裸,其實(shí)要比Excelize和pandas要慢(但是還是要比VBA要快一點(diǎn))客叉;同時(shí)也是因?yàn)镻ython作為腳本語(yǔ)言,如果要放到其他電腦運(yùn)行,需要安裝相應(yīng)的運(yùn)行環(huán)境兼搏。

結(jié)論:相對(duì)來(lái)說(shuō)卵慰,Openpyxl與VBA的應(yīng)用場(chǎng)景重合度會(huì)更高一點(diǎn),處理的思路都是比較相近的向族;Python在語(yǔ)法上呵燕,比VBA要豐富和方便的多,如果需要切換件相,學(xué)習(xí)曲線會(huì)比較平滑再扭。

(四)Python : Xlwings

xlwings也是Python操作Excel的第三方庫(kù),很大程度上就是補(bǔ)全Pandas的缺點(diǎn)夜矗,可以在方便的處理文檔本身泛范,如修改工作表名稱,將Pandas的數(shù)據(jù)處理結(jié)果調(diào)用到Excel原來(lái)的文件等紊撕。

缺點(diǎn):在功能上罢荡,如文檔格式化等相較Excelize和Openpyxl來(lái)說(shuō),還是有不少功能沒(méi)有實(shí)現(xiàn)对扶。

結(jié)論:xlwings更多的是可以作為Pandas的擴(kuò)展区赵,學(xué)習(xí)曲線和Openpyxl也比較相似。

其他

其他的還有C#的EPPlus/NPOI浪南,Java的POI笼才,easyExcel;JavaScript的exceljs等络凿,也是不錯(cuò)的Excel操作庫(kù)骡送,但學(xué)習(xí)曲線更為陡峭,應(yīng)用場(chǎng)景也更為復(fù)雜絮记。如果有一天摔踱,厭倦了VBA,但是又不想使用Go和Python怨愤,也是可以去嘗試一下的派敷。

本項(xiàng)目實(shí)戰(zhàn)中,我選擇了Python的Openpyxl模塊撰洗,有一個(gè)免費(fèi)的B站學(xué)習(xí)資料推薦給大家膀息,我就是學(xué)完這個(gè)教程后,開發(fā)了這個(gè)項(xiàng)目了赵。講解得細(xì)致易懂,還可以作為自己的代碼參考甸赃,感謝UP主路過(guò)嘅蒙面超V柿汛。

(基礎(chǔ)+鞏固)小白零基礎(chǔ)開始用Python處理Excel數(shù)據(jù)

二、項(xiàng)目任務(wù)

軍事體能考核成績(jī)?cè)u(píng)定是什么玩意呢?

每個(gè)人的體能測(cè)試有單杠络断、仰臥起坐裁替、30米x2蛇形跑、3000米跑四個(gè)項(xiàng)目貌笨,外加體型是否合格(BMI身體質(zhì)量指數(shù)或者PBF體脂百分比),每項(xiàng)原始測(cè)試數(shù)據(jù),通過(guò)不同項(xiàng)目各自規(guī)定的標(biāo)準(zhǔn)轉(zhuǎn)換成100分制的分?jǐn)?shù)怠褐,最終匯總得出個(gè)人的評(píng)定成績(jī)褂删,而且能夠批量計(jì)算。

考慮到大家日常工作中膀跌,最常用的就是用Excel登統(tǒng)計(jì)原始成績(jī)遭商,所以本項(xiàng)目采用Python+Excel的設(shè)計(jì),直接對(duì)Excel登統(tǒng)計(jì)的所有原始成績(jī)進(jìn)行處理捅伤,得到換算結(jié)果劫流,并匯總個(gè)人成績(jī)?cè)u(píng)定。

Excel登統(tǒng)計(jì)的原始成績(jī)?nèi)缦聢D:


輸入原始數(shù)據(jù)舉例

計(jì)算結(jié)果如下圖:


計(jì)算結(jié)果舉例

三丛忆、項(xiàng)目難點(diǎn)

分性別:“男祠汇、女”,不同性別的評(píng)分標(biāo)準(zhǔn)不同熄诡,甚至考核項(xiàng)目不同可很;
分年齡:“24歲以下、25~27等”粮彤,不同年齡段根穷,評(píng)分標(biāo)準(zhǔn)不同;
分類別:“三類导坟、二類屿良、一類”,不同類別惫周,評(píng)分標(biāo)準(zhǔn)不同尘惧;
分海拔:“2000米以下,2001~2100等”递递,不同海拔喷橙,評(píng)分標(biāo)準(zhǔn)不同;
評(píng)分標(biāo)準(zhǔn)不規(guī)律登舞,不連續(xù)贰逾,是離散型的設(shè)置,查詢數(shù)據(jù)有難度菠秒。

以最復(fù)雜的高原男子3000米標(biāo)準(zhǔn)為例疙剑,海拔2001~2100米為一個(gè)標(biāo)準(zhǔn),不同年齡段標(biāo)準(zhǔn)不同,24歲以下言缤,11分42秒為100分嚼蚀,12分07秒為95分,12分22秒為90分管挟,分?jǐn)?shù)都是相差5分轿曙,但時(shí)間間隔卻是不同的25秒和15秒,不規(guī)律僻孝。而2101~2200米的標(biāo)準(zhǔn)又有變化导帝,因?yàn)楹0?101~3000米時(shí),每增加100米皮璧,標(biāo)準(zhǔn)遞增8秒舟扎。但是原始成績(jī)卻是時(shí)間段內(nèi)連續(xù)的,比如11分43秒悴务,11分44秒等睹限。


高原男子3000米標(biāo)準(zhǔn)

其它的考核項(xiàng)目標(biāo)準(zhǔn)相對(duì)簡(jiǎn)單一點(diǎn),在后面的文章中具體分析讯檐。

四羡疗、項(xiàng)目環(huán)境

Win7 64位深度操作系統(tǒng),正式優(yōu)化版202003:


Microsoft Office專業(yè)增強(qiáng)版2016别洪,還沒(méi)激活:


Python開發(fā)工具為PyCharm 2020.1.3社區(qū)版本:


PyCharm的項(xiàng)目解釋器為Python3.8叨恨,安裝openpyxl、pyinstaller等包:


項(xiàng)目解釋器設(shè)置

后面的文章中挖垛,將一步步詳細(xì)介紹整個(gè)開發(fā)過(guò)程痒钝,直至項(xiàng)目完成。目前項(xiàng)目已經(jīng)完成痢毒,在試用當(dāng)中送矩,敬請(qǐng)期待!

系統(tǒng)運(yùn)行演示

原創(chuàng)不易哪替,有償下載栋荸,請(qǐng)多支持:
軍事體能考核成績(jī)?cè)u(píng)定系統(tǒng)下載

軍事體能考核成績(jī)?cè)u(píng)定系統(tǒng)全套Python源碼下載

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市凭舶,隨后出現(xiàn)的幾起案子晌块,更是在濱河造成了極大的恐慌,老刑警劉巖帅霜,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件匆背,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡身冀,警方通過(guò)查閱死者的電腦和手機(jī)靠汁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門蜂大,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蝶怔,你說(shuō)我怎么就攤上這事⌒质” “怎么了踢星?”我有些...
    開封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)隙咸。 經(jīng)常有香客問(wèn)我沐悦,道長(zhǎng),這世上最難降的妖魔是什么五督? 我笑而不...
    開封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任藏否,我火速辦了婚禮,結(jié)果婚禮上充包,老公的妹妹穿的比我還像新娘副签。我一直安慰自己,他們只是感情好基矮,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開白布淆储。 她就那樣靜靜地躺著,像睡著了一般家浇。 火紅的嫁衣襯著肌膚如雪本砰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天钢悲,我揣著相機(jī)與錄音点额,去河邊找鬼。 笑死莺琳,一個(gè)胖子當(dāng)著我的面吹牛还棱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播芦昔,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼诱贿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了咕缎?” 一聲冷哼從身側(cè)響起珠十,我...
    開封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎凭豪,沒(méi)想到半個(gè)月后焙蹭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嫂伞,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年孔厉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拯钻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡撰豺,死狀恐怖粪般,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情污桦,我是刑警寧澤亩歹,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站凡橱,受9級(jí)特大地震影響小作,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜稼钩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一顾稀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧坝撑,春花似錦静秆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至击儡,卻和暖如春塔沃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背阳谍。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工蛀柴, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人矫夯。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓鸽疾,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親训貌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子制肮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容