• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Python數(shù)據(jù)分析的 模塊課選課分班軟件的設(shè)計(jì)與實(shí)現(xiàn)

      2021-09-24 04:02:08唐新彩胡燕
      中國(guó)信息技術(shù)教育 2021年18期
      關(guān)鍵詞:數(shù)據(jù)處理

      唐新彩 胡燕

      摘要:為充分培養(yǎng)學(xué)生的信息素養(yǎng),提升高中生的信息意識(shí),多方面地培養(yǎng)學(xué)生學(xué)習(xí)興趣,高中學(xué)校普遍會(huì)給學(xué)生開設(shè)校本課或者創(chuàng)新選修模塊課。課程涉及多個(gè)科目和全年級(jí)的學(xué)生,學(xué)生按興趣選擇對(duì)應(yīng)課程,但人工處理學(xué)生的選課結(jié)果耗時(shí)耗力,本文給出基于Python的第三方數(shù)據(jù)分析處理庫(kù)pandas的模塊課分班軟件,大大提高了分班效率,幫助教師快速獲取學(xué)生的選課結(jié)果,充分體現(xiàn)了信息技術(shù)的優(yōu)勢(shì)。

      關(guān)鍵詞:數(shù)據(jù)處理;python;pandas;DataFrame;選課分班

      中圖分類號(hào):G434? 文獻(xiàn)標(biāo)識(shí)碼:A? 論文編號(hào):1674-2117(2021)18-0070-04

      ● 問(wèn)題描述

      筆者所在學(xué)校的每位教師都會(huì)根據(jù)自己的特長(zhǎng)及學(xué)校規(guī)劃、學(xué)生學(xué)習(xí)興趣,針對(duì)高二學(xué)生開設(shè)創(chuàng)新選修模塊課程,課程科目每年都會(huì)更新,主要是科學(xué)與技術(shù)學(xué)科類的拓展課程。歷年開設(shè)過(guò)的課程如下頁(yè)表所示。

      高二全年級(jí)學(xué)生根據(jù)自己的學(xué)習(xí)能力和興趣特長(zhǎng)從中選擇一門課程拓展學(xué)習(xí)。技術(shù)科組教師需要根據(jù)學(xué)生的選課志愿、教室情況以及課程硬件設(shè)備(如平板電腦數(shù)量)情況來(lái)分配學(xué)生的選課結(jié)果。手動(dòng)人工處理這些數(shù)據(jù)耗時(shí)耗力,給技術(shù)科組教師帶來(lái)了較大負(fù)擔(dān)。而Python在數(shù)據(jù)處理和分析方面有很大的優(yōu)勢(shì),筆者發(fā)現(xiàn)基于Python 的pandas庫(kù)編寫的模塊課選課分班軟件,可以幫助教師快速獲取選課結(jié)果,在解放教師的同時(shí)也體現(xiàn)了信息技術(shù)的魅力。

      ● 準(zhǔn)備工作

      編寫軟件前需先采集好學(xué)生的選課志愿以及搭建好編寫軟件的平臺(tái)。

      (1)首先確定好開設(shè)的課程和對(duì)應(yīng)的授課教師、授課地點(diǎn)、授課人數(shù)、可容納學(xué)生數(shù)等信息,把這些信息放在“課程設(shè)置.xlsx”文件中,作為選課分班的一個(gè)輸入文件。目前用到的測(cè)試文件有兩組,其中一組的“課程設(shè)置.xlsx”的內(nèi)容如下頁(yè)圖1所示,列表項(xiàng)“可容納學(xué)生數(shù)”的值“平均數(shù)”是指當(dāng)同一上課時(shí)間內(nèi)的學(xué)生數(shù)減去60后剛好能被3整除,那這個(gè)平均數(shù)就真的是平均數(shù),但若不能整除,若余下1個(gè),就放在課程1中,若余下2個(gè),就放在課程1和課程2中。

      (2)采集數(shù)據(jù)。將以上第一步信息制作成選課單,然后在問(wèn)卷星上以調(diào)查問(wèn)卷的形式,讓學(xué)生填寫,填好后下載結(jié)果,并存放在“高二模塊課選課結(jié)果.xlsx”文件中。這也作為選課分班的一個(gè)輸入文件。部分選課結(jié)果展示如下頁(yè)圖2所示。

      (3)根據(jù)學(xué)校安排的課表把班級(jí)的上課時(shí)間制作成Excel文件,文件名為“上課時(shí)間.xlsx”。這也作為選課分班的一個(gè)輸入文件,如下頁(yè)圖3所示。

      (4)軟硬件環(huán)境如下。

      ①建議使用安裝了win7或以上操作系統(tǒng)的計(jì)算機(jī)。

      ②安裝了pandas庫(kù)的Python編輯器:PyCharm、IDLE、Spyder (anaconda3)、海龜編輯器等。筆者使用的是Spyder(anaconda3)。

      (5)將“課程設(shè)置.xlsx”“高二模塊課選課結(jié)果.xlsx”“上課時(shí)間.xlsx”三個(gè)輸入文件與實(shí)現(xiàn)分班的Python軟件包放在同一個(gè)目錄下。

      ● 軟件設(shè)計(jì)分析

      1.選課分班原則

      ①以學(xué)生角度。優(yōu)先按第一志愿分班,再按第二志愿分班。如果第一志愿和第二志愿的課程人數(shù)都已經(jīng)達(dá)到了可容納學(xué)生數(shù),再被隨機(jī)分配到其他班。

      ②以課程角度。優(yōu)先從第一志愿的學(xué)生中選擇,再?gòu)牡诙驹傅膶W(xué)生中選擇。如果第一志愿和第二志愿的學(xué)生加起來(lái)還不夠課程的可容納學(xué)生數(shù),則隨機(jī)選擇學(xué)生。

      2.軟件數(shù)據(jù)結(jié)構(gòu)分析

      ①最主要的數(shù)據(jù)結(jié)構(gòu)是DataFrame,不管是讀入三個(gè)輸入文件后的信息的保存,還是分班中途數(shù)據(jù)的存儲(chǔ)和分班后結(jié)果的存放都存放在DataFrame中,再把DataFrame數(shù)據(jù)保存到excel文件中。

      ②字符串、列表、集合:集合用來(lái)去重,列表用得非常多,很多信息都是放在列表中的,如由字符串組成的列表、由DataFrame組成的列表等。

      ● 軟件設(shè)計(jì)具體操作

      第一步,讀入“課程設(shè)置.xlsx”“高二模塊課選課結(jié)果.xlsx”“上課時(shí)間.xlsx”三個(gè)文件。

      第二步,將同一上課時(shí)間的學(xué)生信息存儲(chǔ)在一個(gè)DataFrame中,如7~10班為周一第六節(jié)課,就把這四個(gè)班級(jí)的學(xué)生信息存儲(chǔ)在同一個(gè)DataFrame中,并標(biāo)注上課時(shí)間。接著,將整理好的多個(gè)DataFrame放在一個(gè)列表中,如文件中高二一周一共有5次課,那么列表就由5個(gè)DataFrame構(gòu)成。

      第三步,學(xué)生分班,即對(duì)每個(gè)DataFrame中的學(xué)生,根據(jù)課程數(shù)及課程的可容納學(xué)生數(shù)將學(xué)生分班,如有5個(gè)課程及每個(gè)課程可容納的學(xué)生數(shù),就把DataFrame中的學(xué)生分成5個(gè)小的DataFrame,且對(duì)應(yīng)5個(gè)班及5個(gè)課程,并滿足每個(gè)課程的可容納學(xué)生數(shù)。分班是整個(gè)程序?qū)崿F(xiàn)最重要的一步,分班的具體算法如下:

      ①把每個(gè)課程第一志愿的學(xué)生和第二志愿的學(xué)生都選出來(lái)(選出來(lái)的是一個(gè)DataFrame),分別放在不同的列表中。

      ②根據(jù)每個(gè)課程第一志愿的學(xué)生數(shù)和第二志愿的學(xué)生數(shù)與可容納學(xué)生數(shù)的關(guān)系,把課程序號(hào)存放在不同的列表中。

      列表dadao1:存放第一志愿就達(dá)到可容納學(xué)生數(shù)的課程序號(hào)。

      列表weidadao1:存放第一志愿未達(dá)到可容納學(xué)生數(shù)的課程序號(hào)。

      列表dadao2:存放第一志愿加上第二志愿達(dá)到可容納學(xué)生數(shù)的課程序號(hào)。

      列表weidadao2:存放第一志愿加上第二志愿仍未達(dá)到可容納學(xué)生數(shù)的課程序號(hào)。

      ③優(yōu)先為列表dadao1中的課程選擇學(xué)生。因?yàn)檫@些課程第一志愿學(xué)生數(shù)多于可容納學(xué)生數(shù),就從這些第一志愿的學(xué)生中選出可容納學(xué)生數(shù)的學(xué)生量(優(yōu)先不選擇第二志愿的課程序號(hào)在列表weidadao2中的學(xué)生)。

      ④為列表weidadao1中的課程選擇學(xué)生。如果第一志愿加上第二志愿的學(xué)生數(shù)仍小于可容納學(xué)生數(shù),則直接把第二志愿的學(xué)生加到第一志愿的學(xué)生中就行;如果第一志愿加上第二志愿的學(xué)生超過(guò)了可容納學(xué)生數(shù),則要從第二志愿中隨機(jī)選擇(可容納學(xué)生數(shù)-第一志愿學(xué)生數(shù))學(xué)生個(gè)數(shù)出來(lái),完成此課程的學(xué)生分配。

      ⑤為未達(dá)到可容納學(xué)生數(shù)的課程在剩下的未分班的學(xué)生中隨機(jī)分配需要的學(xué)生。剩下的未分班學(xué)生可能是未填選課單的學(xué)生,也可能是第一志愿或第二志愿的學(xué)生數(shù)量很多的課程中的學(xué)生,還可能是在前面隨機(jī)選擇時(shí)沒(méi)有被第一志愿或第二志愿的課程選中的學(xué)生。

      ⑥在經(jīng)過(guò)前幾步分班后的結(jié)果中加入各個(gè)學(xué)生的選課結(jié)果和上課地點(diǎn),并把同一上課時(shí)間的分好班的所有學(xué)生放到一個(gè)DataFrame中。

      ⑦把分班結(jié)果寫入Excel文件,并分兩個(gè)文件存儲(chǔ):一個(gè)是給教師的文件——把學(xué)生按上課時(shí)間分成多個(gè)工作表存放;另一個(gè)是給學(xué)生的文件——把所有學(xué)生放在一個(gè)工作表中,按班級(jí)和課程排序,便于通知學(xué)生。

      ⑧把編寫好的Python文件打包成可執(zhí)行文件.exe文件。這樣以后每次需要分班時(shí),只要計(jì)算機(jī)上有該.exe文件和3個(gè)準(zhǔn)備好的輸入文件,不管計(jì)算機(jī)上有沒(méi)有安裝Python編輯器,都可以運(yùn)行,實(shí)現(xiàn)分班的功能,脫離了對(duì)平臺(tái)的依賴。

      ● 軟件的主要代碼

      圖4為選擇出每門課程第一志愿的學(xué)生和第二志愿的學(xué)生的代碼。

      圖5是優(yōu)先給列表dadao1中的課程分配學(xué)生的代碼。

      圖6是列表weidadao1中的課程選擇學(xué)生的代碼。

      圖7是還沒(méi)選好學(xué)生的課程隨機(jī)分配學(xué)生的代碼。

      ● 軟件測(cè)試運(yùn)行

      首先,把“課程設(shè)置.xlsx”“高二模塊課選課結(jié)果.xlsx”“上課時(shí)間.xlsx”作為輸入文件輸入,運(yùn)行.exe可執(zhí)行文件,得到的結(jié)果存放在output文件夾(在運(yùn)行軟件之前,在軟件的同一目錄下先新建一個(gè)output文件夾)中,其中包含以下兩個(gè)輸出文件:output.xlsx和zongbiao.xlsx。

      ①output.xlsx:按上課時(shí)間把學(xué)生分放在多個(gè)工作表中。

      ②zongbiao.xlsx:把所有學(xué)生都放在一個(gè)工作表中,按班級(jí)和選課結(jié)果排序,以便通知學(xué)生。

      接著,查看結(jié)果,每個(gè)課程都是優(yōu)先選擇了第一志愿的學(xué)生,再去選擇第二志愿的學(xué)生,如果還不滿足可容納學(xué)生數(shù),最后才選擇其他的學(xué)生。另外,學(xué)生的選課結(jié)果也可以做修改,將學(xué)生數(shù)減少到200多人,還是19個(gè)班,學(xué)生只有4個(gè)課程可以選擇,上課時(shí)間還是沒(méi)變,運(yùn)行軟件,讓其實(shí)現(xiàn)分班,然后查看分班結(jié)果,同樣也達(dá)到了理想的效果。

      總之,筆者所在學(xué)校通過(guò)多組數(shù)據(jù)測(cè)試分析軟件的可行性,均達(dá)到了滿意的效果,既盡可能地滿足了學(xué)生對(duì)第一志愿課程學(xué)習(xí)的需要,又解放了教師。

      參考文獻(xiàn):

      王曉華.基于Python的程序評(píng)分軟件的設(shè)計(jì)與實(shí)現(xiàn)[J].技術(shù)與應(yīng)用,2021(02):77-79.

      猜你喜歡
      數(shù)據(jù)處理
      認(rèn)知診斷缺失數(shù)據(jù)處理方法的比較:零替換、多重插補(bǔ)與極大似然估計(jì)法*
      ILWT-EEMD數(shù)據(jù)處理的ELM滾動(dòng)軸承故障診斷
      MATLAB在化學(xué)工程與工藝實(shí)驗(yàn)數(shù)據(jù)處理中的應(yīng)用
      Matlab在密立根油滴實(shí)驗(yàn)數(shù)據(jù)處理中的應(yīng)用
      基于POS AV610與PPP的車輛導(dǎo)航數(shù)據(jù)處理
      依托陸態(tài)網(wǎng)的GNSS遠(yuǎn)程數(shù)據(jù)處理軟件開發(fā)
      斗六市| 湖州市| 宜兰县| 洮南市| 芦溪县| 恩平市| 沈阳市| 万年县| 锦屏县| 乐安县| 阳谷县| 泸西县| 香格里拉县| 莱阳市| 保德县| 长春市| 洮南市| 靖远县| 南川市| 临颍县| 广宁县| 封丘县| 京山县| 鹤壁市| 安远县| 城口县| 林甸县| 横山县| 龙南县| 安平县| 武乡县| 东安县| 洞头县| 贵州省| 杭锦旗| 蕉岭县| 安庆市| 陇南市| 晋城| 高碑店市| 云霄县|