• 
    

    
    

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

      ?

      基于Python 的學(xué)生成績(jī)分析和可視化呈現(xiàn)研究

      2022-06-29 01:25:30石曉玲楊立功
      關(guān)鍵詞:數(shù)組數(shù)據(jù)處理繪制

      石曉玲,楊立功

      (泰州職業(yè)技術(shù)學(xué)院,江蘇 泰州 225300)

      0 引言

      在日常工作中,對(duì)學(xué)生成績(jī)進(jìn)行分析和可視化處理最常用的軟件是Excel。利用Excel 里的數(shù)據(jù)透視功能,可以對(duì)學(xué)生成績(jī)進(jìn)行簡(jiǎn)單的統(tǒng)計(jì)操作,如計(jì)算平均分、計(jì)算方差、進(jìn)行橫向或縱向比較,并最終生成可視化圖表。但是在處理大量數(shù)據(jù)時(shí),Excel 的操作十分繁瑣,人為操作的標(biāo)準(zhǔn)化程度較低且易發(fā)生錯(cuò)誤。而利用Python 可以自動(dòng)實(shí)現(xiàn)數(shù)據(jù)的統(tǒng)計(jì)分析,能大大提高工作效率。本文將利用Python 及第三方庫(kù)Requests、BeautifulSoup、NumPy 和Matplotlib 將全校學(xué)生期末各科成績(jī)的原始數(shù)據(jù)進(jìn)行處理,并進(jìn)行可視化分析。

      1 程序設(shè)計(jì)流程

      數(shù)據(jù)處理流程如圖1 所示。首先從教務(wù)系統(tǒng)中爬取每個(gè)學(xué)生的各科成績(jī),計(jì)算出個(gè)人總成績(jī);然后通過(guò)個(gè)人成績(jī)計(jì)算班級(jí)成績(jī);最后對(duì)班級(jí)成績(jī)進(jìn)行分析和可視化。

      圖1 數(shù)據(jù)處理流程

      2 數(shù)據(jù)的讀取和提取

      2.1 獲取數(shù)據(jù)

      第三方庫(kù)Requests 是利用Python 語(yǔ)言編寫的網(wǎng)絡(luò)爬蟲工具,是一個(gè)能夠自動(dòng)爬取網(wǎng)站內(nèi)容的開源爬蟲應(yīng)用框架。只需要給出網(wǎng)址和爬取規(guī)則,就可以快速獲得網(wǎng)站上的大量信息。BeautifulSoup庫(kù)是Python 語(yǔ)言開源的網(wǎng)絡(luò)信息處理第三方庫(kù),能夠獲取某個(gè)特定標(biāo)簽下的字段信息,有助于快速?gòu)拇罅啃畔⒅泻Y選有效部分。在獲取并處理信息之后,將學(xué)生的成績(jī)寫入csv 文件。爬取教務(wù)網(wǎng)站上學(xué)生成績(jī)信息的特征代碼如下:

      爬取網(wǎng)站上所有的信息:

      import requests

      url=’http://example.io’

      r=request.get(url)

      對(duì)爬取的信息進(jìn)行字段處理:

      from bs4 importBeautifulSoup

      soup=BeautifulSoup(r,url)

      score=[]

      for inf in soup.find_all(‘score’):

      if len(inf)>1:

      socre.append(inf)

      2.2 數(shù)據(jù)清理

      數(shù)據(jù)清理是指檢查和清理數(shù)據(jù)庫(kù)中的無(wú)效或者冗雜數(shù)據(jù),并進(jìn)行修正、替換或者直接刪除。

      2.2.1 發(fā)現(xiàn)冗雜數(shù)據(jù)

      在上一步的爬取過(guò)程中,我們獲取了所有score 標(biāo)簽下的數(shù)據(jù),這必然造成多余的數(shù)據(jù)被寫入文件,在下一步的數(shù)據(jù)處理中會(huì)導(dǎo)致算力和內(nèi)存空間的浪費(fèi)。而隨著數(shù)據(jù)量的增長(zhǎng),這種浪費(fèi)會(huì)大大影響程序運(yùn)行的效率,甚至導(dǎo)致分析結(jié)果的錯(cuò)誤。對(duì)于這些冗雜數(shù)據(jù)可以進(jìn)行清洗處理。

      2.2.2 處理數(shù)據(jù)結(jié)構(gòu)

      數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)本身以及數(shù)據(jù)之間的關(guān)系。為了方便下面的處理,需要選取一種索引方便、易于遍歷的數(shù)據(jù)格式,且不同學(xué)生的成績(jī)之間應(yīng)該分區(qū)儲(chǔ)存。這對(duì)數(shù)據(jù)格式要求較高。

      2.2.3 存儲(chǔ)有效數(shù)據(jù)

      通常的數(shù)據(jù)存儲(chǔ)格式有txt 和csv,這里采用csv 格式。csv 文件是一種國(guó)際通用的二維數(shù)據(jù)存儲(chǔ)格式,Excel 也可以便捷地導(dǎo)入或?qū)С?。更重要的是NumPy 內(nèi)置了讀取csv 文件的方法,可以簡(jiǎn)便地根據(jù)文件自動(dòng)生成一個(gè)ndarrry 數(shù)組對(duì)象并將每一行的數(shù)據(jù)儲(chǔ)存在不同維度上,以便下面的操作。

      3 數(shù)據(jù)的處理和分析

      Python 語(yǔ)言提供了多種用來(lái)處理數(shù)據(jù)的第三方庫(kù),如NumPy、Scipy、Django、Pandas 等,且這些庫(kù)與計(jì)算機(jī)底層的操作邏輯有很好的交互,因此運(yùn)行效率相對(duì)較高。其中,使用率較高的是NumPy和Pandas 庫(kù),本文使用NumPy。

      NumPy 是Python 開源的數(shù)據(jù)處理第三方庫(kù),提供了多種數(shù)據(jù)處理的方法,包括矩陣和向量的處理、傅立葉變換和多種可用于精密運(yùn)算的庫(kù)。其核心功能是對(duì)自定義數(shù)組ndarry 的處理。Excel 中也提供相關(guān)的數(shù)組運(yùn)算功能,但NumPy 相對(duì)于Excel 的數(shù)組運(yùn)算有兩點(diǎn)優(yōu)勢(shì):第一,ndarry 數(shù)組提供了更高的數(shù)據(jù)儲(chǔ)存維度;第二,NumPy 對(duì)數(shù)組的處理是將其作為一個(gè)整體,無(wú)需關(guān)心其中每一個(gè)元素的處理過(guò)程。因此使用NumPy 處理數(shù)據(jù)可以得到更快的處理速度和更高的處理效率。

      3.1 讀取存儲(chǔ)的數(shù)據(jù)

      使用NumPy 讀取數(shù)據(jù)后可以自動(dòng)生成一個(gè)數(shù)組對(duì)象,后面的處理都基于此數(shù)組進(jìn)行。數(shù)據(jù)讀取代碼如下:

      import numpy as np

      a=np. loadtxt(score.csv,dtype=np. float,delimiter=’,’)

      3.2 進(jìn)行基礎(chǔ)的統(tǒng)計(jì)處理

      3.2.1 計(jì)算每個(gè)學(xué)生的平均學(xué)分績(jī)并輸出

      這里利用NumPy 提供的average 函數(shù)進(jìn)行加權(quán)平均,完畢后將得到一個(gè)秩為1 的ndarry 數(shù)組,將其儲(chǔ)存在csv 文件中,作為各個(gè)學(xué)生的期末成績(jī)。代碼如下:

      s=np. average(a,axis=1,weights=weight)

      #weight 為各科成績(jī)的權(quán)重

      3.2.2 根據(jù)學(xué)生成績(jī)計(jì)算各班的平均分、方差、最高分和不及格學(xué)生人數(shù)

      首先將各班學(xué)生的分?jǐn)?shù)存儲(chǔ)在不同的軸上,進(jìn)行分析。代碼如下:

      b=s. reshape(x,y)

      f=np. mean(b,axis=1)

      v=np. var(b,axis=1)

      m=np. max(b,axis=1)

      c=np. sum(b<60,axis=1)

      g=np. unravel_index(np.agrmax(b),b.shape)

      #獲取最高分的班級(jí)學(xué)號(hào)

      這樣就獲得了各班考試成績(jī)的數(shù)據(jù),將其再次儲(chǔ)存在csv 文件中,繼續(xù)進(jìn)行處理,也可以導(dǎo)入Excel 工作簿。

      4 進(jìn)行可視化處理

      Matplotlib 庫(kù)是Python 語(yǔ)言中優(yōu)秀的第三方庫(kù),其提供了許多繪制可視化圖形的子庫(kù),使用其中的pyplot 庫(kù)對(duì)以上分析結(jié)果進(jìn)行可視化處理。在數(shù)據(jù)分析中較為常用的兩種圖表是餅圖和頻數(shù)分布直方圖,下面以這兩種圖表為例,利用matplotlib 繪制各班不及格學(xué)生占比的餅圖和全校所有學(xué)生成績(jī)的頻數(shù)分布直方圖,如圖2 所示。代碼如下:

      importmatplotlib.pyplot as plt

      c=c.tolist()

      labels=’class one’,’classtwo’,’classthree’,’class four’

      sizes=c

      plt.subplot(211)

      plt.pie(sizes,labels=labels,autopct=’%1.1f%%’,shadow=False,startangle=90)

      plt.title(‘Failed Students’)

      plt.show() #繪制餅圖

      plt.subplot(212)

      plt.xlabel(‘score’)

      plt.ylabel(‘number‘)

      plt.hist(s,40,normed=0,histtype=’stepfilled’,

      facecolor=’b’,alpha=0.75)

      plt.show()

      運(yùn)行結(jié)果見圖2。

      圖2 利用matplotlib 繪制的學(xué)生成績(jī)頻數(shù)分布直方圖和各班不及格學(xué)生占比餅圖

      樣本為4 個(gè)班的1200 個(gè)成績(jī)數(shù)據(jù)。運(yùn)行之后可以直觀地發(fā)現(xiàn)全校學(xué)生的成績(jī)分布大致符合正態(tài)分布的規(guī)律,且每個(gè)分?jǐn)?shù)段的學(xué)生人數(shù)都較為直觀。在實(shí)際操作中,可以通過(guò)修改部分參數(shù)繪制出某班學(xué)生的成績(jī)分布等多種圖形。由此可見,利用Python 進(jìn)行可視化,有著高度自動(dòng)化、可重復(fù)利用、運(yùn)算速度快、導(dǎo)出圖片方便等優(yōu)點(diǎn),在批量處理大規(guī)模復(fù)雜數(shù)據(jù)時(shí)優(yōu)勢(shì)明顯。當(dāng)原數(shù)據(jù)發(fā)生改變時(shí)能夠?qū)崿F(xiàn)信息的自動(dòng)更新,方便使用者直觀感受和理解數(shù)據(jù)的變化。

      5 結(jié)語(yǔ)

      隨著信息技術(shù)的發(fā)展,目前幾乎所有學(xué)校都實(shí)現(xiàn)了教務(wù)系統(tǒng)的信息自動(dòng)化,但對(duì)成績(jī)數(shù)據(jù)的處理方式較為落后。本文利用Python 的網(wǎng)絡(luò)爬取功能和數(shù)據(jù)處理功能,提出了自動(dòng)獲取數(shù)據(jù)—處理數(shù)據(jù)—輸出結(jié)果的一體化結(jié)構(gòu)框架,使批量處理學(xué)生成績(jī)數(shù)據(jù)成為可能,其應(yīng)用減輕了教學(xué)管理人員在處理學(xué)生成績(jī)時(shí)的工作量。在大數(shù)據(jù)蓬勃發(fā)展的時(shí)代背景下,探究Python 的數(shù)據(jù)處理功能在各個(gè)領(lǐng)域的應(yīng)用,意義十分明顯,也能讓Python 語(yǔ)言在各行各業(yè)煥發(fā)光彩。

      猜你喜歡
      數(shù)組數(shù)據(jù)處理繪制
      Art on coffee cups
      認(rèn)知診斷缺失數(shù)據(jù)處理方法的比較:零替換、多重插補(bǔ)與極大似然估計(jì)法*
      JAVA稀疏矩陣算法
      ILWT-EEMD數(shù)據(jù)處理的ELM滾動(dòng)軸承故障診斷
      JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
      放學(xué)后
      童話世界(2018年17期)2018-07-30 01:52:02
      基于希爾伯特- 黃變換的去噪法在外測(cè)數(shù)據(jù)處理中的應(yīng)用
      尋找勾股數(shù)組的歷程
      在轉(zhuǎn)變中繪制新藍(lán)圖
      基于POS AV610與PPP的車輛導(dǎo)航數(shù)據(jù)處理
      九寨沟县| 麻阳| 古蔺县| 夹江县| 文化| 洛川县| 奎屯市| 厦门市| 旌德县| 金寨县| 茂名市| 定陶县| 当涂县| 阳新县| 天台县| 大连市| 收藏| 霍城县| 建平县| 香港| 嫩江县| 西昌市| 深泽县| 武功县| 祁连县| 博爱县| 海城市| 南部县| 界首市| 措美县| 巩留县| 新乐市| 晋江市| 天等县| 拜泉县| 芜湖市| 瑞昌市| 昭平县| 九寨沟县| 斗六市| 酒泉市|