摘要:目前高??荚嚦煽兊姆治?,主要是借助于 Excel 等對(duì)學(xué)生的成績進(jìn)行簡單的統(tǒng)計(jì),但在數(shù)據(jù)量較大時(shí),在Excel中的操作就有些過于繁瑣。這里以一個(gè)虛擬的班級(jí)的Java考試成績?yōu)槔?,使用?dāng)前熱門的數(shù)據(jù)分析語言Python,并且綜合運(yùn)用了Python的第三方庫pandas和matplotlib進(jìn)行數(shù)據(jù)可視化分析,實(shí)現(xiàn)學(xué)生數(shù)據(jù)的讀入、數(shù)據(jù)統(tǒng)計(jì)、排序、分組以及圖形輸出平均成績、不及格人數(shù)等之外,還將分析出班級(jí)學(xué)生知識(shí)點(diǎn)掌握情況。期望能為教師調(diào)整教學(xué)安排與教學(xué)方法提供參考,從而提升教學(xué)質(zhì)量。
關(guān)鍵詞:Python;Pandas;Matplotlib
1前言
在當(dāng)前這個(gè)信息時(shí)代,因?yàn)橛?jì)算機(jī)強(qiáng)大的數(shù)據(jù)處理能力和網(wǎng)絡(luò)迅捷便利的傳播方式,學(xué)生成績信息的管理、統(tǒng)計(jì)和分析已經(jīng)非常方便。成績是各大學(xué)校教育教學(xué)環(huán)節(jié)中的一項(xiàng)重要指標(biāo),是學(xué)生學(xué)習(xí)效果、學(xué)習(xí)態(tài)度的主要體現(xiàn)。對(duì)考試成績的分析,能夠使學(xué)校檢測出最近一段時(shí)間之內(nèi)學(xué)生的學(xué)習(xí)情況,學(xué)習(xí)態(tài)度,還能很大程度的反映出教師的教學(xué)質(zhì)量、治學(xué)態(tài)度和其教學(xué)方法的科學(xué)性,以及學(xué)校對(duì)學(xué)生教學(xué)管理水平。在對(duì)考試成績進(jìn)行數(shù)據(jù)分析和評(píng)價(jià)后,充分發(fā)揮它的反饋?zhàn)饔?,以此加?qiáng)教學(xué)管理,改進(jìn)教學(xué)方法,提高教學(xué)質(zhì)量。同時(shí)也能夠指導(dǎo)考試的命題工作,提高考試檢測質(zhì)量,還能夠加強(qiáng)學(xué)校的題庫建設(shè)。
2 Python及開發(fā)環(huán)境簡介
2.1 Python簡介
Python是一種跨平臺(tái)的計(jì)算機(jī)程序設(shè)計(jì)語言。 是一個(gè)高層次的結(jié)合了解釋性、編譯性、互動(dòng)性和面向?qū)ο蟮哪_本語言。Python主要運(yùn)用于科學(xué)計(jì)算和統(tǒng)計(jì)、人工智能、桌面界面開發(fā)、軟件開發(fā)、后端開發(fā)、網(wǎng)絡(luò)爬蟲等等方面。Python設(shè)計(jì)上的風(fēng)格是清晰劃一的,這使得Python成為一門易讀、易維護(hù),并且被大量用戶所歡迎的、用途廣泛的語言。Python語言的優(yōu)點(diǎn)有很多,程序員們選擇使用它作為開發(fā)語言大多是因?yàn)槠浜唵我讓W(xué)、免費(fèi)開源、還有著許多功能強(qiáng)大第三方庫。
2.2開發(fā)環(huán)境PyCharm Community Edtion(社區(qū)版)
PyCharm是一個(gè)由JetBrains打造的 Python 集成開發(fā)環(huán)境,也是使用Python語言的編程人員最常用的一款Python IDE。PyCharm分為社區(qū)版、專業(yè)版和教育版,教育版適合教學(xué)使用,專業(yè)版功能最全的收費(fèi)版,社區(qū)版就是專業(yè)版的閹割版本,但解決一般問題已經(jīng)足夠,且是免費(fèi)的,本案例就是使用的社區(qū)版。PyCharm在擁有調(diào)試、語法高亮、Project管理、代碼跳轉(zhuǎn)、智能提示、自動(dòng)完成、單元測試、版本控制這些一般集成開發(fā)環(huán)境就擁有的功能的同時(shí),它還提供了很多很好的功能用于Django(一種基于Python的Web開發(fā)框架)開發(fā),而且大多數(shù)Python的第三方庫可以在PyCharm中直接下載,非常便利。
3 學(xué)生成績分析的設(shè)計(jì)與實(shí)現(xiàn)
3.1數(shù)據(jù)導(dǎo)入
數(shù)據(jù)導(dǎo)入是程序設(shè)計(jì)的開始,有了數(shù)據(jù)才能進(jìn)行處理。本程序需要處理的數(shù)據(jù)信息是學(xué)生的成績信息,這些成績信息是由老師在學(xué)生考試過后整理得到。得出成績后,將成績按照學(xué)號(hào),姓名,性別,成績的順序依次輸入到cjb.xlsx表格文件中保存。將表格移動(dòng)到程序所在的目錄下,在程序中即可使用pandas庫中的讀取函數(shù)之一的read_excel讀入數(shù)據(jù)。主要代碼如下所示。
import pandas as pd
data = pd.read_excel(rcjb.xlsx)
print(data)
執(zhí)行后,得到的數(shù)據(jù)如下圖3.1所示:
3.2 成績處理
3.2.1 基本統(tǒng)計(jì)
DataFrame.describe()是pandas中一個(gè)能對(duì)數(shù)據(jù)進(jìn)行快速統(tǒng)計(jì)的方法,用它可以完成對(duì)數(shù)據(jù)的人數(shù)、平均分、最高分、最低分,百分位數(shù)值的統(tǒng)計(jì)。代碼如下:
print(data['成績'].describe())
如果只想要單獨(dú)得到平均分或最低分、最高分等數(shù)據(jù),只需將代碼最后的describe()變成mean()或min()、max()即可。
得到的數(shù)據(jù)如下下圖3.2所示:
通過圖像,我們可以得到該班級(jí)有10人參加考試,班級(jí)平均分為77分,較為良好;最高分90,最低分65,在后續(xù)教學(xué)中需要對(duì)65分的同學(xué)進(jìn)行輔導(dǎo)幫助;成績標(biāo)準(zhǔn)差為7.93,較為平穩(wěn),說明該班級(jí)學(xué)生總體差距不是很大。
3.2.2 成績排序
DataFrame.sort_value()是pandas中的排序方法,使用它既可以根據(jù)列數(shù)據(jù),也可根據(jù)行數(shù)據(jù)排序。本案例中自然是根據(jù)學(xué)生成績進(jìn)行排序,降序排序代碼如下:
total=data.sort_values(by='成績',ascending=False)
若想要成績升序排序,只需要把代碼中ascending=False改為ascending=True即可。
得到的數(shù)據(jù)如下圖3.3所示:
通過排序輸出后,我們得到班級(jí)第一名為“楊晨輝”同學(xué),班級(jí)擇優(yōu)時(shí)可以優(yōu)先考慮;其中,85分以上的優(yōu)秀同學(xué)有兩名,可以鼓勵(lì)他們參加相關(guān)大賽,開拓自己視野。
3.2.3 分組統(tǒng)計(jì)
DataFrame.groupby()是pandas中的分組方法。本案例中是以學(xué)生性別進(jìn)行的分組,代碼如下:
sexdata=data[data['性別']=='男']
group=sexdata.groupby(by='性別').mean()['成績']
print(group)
女生的分組同理,將代碼中的“男”改成“女”即可,如果還想要最高分等其他數(shù)據(jù),那么把代碼中的mean()改為max()或其他即可。
執(zhí)行后就能分別得男生、女生的平均成績信息,結(jié)果如下圖3.4、圖3.5所示:
通過圖像,我們得到女生的平均成績比男生高,說明女生在本科目的學(xué)習(xí)能力比男生強(qiáng)或女生的學(xué)習(xí)態(tài)度大多比男生端正,需要適當(dāng)督促該班級(jí)男生的學(xué)習(xí),多讓他們?cè)谡n后進(jìn)行交流促進(jìn)。
3.3 學(xué)生成績的圖形輸出
條形圖中,橫軸上的數(shù)據(jù)是一個(gè)獨(dú)立且具體的數(shù)據(jù),它們之間是有空隙的,本案例中的條形圖的橫軸就是用來表示知識(shí)點(diǎn)這個(gè)具體數(shù)據(jù)名稱,而直方圖中,橫軸上的數(shù)據(jù)是連續(xù)的,是一個(gè)范圍,它們中間不存在空隙,因此我用它的橫軸來表示各分?jǐn)?shù)段;條形圖是用條形的高度表示頻數(shù)的大小,案例中的條形圖的高度只有0和1,用來表示掌握與否,而直方圖是用長方形的面積表示頻數(shù),也就是人數(shù)。
3.3.1直方圖(學(xué)生成績分布)
直方圖是數(shù)值數(shù)據(jù)分布精確的圖形表示。直方圖一般用橫軸表示數(shù)據(jù)類型,縱軸表示分布情況。本案例用橫軸表示成績分?jǐn)?shù)分布,用縱軸表示人數(shù)分布。代碼如下:
plt.hist(data[‘成績‘],5)
plt.show()
輸出圖像如下圖3.6所示:
從這個(gè)圖中可以得到,65~70分之間的有2人,70~75分之間有1人,75~80之間有3人,80~85之間有2人,85~90之間有2人,該班級(jí)學(xué)生成績分布較為均勻,其中75分以上成績良好的學(xué)生居多數(shù),鼓勵(lì)他們繼續(xù)保持,在后續(xù)的課題講解中也可以嘗試發(fā)散講解,拓展該班學(xué)生的知識(shí)面。
3.3.2條形圖(學(xué)生知識(shí)點(diǎn)掌握情況)
有時(shí)在圖像輸出之前,有些數(shù)據(jù)可能從原始材料中不能直接獲得,這時(shí)就需要對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,通過處理得到自己想要的信息后再通過圖像輸出。本案例中,需要通過圖像輸出的是本班級(jí)學(xué)生知識(shí)點(diǎn)的掌握情況,而一般老師通過學(xué)生試卷只能得到學(xué)生的每題得分情況,這時(shí)就需要對(duì)數(shù)據(jù)進(jìn)行預(yù)處理。將每題的知識(shí)點(diǎn)列出來,得分超過知識(shí)點(diǎn)總分60%的記為1,表示基本掌握;得分沒有超過知識(shí)點(diǎn)總分的60%的記為0,每個(gè)學(xué)生的掌握情況處理完成后,再進(jìn)行班級(jí)學(xué)生成績的處理,將班級(jí)學(xué)生知識(shí)點(diǎn)得分情況記為1的人數(shù)超過班級(jí)總?cè)藬?shù)60%的再次記為1,表示班級(jí)基本掌握本知識(shí)點(diǎn);如果沒有超過60%,則記為0,表示班級(jí)沒有掌握本知識(shí)點(diǎn)。這些數(shù)據(jù)都處理完成后,就可以通過Matplotlib進(jìn)行圖像輸出了。圖像輸出的代碼如下:
font=FontProperties(fname=r'C:\Windows\Fonts\simkai.ttf',size=12)
points=['類','包','接口','數(shù)組']
con=['1','1','0','1']
plt.bar(range(len(points)),con)
plt.xticks(range(len(points)),points,F(xiàn)ontProperties=font)
plt.show()
當(dāng)然,如果想要了解更多知識(shí)點(diǎn)的掌握情況,只需要在知識(shí)點(diǎn)后面再次添加即可。
輸出圖像如下圖3.7所示:
從此圖中,我們可以得到本班級(jí)學(xué)生對(duì)“接口”知識(shí)點(diǎn)的掌握不夠好,老師可以以此來制定下一步的教學(xué)計(jì)劃,對(duì)該班級(jí)學(xué)生在此知識(shí)點(diǎn)上進(jìn)行詳細(xì)講解、加深訓(xùn)練以此加強(qiáng)本班學(xué)生對(duì)于該知識(shí)點(diǎn)的掌握。
4結(jié)語
Python發(fā)展接近三十年,如今已經(jīng)確實(shí)成為了編程語言中的“紅人”。很多程序員都在使用Python,因?yàn)镻ython涉及范圍廣泛,從數(shù)據(jù)處理到人工智能,從Web解析到網(wǎng)絡(luò)空間,從人機(jī)交互到藝術(shù)設(shè)計(jì),門類眾多且容易上手,學(xué)會(huì)了Python,可以大幅提高IT人的自身競爭力。隨著時(shí)代的發(fā)展越來越快,市場需求越來越大,Python的應(yīng)用也越來越廣泛。在如今這個(gè)大數(shù)據(jù)的信息化時(shí)代,計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)的發(fā)展一天比一天迅速,而這些技術(shù)的快速發(fā)展便是來自于大眾對(duì)其的需求愈來愈高,對(duì)其的依賴性越來越大。因此,為了不被這個(gè)時(shí)代淘汰,開發(fā)者們也需要不斷的學(xué)習(xí),不斷地突破自我。
參考文獻(xiàn):
[1]劉雨珂,王平.基于Python+Pandas+Matplotlib的學(xué)生成績數(shù)據(jù)統(tǒng)計(jì)與圖形輸出實(shí)現(xiàn)[J].福建電腦,2017(11).
[2]高紅兵.基于Pandas大學(xué)生考試成績分析[J].內(nèi)江科技.2017(12)。
[3]王媛.基于Python的學(xué)生綜合成績分析程序設(shè)計(jì)[J].信息與電腦(理論版),2019(11):99-101.
作者簡介:仇烈偉(1997,9-),男,漢族,四川省安岳縣,學(xué)生,本科,荊楚理工學(xué)院,研究方向:數(shù)字媒體技術(shù)方向