尹詩(shī)玉 陳小奎 師琳
摘要:為分析高校教學(xué)質(zhì)量,并對(duì)其進(jìn)行評(píng)價(jià),本文基于python語(yǔ)言對(duì)教務(wù)系統(tǒng)導(dǎo)出的原數(shù)據(jù)進(jìn)行處理和分析,主要從數(shù)據(jù)導(dǎo)入,數(shù)據(jù)預(yù)處理,及數(shù)據(jù)分析三個(gè)層面結(jié)合實(shí)例進(jìn)行分析。首先利用tkinter庫(kù)設(shè)計(jì)出數(shù)據(jù)導(dǎo)入的界面;其次闡述數(shù)據(jù)清洗、分組、集成以及脫敏等數(shù)據(jù)預(yù)處理的常用算法,并結(jié)合高校教學(xué)評(píng)價(jià)這一實(shí)際案例進(jìn)行了演示,借助pandas庫(kù)中的dataframe數(shù)據(jù)類(lèi)型實(shí)現(xiàn)了對(duì)“臟數(shù)據(jù)”的清洗,以及對(duì)教師姓名的脫敏;最后利用matplotlib庫(kù)對(duì)處理好的數(shù)據(jù)進(jìn)行數(shù)據(jù)可視化,并結(jié)合所得圖像對(duì)各專(zhuān)業(yè)班級(jí)及教師的學(xué)習(xí)和教學(xué)狀況進(jìn)行分析與評(píng)價(jià)。通過(guò)本文的數(shù)據(jù)處理,實(shí)現(xiàn)了對(duì)教師姓名的脫敏,保護(hù)了教師的隱私,并利用圖形直觀(guān)地反映出各教師和班級(jí)近幾年的成績(jī)分布,使得高???jī)效考核更加的方便。
關(guān)鍵詞:Python;pandas;數(shù)據(jù)預(yù)處理;數(shù)據(jù)脫敏;數(shù)據(jù)可視化
中圖分類(lèi)號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2019)06-0014-04
Data Desensitization and Visual Analysis Based on Python
YIN Shi-yu,CHEN Xiao-kui,SHI Lin
(Anhui University of Science and Technology Institute of Mathematics and Big Date, Huainan 232001,China)
Abstract:In order to analyze the quality of college teaching and evaluate it, this paper based on Python language to process and analyze the original data derived from the educational system, mainly from three aspects: data import, data preprocessing, and data analysis. Firstly, the tkinter library is used to design the interface of data import. Secondly, the common algorithms for data preprocessing such as data cleaning, grouping, integration and desensitization are described. The actual case of college teaching evaluation is demonstrated. The dataframe data in the pandas library is used. The type realizes the cleaning of “dirty data” and the desensitization of the teacher's name. Finally, the matplotlib library is used to visualize the processed data, and the obtained images are used to analyze the learning and teaching status of each professional class and teachers. Through the data processing of this paper, the desensitization of the teacher's name is realized, the privacy of the teacher is protected, and the distribution of the scores of teachers and classes in recent years is visually reflected by the graph, which makes the performance appraisal of the university more convenient.
Key words: Python; pandas; data preprocessing; data desensitization; data visualization
1 背景
人工智能大數(shù)據(jù)時(shí)代的到來(lái)使得數(shù)據(jù)挖掘與分析日益成為不可或缺的技能。Python是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,由于其具有豐富的類(lèi)庫(kù)與簡(jiǎn)潔性,成為數(shù)據(jù)分析的首選語(yǔ)言。由于數(shù)據(jù)類(lèi)型的多樣化及其關(guān)聯(lián)關(guān)系的復(fù)雜性,數(shù)據(jù)預(yù)處理是數(shù)據(jù)分析和挖掘前的一個(gè)非常重要的工作;再者在數(shù)據(jù)挖掘技術(shù)快速發(fā)展的同時(shí),也帶來(lái)了隱私信息容易泄露的難題,這時(shí)就需要對(duì)敏感信息進(jìn)行脫敏。
2 數(shù)據(jù)導(dǎo)入界面的設(shè)計(jì)
本文借助Python的tkinter包實(shí)現(xiàn)圖形化界面的設(shè)計(jì)。界面主要分為左右兩欄,左邊顯示用戶(hù)的登錄信息,右邊一欄供用戶(hù)導(dǎo)入數(shù)據(jù)并根據(jù)需要進(jìn)行相關(guān)的數(shù)據(jù)分析;菜單欄的內(nèi)容主要是原專(zhuān)業(yè)成績(jī)分布統(tǒng)計(jì),教師評(píng)價(jià)統(tǒng)計(jì)和教師與專(zhuān)業(yè)成績(jī)的關(guān)聯(lián)分析,本文著重闡述前兩項(xiàng),之后將對(duì)教師與專(zhuān)業(yè)成績(jī)的關(guān)聯(lián)度進(jìn)行分析。設(shè)計(jì)好的圖形化界面如圖1所示。
3 數(shù)據(jù)預(yù)處理
在大數(shù)據(jù)環(huán)境下,由于原始數(shù)據(jù)的雜亂性,重復(fù)性,模糊性,數(shù)據(jù)挖掘與分析的首要任務(wù)就是確保消除所有的“臟數(shù)據(jù)”,即冗余數(shù)據(jù),異常數(shù)據(jù),無(wú)用數(shù)據(jù)等,因此引入了數(shù)據(jù)預(yù)處理技術(shù)對(duì)原數(shù)據(jù)進(jìn)行處理。
數(shù)據(jù)預(yù)處理技術(shù)主要由數(shù)據(jù)清洗,數(shù)據(jù)集成,數(shù)據(jù)變換,數(shù)據(jù)規(guī)約等四部分組成。數(shù)據(jù)清洗部分主要包含處理缺失數(shù)據(jù)、檢測(cè)和過(guò)濾異常值,移除重復(fù)數(shù)據(jù)等;數(shù)據(jù)集成部分主要包含使用鍵參數(shù)的DataFrame合并,軸向連接等;數(shù)據(jù)變換部分主要包含利用映射進(jìn)行數(shù)據(jù)轉(zhuǎn)換,替換值等;數(shù)據(jù)規(guī)約就是對(duì)數(shù)據(jù)進(jìn)行聚集,進(jìn)一步降低數(shù)據(jù)規(guī)模,方便處理與分析。常見(jiàn)的脫敏方法有:
1)替換:以虛構(gòu)的數(shù)據(jù)代替真值,從而達(dá)到將隱私數(shù)據(jù)保護(hù)起來(lái)的目的。
2)無(wú)效化:以Null或者***代替真值的一部分,例如對(duì)銀行卡或手機(jī)號(hào)的處理。
3)置亂:對(duì)敏感數(shù)據(jù)列的值打亂后,重新分布,該方法將破壞與其他字段的聯(lián)系,具有局限性。
4)均值化:對(duì)數(shù)值型的數(shù)據(jù),首先求解它們的均值,使得脫敏后的值在均值附近。
5)偏移:通過(guò)隨機(jī)地對(duì)數(shù)據(jù)進(jìn)行移位改變數(shù)據(jù)[1]。
上述五種只是常用的幾種數(shù)據(jù)脫敏的方法,還有很多其他方法如反推斷、FPE、屏蔽,限制返回行數(shù)等等,根據(jù)實(shí)際應(yīng)用情況選取合適的脫敏方法即可。
3.1實(shí)例數(shù)據(jù)分析
本實(shí)例的每學(xué)期高數(shù)成績(jī)?cè)紨?shù)據(jù)中包含有學(xué)號(hào)、姓名、課程名稱(chēng)、學(xué)分、平時(shí)成績(jī)、期中成績(jī)、期末成績(jī)、實(shí)驗(yàn)成績(jī)、總評(píng)成績(jī)、備注、折算成績(jī)、補(bǔ)考成績(jī)、重修成績(jī)、績(jī)點(diǎn)、課程性質(zhì)、課程歸屬、重修標(biāo)記、選課課號(hào)、學(xué)年、學(xué)期、是否注冊(cè)、學(xué)院、班級(jí)、正考學(xué)年學(xué)期,教師姓名共25個(gè)屬性列,每學(xué)期記錄約4500條。
3.2數(shù)據(jù)清洗
數(shù)據(jù)清洗是有助于解決數(shù)據(jù)質(zhì)量問(wèn)題的處理過(guò)程,通過(guò)分析“臟數(shù)據(jù)”的產(chǎn)生原因及存在形式,對(duì)數(shù)據(jù)流的過(guò)程進(jìn)行分析,將“臟數(shù)據(jù)”轉(zhuǎn)化成滿(mǎn)足數(shù)據(jù)質(zhì)量要求的數(shù)據(jù)。數(shù)據(jù)清洗通常包括下面集中數(shù)據(jù)的處理[5]。
1)缺失值處理
本文通過(guò)對(duì)缺失值進(jìn)行檢測(cè),發(fā)現(xiàn)原數(shù)據(jù)中存在少量值為空的數(shù)據(jù),雖然數(shù)量不多但仍會(huì)對(duì)之后的分析產(chǎn)生影響,為保證之后分析的準(zhǔn)確性,需要將這些數(shù)據(jù)進(jìn)行刪除,經(jīng)過(guò)處理后,最終剩下的數(shù)據(jù)還有4300余條。
2)異常值處理
首先導(dǎo)入matplotlib包,畫(huà)出有關(guān)數(shù)據(jù)的箱型圖,從圖中可以看出部分?jǐn)?shù)據(jù)的離散程度還是很大的,總評(píng)成績(jī)?yōu)?.1,0.2等之類(lèi)的一定是異常值,下面需要對(duì)這些數(shù)據(jù)進(jìn)行剔除。結(jié)合該實(shí)例進(jìn)行分析,總評(píng)成績(jī)的異常值都出現(xiàn)在備注為“缺考”或者“緩考”的記錄條上,因此我們利用備注這一列進(jìn)行異常值的剔除,將備注數(shù)據(jù)是以上兩種情況的進(jìn)行取反操作,所得到的即為總評(píng)成績(jī)?yōu)檎V档膶W(xué)生記錄。
3)重復(fù)值處理
該實(shí)例的原數(shù)據(jù)來(lái)自教務(wù)系統(tǒng),由于學(xué)號(hào)是主鍵,其唯一表示了一個(gè)學(xué)生,因此不會(huì)存在重復(fù)值的存在,該實(shí)例不需要對(duì)重復(fù)值進(jìn)行考慮。
3.3 數(shù)據(jù)變換
數(shù)據(jù)變換就是找到數(shù)據(jù)的統(tǒng)一表示方法,對(duì)數(shù)據(jù)進(jìn)行歸一化處理,將其轉(zhuǎn)換為有利于分析與挖掘的形式;以及利用映射或替換等手段對(duì)敏感數(shù)據(jù)進(jìn)行隱藏,從而保護(hù)個(gè)人隱私。
對(duì)于該實(shí)例,之后需要分析的僅有班級(jí),學(xué)院,教師姓名,總評(píng)成績(jī)四個(gè)屬性列,而各屬性列的值不用進(jìn)行無(wú)量綱化,因此可省去數(shù)據(jù)的標(biāo)準(zhǔn)化處理這一步;然而教師姓名這一屬性列涉及了教師的個(gè)人隱私,屬于敏感信息,所以需要對(duì)其進(jìn)行脫敏處理,因?yàn)樽罱K要對(duì)教師的教學(xué)進(jìn)行評(píng)價(jià),所以采用替換的方法來(lái)進(jìn)行脫敏處理。首先讀取出表格的教師姓名一列,并建立兩個(gè)數(shù)組,一個(gè)是原始姓名數(shù)組,一個(gè)是替換的教師代號(hào),將教師姓名這一列進(jìn)行替換,以保護(hù)這一敏感數(shù)據(jù)。
3.4 數(shù)據(jù)規(guī)約
數(shù)據(jù)規(guī)約是在對(duì)所要解決問(wèn)題理解的基礎(chǔ)上,尋找數(shù)據(jù)的有用特征,以縮減數(shù)據(jù)規(guī)模,在盡可能保持?jǐn)?shù)據(jù)原貌的同時(shí)最大限度地減少數(shù)據(jù)量,對(duì)數(shù)據(jù)進(jìn)行降維處理,使得之后的分析與挖掘更加高效[3]。
結(jié)合本實(shí)例進(jìn)行分析,因?yàn)楸景咐詈笮枰治龅氖歉鲗?zhuān)業(yè),班級(jí)及教師的學(xué)習(xí)及教學(xué)狀況。需要得到每個(gè)班級(jí)的平均分后再進(jìn)行評(píng)價(jià)。故需要先根據(jù)班級(jí)這一屬性列對(duì)替換后的數(shù)據(jù)進(jìn)行分組后,對(duì)總評(píng)成績(jī)求平均將其聚合。最終只需要保留班級(jí),學(xué)院,總評(píng)成績(jī),教師姓名四列即可。
數(shù)據(jù)清洗,變換,規(guī)約的主要代碼如圖2,處理前后的數(shù)據(jù)對(duì)比圖如圖3,圖4所示。
3.5 數(shù)據(jù)集成
數(shù)據(jù)集成是將多文件中的數(shù)據(jù)進(jìn)行合并處理,主要涉及的方面有數(shù)據(jù)的選擇,數(shù)據(jù)的沖突以及不一致問(wèn)題,其中主要包含相同字段屬性的縱向追加和具有相關(guān)屬性疊加的橫向合并等,數(shù)據(jù)橫向合并時(shí),會(huì)因?yàn)橥粚?duì)象的一些屬性字段在不同文件中的屬性名不同,導(dǎo)致數(shù)據(jù)冗余,因此消除數(shù)據(jù)冗余是數(shù)據(jù)集成中的一項(xiàng)重要工作[2]。
結(jié)合本實(shí)例,為方便之后對(duì)每個(gè)班級(jí),每位教師近幾年的學(xué)習(xí)與教學(xué)情況進(jìn)行分析,我們需要將每一學(xué)年的數(shù)據(jù)集成到一張表中。對(duì)于每個(gè)班級(jí),為保證連接的正確性,首先將每學(xué)期的表格按照班級(jí)降序排列,其次利用Pandas庫(kù)取出總評(píng)成績(jī)這一列,最后將每學(xué)期的成績(jī)這一列放入新表中,與相關(guān)學(xué)期列對(duì)應(yīng),最終所得的表格即為集成后的每個(gè)班級(jí)的各學(xué)期成績(jī)分布表如圖5。
4 圖像分析
Python中具有的Matplotlib包,是數(shù)據(jù)可視化的重要類(lèi)庫(kù)之一,其中包含了豐富的數(shù)據(jù)可視化資源,包括3D,地圖等都有涉及,借助該包可以實(shí)現(xiàn)直線(xiàn)圖、柱狀圖、箱型圖、散點(diǎn)圖以及折線(xiàn)圖。其主要包含以下四部分內(nèi)容:
1)Matplotlib的基礎(chǔ)figure類(lèi)型。
2)調(diào)整figure的樣式和顏色。
3)添加圖的注釋。
4)其他復(fù)雜圖形[4]。
4.1實(shí)例需求
根據(jù)需求分析,本案例所要分析的是各專(zhuān)業(yè)的近幾年成績(jī)分布,以及各教師近幾年的教學(xué)質(zhì)量評(píng)價(jià)。并且根據(jù)每學(xué)期的總評(píng)成績(jī),對(duì)班級(jí)和教師學(xué)習(xí)與教學(xué)進(jìn)行分析。下面本文將針對(duì)這兩種需求,詳細(xì)地闡述描繪繪圖的過(guò)程。
4.2 根據(jù)學(xué)期進(jìn)行分析
針對(duì)每一個(gè)學(xué)期,為了更好地體現(xiàn)該學(xué)期各班級(jí)的學(xué)習(xí)情況,需要將每個(gè)專(zhuān)業(yè)的總評(píng)成績(jī)匯總一個(gè)表中,選用未進(jìn)行數(shù)據(jù)集成之前的表格即可。首先使用read_excel方法讀取出表格,將專(zhuān)業(yè)作為橫坐標(biāo),總評(píng)成績(jī)作為縱坐標(biāo);其次選取文件名的中間幾個(gè)字符串作為學(xué)期的標(biāo)識(shí);最后進(jìn)行折線(xiàn)圖的繪制。主要代碼如圖6。
用戶(hù)進(jìn)行分析時(shí),只需在GUI中選擇需要導(dǎo)入的表格文件,用學(xué)期對(duì)文件進(jìn)行命名即可,這里以選取兩個(gè)學(xué)期為例,得到的圖形如圖7。結(jié)合圖像可以很直觀(guān)的分析出,16-17-1學(xué)期財(cái)務(wù)管理專(zhuān)業(yè),信管專(zhuān)業(yè),土木專(zhuān)業(yè)的成績(jī)較為突出,而非金屬專(zhuān)業(yè),彈藥專(zhuān)業(yè)成績(jī)處于最下游。
4.3根據(jù)選取的班級(jí)或教師進(jìn)行分析
針對(duì)每一個(gè)班級(jí)以及每一位教師,為了更好地體現(xiàn)其近幾年的學(xué)習(xí)及教學(xué)情況,需要將每個(gè)班級(jí)以及每位教師近幾年的平均成績(jī)匯總到一張表中,這時(shí)就要選用數(shù)據(jù)預(yù)處理中已經(jīng)過(guò)數(shù)據(jù)集成的表。首先使用read_excel方法讀取出表格,將學(xué)期作為橫坐標(biāo),總評(píng)成績(jī)作為縱坐標(biāo);其次根據(jù)選取的班級(jí)或教師名在數(shù)據(jù)表中查找數(shù)據(jù)項(xiàng);最后讀出該數(shù)據(jù)項(xiàng)進(jìn)行折線(xiàn)圖的繪制。主要代碼如圖8。
用戶(hù)進(jìn)行分析時(shí),只需在圖形化界面中選擇需要導(dǎo)入的表格文件,采用數(shù)據(jù)預(yù)處理中數(shù)據(jù)集成的方法,這里以選取脫敏后的代號(hào)為T(mén)23的老師為例,得到的圖形如圖9。結(jié)合圖像可以很直觀(guān)地分析出:代號(hào)為T(mén)23老師在近幾年的教學(xué)中,17-18學(xué)年第一學(xué)期的教學(xué)質(zhì)量最好,15-16學(xué)年第二學(xué)期的教學(xué)質(zhì)量最差。
5 結(jié)語(yǔ)
本文結(jié)合實(shí)例對(duì)Python應(yīng)用于數(shù)據(jù)處理時(shí)的各階段進(jìn)行了分析,發(fā)現(xiàn)無(wú)論在數(shù)據(jù)分析還是數(shù)據(jù)挖掘中,數(shù)據(jù)預(yù)處理都占有很重的地位,占有總工作量的70%左右,因此數(shù)據(jù)處理的準(zhǔn)確性是之后數(shù)據(jù)分析與挖掘的基礎(chǔ),數(shù)據(jù)預(yù)處理中的脫敏一步能夠有效地保護(hù)用戶(hù)的隱私,提高系統(tǒng)安全性。在對(duì)數(shù)據(jù)進(jìn)行分析時(shí),可視化是一個(gè)很好的選擇,能夠更加直觀(guān)地對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單的分析?;诒疚牡臄?shù)據(jù)處理步驟之后,更有利于關(guān)聯(lián)分析等更深層次的挖掘。
參考文獻(xiàn):
[1]陳天瑩,陳劍鋒.大數(shù)據(jù)環(huán)境下的智能數(shù)據(jù)脫敏系統(tǒng)[J].通信技術(shù),2016,49(7):915-922.
[2]張治斌,劉威.淺析數(shù)據(jù)挖掘中的數(shù)據(jù)預(yù)處理技術(shù)[J].數(shù)字技術(shù)與應(yīng)用,2017(10):216-217.
[3]孔欽,葉長(zhǎng)青,孫赟.大數(shù)據(jù)下數(shù)據(jù)預(yù)處理方法研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2018,28(5):1-4.
[4]李俊華.基于Python的數(shù)據(jù)分析[J].電子技術(shù)與軟件工程,2018(17):167.
[5]葉鷗,張璟,李軍懷.中文數(shù)據(jù)清洗研究綜述[J].計(jì)算機(jī)工程與應(yīng)用,2012,48(14):121-129.
[6]程學(xué)旗,靳小龍,王元卓,郭嘉豐,張鐵贏,李國(guó)杰.大數(shù)據(jù)系統(tǒng)和分析技術(shù)綜述[J].軟件學(xué)報(bào),2014,25(9):1889-1908.
[7]馮登國(guó),張敏,李昊.大數(shù)據(jù)安全與隱私保護(hù)[J].計(jì)算機(jī)學(xué)報(bào),2014,37(1):246-258.
[8]劉勘,周曉崢,周洞汝.數(shù)據(jù)可視化的研究與發(fā)展[J].計(jì)算機(jī)工程,2002(8):1-2+63.
【通聯(lián)編輯:王力】