張可 李紅兵



關鍵詞:Python;大學物理實驗成績;數據分析;數據可視化
中圖分類號:TP311.52 文獻標識碼:A
文章編號:1009-3044(2023)02-0162-03
新工科建設是教育部2017年以來開展的新興工科專業建設的研究和探索[1]。大學物理實驗課程作為高等學校理工科類專業培養學生實踐能力和創新能力的必修性基礎課程,可以訓練學生發現問題、分析問題和解決問題的能力,培養學生科學思維能力。在此,基于Python對大學物理實驗的成績進行統計分析,并將結果進行可視化呈現,為優化教風學風,優化各專業大學物理實驗課程所開設項目提供更加客觀的依據,從而有效地提高大學物理實驗課程的教學效果。
Python語言是目前比較流行的、簡單易學,并且擁有豐富的第三方庫支持的語言,其中,Pandas的數據分析,Matplotlib數據可視化,都使得Python在數據分析領域具有很好的優勢[2-3]。本文基于Python的成績分析,主要是結合第三方庫Pandas和Matplotlib對全校學生大學物理實驗的原始數據進行處理和可視化的分析[4-5]。
1 大學物理實驗成績的數據預處理
1.1 使用Pandas讀入Excel成績
Python語言中主要使用Pandas進行數據分析,這是一個基于Numpy庫,提供了高性能,易于使用的數據結構和數據分析工具的庫,同時還提供了高效操作大型數據集所需要的工具,可以快捷高效地實現數據讀寫、數據清洗和數據分析的基本功能。本文使用Pandas將自201班的成績Excel文件讀入并保存為一個DataFrame結構形式[6]的二維數組,并通過values方法、loc方法或者iloc方法便捷地獲取全部或者部分的實驗成績數據。由于實驗成績由多個項目組成,意味所讀取的Excel表格包含數列比較多,可以進行特定行或者列的數據讀取、數據結構的轉換等操作,所涉及代碼主要如下所示。
import pandas as pd
scoreDF_zi201=pd.read_excel(r'F:\大學物理實驗成績分析\大學物理實驗成績分析部分數據.xlsx',sheet_name='自201',header=0)
scorearr_zi171=scoreDF_zi201.values
scorearr_zdh201_average=score_zi201. loc[95, [' 實驗一','實驗二','實驗三','實驗四','實驗五','實驗六',' 實驗七','實驗八']]
1.2 成績數據的預處理
由于部分學生可能未能完成所有實驗項目,存在相應字段值為空的情形,故需要數據預處理。Fillna 方法可以按需要填入所需的數值,對缺失項填0。
2 對實驗成績的可視化處理及結果分析
在本文中,針對不同專業、同一專業不同班級以及同一班級學生的大學物理實驗成績的分析和可視化的呈現,為優化各專業實驗項目開設、提高大學物理實驗教學質量提供參考性依據。
2.1 比對不同專業學生實驗成績,優化實驗項目,促進教學質量
使用Pandas庫中的mean方法計算相關實驗對應的列平均值,并將計算結果保存為新的行數據。然后使用Matplotlib庫繪制柱形圖,通過更加直觀地可視化圖形分析比較不同專業各實驗項目的成績,從而可以了解各專業學生對不同實驗項目的掌握程度,針對一些成績明顯薄弱的實驗,結合專業相關性,進行不同專業所開設實驗項目的優化。本文對2020級自動化專業、土木專業和紡織專業共同開設的八個大學物理實驗項目進行各個實驗項目的平均成績比較,分析所得的柱形圖如圖1所示。
由圖1,可以明顯看出紡織專業實驗二的成績明顯較其他專業低,需要結合實驗室的開課以及各種情況分析,是否存在實驗二不適合紡織專業的情況,從而對紡織專業的實驗項目進行調整,提高實驗項目與學生專業的相關性,從而提高大學物理實驗課程的教學效果。
還可以對多專業、大批量學生實驗成績進行各實驗項目教學質量的分析比較,譬如,實驗六的成績均分明顯低于其他實驗項目,那么就需要實際調研,是實驗教學效果存在問題,還是任課教師評分尺度把握偏差?找到原因,并促使各項目的任課教師切實提高實驗教學的效果,明確實驗成績各環節的評分尺度,在做到優質教學的基礎上,對所有學生提供更加公平公正的評分體系,使實驗成績更加客觀公正。
其中,主要代碼如下:
b_zdh20=plt. bar(x2-bar_width, scorearr_zdh20_av?erage,width=bar_width,label='自動化20級')
b_tm20=plt. bar(x2, scorearr_tm20_average, width=bar_width,label='土木20級')
b_fz20=plt. bar(x2+bar_width, scorearr_fz20_aver?age,width=bar_width,label='紡織20級')
bx.set_ylabel('各專業實驗項目均分對比',font?properties=prop)
bx.set_title('2020級自動化、土木和紡織三個專業的成績均分',fontproperties=prop)
2.2 比對同專業學生實驗成績,促進教學質量提升、提供學業預警依據
大學物理實驗課程面向的學生數量龐大,教學質量相對均衡,評價體系比較完善。這就使得大學物理實驗成績存在較好的客觀性、公正性,使用Pandas庫對實驗成績進行統計分析,將數據可視化之后,可以比較客觀地說明學生的學習態度,為教學質量提高建設和學業預警提供可靠的數據依據。
1)基于成績分析,建設班級學風
本文對2020級自動化專業不同班級的實驗成績進行分數段的分布統計,然后使用Matplotlib庫將統計結果以柱狀圖來進行表述,如圖2所示,自201和自203的成績分數段分布基本符合正態分布。自203班的中等人數比較少,主要分布在良好和優秀分數段,整體班級學風呈現良好的發展態勢。自202班的成績分數段中有一個不及格、一個及格、五個中等,相對其他兩個班低分段人數比較多一點,班主任就需要關注這幾位同學的學習狀態,促進班級整體學習效果的提高。
其中主要代碼如下:
labels=['0-59','60-69','70-79','80-89','90-100']
segments_zi201=pd.cut(score_zi201_zongping,bins,labels=labels)
counts_zi201=pd.value_counts(segments_zi201,sort=False)
x1=np.arange(len(counts_zi201))
bar_width=0.3
fig,bx=plt.subplots()
b_zi201=plt.bar(x1-bar_width,counts_zi201,width=bar_width,label='自201')
2)基于大學物理實驗成績分析,輔助學生個體的學業預警
大學課程的成績主要依托于期中、期末考試的成績、平時作業和考勤成績。這就讓部分同學到了期末考試時才發現需要補救,但時間上已經來不及。大學物理實驗教學的特點是整體課程的成績由所完成的各個實驗項目成績構成,在實驗即將結束時,隨機抽取20級某班甲、乙兩位同學各個實驗項目的成績與班級各實驗項目平均成績進行雷達圖的對比,如圖3 所示。
對比結果顯示,甲同學各實驗項目均已經完成,并且每個項目的成績均高于班級均分,屬于比較良好的一種學習態勢。而乙同學各實驗項目成績整體偏低,而且相比其他學生還存在“實驗一”沒有完成的情況。因此在全校大學物理實驗課程結束之前,可以提前對該生進行學業預警,并將相關信息反饋到其所在學院,便于各方面加強對此類學生的學業管理,指導學生更好地完成相關課程。
其中,主要代碼如下:
data2=score_hg202_arr[5,:].ravel()
dim_num = len(data1)
angles = np.linspace(0,2*np.pi,dim_num,endpoint=False)
angles = np.concatenate((angles,[angles[0]]))
student2=scoreDFLD_zi202.loc[5,['學號']]
student2=int(student2[0]%100)
student2='某班0'+str(student2)+'號同學(乙)各實驗項目成績'
plt.polar(angles,data2,'o-',linewidth=2, label=stu?dent2_label)
plt.fill(angles,data2, alpha=0.25)
3 結束語
本文針對2020級若干專業和班級的大學物理實驗成績進行數據可視化分析,實現了各專業開設實驗項目的優化;獲取實驗項目的教學情況以及實驗教師對實驗各環節評分標準的把握情況,以及評分的規范性;獲得各班級的教學質量提高建設情況,提供輔助的學業預警,為學生的學業發展提供積極的促進作用。
隨著Python在數據分析和機器學習領域的廣泛應用和快速發展,教師可以依托其中對課程優化和學生培養進行更多的探索和實踐,以期獲得更好的教學效果,讓更多的學生能夠獲得更好的成長。