尹詩玉 陳小奎 師琳
摘要:為分析高校教學(xué)質(zhì)量,并對其進(jìn)行評價,本文基于python語言對教務(wù)系統(tǒng)導(dǎo)出的原數(shù)據(jù)進(jìn)行處理和分析,主要從數(shù)據(jù)導(dǎo)入,數(shù)據(jù)預(yù)處理,及數(shù)據(jù)分析三個層面結(jié)合實(shí)例進(jìn)行分析。首先利用tkinter庫設(shè)計(jì)出數(shù)據(jù)導(dǎo)入的界面;其次闡述數(shù)據(jù)清洗、分組、集成以及脫敏等數(shù)據(jù)預(yù)處理的常用算法,并結(jié)合高校教學(xué)評價這一實(shí)際案例進(jìn)行了演示,借助pandas庫中的dataframe數(shù)據(jù)類型實(shí)現(xiàn)了對“臟數(shù)據(jù)”的清洗,以及對教師姓名的脫敏;最后利用matplotlib庫對處理好的數(shù)據(jù)進(jìn)行數(shù)據(jù)可視化,并結(jié)合所得圖像對各專業(yè)班級及教師的學(xué)習(xí)和教學(xué)狀況進(jìn)行分析與評價。通過本文的數(shù)據(jù)處理,實(shí)現(xiàn)了對教師姓名的脫敏,保護(hù)了教師的隱私,并利用圖形直觀地反映出各教師和班級近幾年的成績分布,使得高??冃Э己烁拥姆奖恪?/p>
關(guān)鍵詞:Python;pandas;數(shù)據(jù)預(yù)處理;數(shù)據(jù)脫敏;數(shù)據(jù)可視化
中圖分類號:TP391 文獻(xiàn)標(biāo)識碼:A 文章編號: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ù)據(jù)挖掘與分析日益成為不可或缺的技能。Python是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,由于其具有豐富的類庫與簡潔性,成為數(shù)據(jù)分析的首選語言。由于數(shù)據(jù)類型的多樣化及其關(guān)聯(lián)關(guān)系的復(fù)雜性,數(shù)據(jù)預(yù)處理是數(shù)據(jù)分析和挖掘前的一個非常重要的工作;再者在數(shù)據(jù)挖掘技術(shù)快速發(fā)展的同時,也帶來了隱私信息容易泄露的難題,這時就需要對敏感信息進(jìn)行脫敏。
2 數(shù)據(jù)導(dǎo)入界面的設(shè)計(jì)
本文借助Python的tkinter包實(shí)現(xiàn)圖形化界面的設(shè)計(jì)。界面主要分為左右兩欄,左邊顯示用戶的登錄信息,右邊一欄供用戶導(dǎo)入數(shù)據(jù)并根據(jù)需要進(jìn)行相關(guān)的數(shù)據(jù)分析;菜單欄的內(nèi)容主要是原專業(yè)成績分布統(tǒng)計(jì),教師評價統(tǒng)計(jì)和教師與專業(yè)成績的關(guān)聯(lián)分析,本文著重闡述前兩項(xiàng),之后將對教師與專業(yè)成績的關(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ù),無用數(shù)據(jù)等,因此引入了數(shù)據(jù)預(yù)處理技術(shù)對原數(shù)據(jù)進(jìn)行處理。
數(shù)據(jù)預(yù)處理技術(shù)主要由數(shù)據(jù)清洗,數(shù)據(jù)集成,數(shù)據(jù)變換,數(shù)據(jù)規(guī)約等四部分組成。數(shù)據(jù)清洗部分主要包含處理缺失數(shù)據(jù)、檢測和過濾異常值,移除重復(fù)數(shù)據(jù)等;數(shù)據(jù)集成部分主要包含使用鍵參數(shù)的DataFrame合并,軸向連接等;數(shù)據(jù)變換部分主要包含利用映射進(jìn)行數(shù)據(jù)轉(zhuǎn)換,替換值等;數(shù)據(jù)規(guī)約就是對數(shù)據(jù)進(jìn)行聚集,進(jìn)一步降低數(shù)據(jù)規(guī)模,方便處理與分析。常見的脫敏方法有:
1)替換:以虛構(gòu)的數(shù)據(jù)代替真值,從而達(dá)到將隱私數(shù)據(jù)保護(hù)起來的目的。
2)無效化:以Null或者***代替真值的一部分,例如對銀行卡或手機(jī)號的處理。
3)置亂:對敏感數(shù)據(jù)列的值打亂后,重新分布,該方法將破壞與其他字段的聯(lián)系,具有局限性。
4)均值化:對數(shù)值型的數(shù)據(jù),首先求解它們的均值,使得脫敏后的值在均值附近。
5)偏移:通過隨機(jī)地對數(shù)據(jù)進(jìn)行移位改變數(shù)據(jù)[1]。
上述五種只是常用的幾種數(shù)據(jù)脫敏的方法,還有很多其他方法如反推斷、FPE、屏蔽,限制返回行數(shù)等等,根據(jù)實(shí)際應(yīng)用情況選取合適的脫敏方法即可。
3.1實(shí)例數(shù)據(jù)分析
本實(shí)例的每學(xué)期高數(shù)成績原始數(shù)據(jù)中包含有學(xué)號、姓名、課程名稱、學(xué)分、平時成績、期中成績、期末成績、實(shí)驗(yàn)成績、總評成績、備注、折算成績、補(bǔ)考成績、重修成績、績點(diǎn)、課程性質(zhì)、課程歸屬、重修標(biāo)記、選課課號、學(xué)年、學(xué)期、是否注冊、學(xué)院、班級、正考學(xué)年學(xué)期,教師姓名共25個屬性列,每學(xué)期記錄約4500條。
3.2數(shù)據(jù)清洗
數(shù)據(jù)清洗是有助于解決數(shù)據(jù)質(zhì)量問題的處理過程,通過分析“臟數(shù)據(jù)”的產(chǎn)生原因及存在形式,對數(shù)據(jù)流的過程進(jìn)行分析,將“臟數(shù)據(jù)”轉(zhuǎn)化成滿足數(shù)據(jù)質(zhì)量要求的數(shù)據(jù)。數(shù)據(jù)清洗通常包括下面集中數(shù)據(jù)的處理[5]。
1)缺失值處理
本文通過對缺失值進(jìn)行檢測,發(fā)現(xiàn)原數(shù)據(jù)中存在少量值為空的數(shù)據(jù),雖然數(shù)量不多但仍會對之后的分析產(chǎn)生影響,為保證之后分析的準(zhǔn)確性,需要將這些數(shù)據(jù)進(jìn)行刪除,經(jīng)過處理后,最終剩下的數(shù)據(jù)還有4300余條。
2)異常值處理
首先導(dǎo)入matplotlib包,畫出有關(guān)數(shù)據(jù)的箱型圖,從圖中可以看出部分?jǐn)?shù)據(jù)的離散程度還是很大的,總評成績?yōu)?.1,0.2等之類的一定是異常值,下面需要對這些數(shù)據(jù)進(jìn)行剔除。結(jié)合該實(shí)例進(jìn)行分析,總評成績的異常值都出現(xiàn)在備注為“缺考”或者“緩考”的記錄條上,因此我們利用備注這一列進(jìn)行異常值的剔除,將備注數(shù)據(jù)是以上兩種情況的進(jìn)行取反操作,所得到的即為總評成績?yōu)檎V档膶W(xué)生記錄。
3)重復(fù)值處理
該實(shí)例的原數(shù)據(jù)來自教務(wù)系統(tǒng),由于學(xué)號是主鍵,其唯一表示了一個學(xué)生,因此不會存在重復(fù)值的存在,該實(shí)例不需要對重復(fù)值進(jìn)行考慮。
3.3 數(shù)據(jù)變換
數(shù)據(jù)變換就是找到數(shù)據(jù)的統(tǒng)一表示方法,對數(shù)據(jù)進(jìn)行歸一化處理,將其轉(zhuǎn)換為有利于分析與挖掘的形式;以及利用映射或替換等手段對敏感數(shù)據(jù)進(jìn)行隱藏,從而保護(hù)個人隱私。
對于該實(shí)例,之后需要分析的僅有班級,學(xué)院,教師姓名,總評成績四個屬性列,而各屬性列的值不用進(jìn)行無量綱化,因此可省去數(shù)據(jù)的標(biāo)準(zhǔn)化處理這一步;然而教師姓名這一屬性列涉及了教師的個人隱私,屬于敏感信息,所以需要對其進(jìn)行脫敏處理,因?yàn)樽罱K要對教師的教學(xué)進(jìn)行評價,所以采用替換的方法來進(jìn)行脫敏處理。首先讀取出表格的教師姓名一列,并建立兩個數(shù)組,一個是原始姓名數(shù)組,一個是替換的教師代號,將教師姓名這一列進(jìn)行替換,以保護(hù)這一敏感數(shù)據(jù)。
3.4 數(shù)據(jù)規(guī)約
數(shù)據(jù)規(guī)約是在對所要解決問題理解的基礎(chǔ)上,尋找數(shù)據(jù)的有用特征,以縮減數(shù)據(jù)規(guī)模,在盡可能保持?jǐn)?shù)據(jù)原貌的同時最大限度地減少數(shù)據(jù)量,對數(shù)據(jù)進(jìn)行降維處理,使得之后的分析與挖掘更加高效[3]。
結(jié)合本實(shí)例進(jìn)行分析,因?yàn)楸景咐詈笮枰治龅氖歉鲗I(yè),班級及教師的學(xué)習(xí)及教學(xué)狀況。需要得到每個班級的平均分后再進(jìn)行評價。故需要先根據(jù)班級這一屬性列對替換后的數(shù)據(jù)進(jìn)行分組后,對總評成績求平均將其聚合。最終只需要保留班級,學(xué)院,總評成績,教師姓名四列即可。
數(shù)據(jù)清洗,變換,規(guī)約的主要代碼如圖2,處理前后的數(shù)據(jù)對比圖如圖3,圖4所示。
3.5 數(shù)據(jù)集成
數(shù)據(jù)集成是將多文件中的數(shù)據(jù)進(jìn)行合并處理,主要涉及的方面有數(shù)據(jù)的選擇,數(shù)據(jù)的沖突以及不一致問題,其中主要包含相同字段屬性的縱向追加和具有相關(guān)屬性疊加的橫向合并等,數(shù)據(jù)橫向合并時,會因?yàn)橥粚ο蟮囊恍傩宰侄卧诓煌募械膶傩悦煌瑢?dǎo)致數(shù)據(jù)冗余,因此消除數(shù)據(jù)冗余是數(shù)據(jù)集成中的一項(xiàng)重要工作[2]。
結(jié)合本實(shí)例,為方便之后對每個班級,每位教師近幾年的學(xué)習(xí)與教學(xué)情況進(jìn)行分析,我們需要將每一學(xué)年的數(shù)據(jù)集成到一張表中。對于每個班級,為保證連接的正確性,首先將每學(xué)期的表格按照班級降序排列,其次利用Pandas庫取出總評成績這一列,最后將每學(xué)期的成績這一列放入新表中,與相關(guān)學(xué)期列對應(yīng),最終所得的表格即為集成后的每個班級的各學(xué)期成績分布表如圖5。
4 圖像分析
Python中具有的Matplotlib包,是數(shù)據(jù)可視化的重要類庫之一,其中包含了豐富的數(shù)據(jù)可視化資源,包括3D,地圖等都有涉及,借助該包可以實(shí)現(xiàn)直線圖、柱狀圖、箱型圖、散點(diǎn)圖以及折線圖。其主要包含以下四部分內(nèi)容:
1)Matplotlib的基礎(chǔ)figure類型。
2)調(diào)整figure的樣式和顏色。
3)添加圖的注釋。
4)其他復(fù)雜圖形[4]。
4.1實(shí)例需求
根據(jù)需求分析,本案例所要分析的是各專業(yè)的近幾年成績分布,以及各教師近幾年的教學(xué)質(zhì)量評價。并且根據(jù)每學(xué)期的總評成績,對班級和教師學(xué)習(xí)與教學(xué)進(jìn)行分析。下面本文將針對這兩種需求,詳細(xì)地闡述描繪繪圖的過程。
4.2 根據(jù)學(xué)期進(jìn)行分析
針對每一個學(xué)期,為了更好地體現(xiàn)該學(xué)期各班級的學(xué)習(xí)情況,需要將每個專業(yè)的總評成績匯總一個表中,選用未進(jìn)行數(shù)據(jù)集成之前的表格即可。首先使用read_excel方法讀取出表格,將專業(yè)作為橫坐標(biāo),總評成績作為縱坐標(biāo);其次選取文件名的中間幾個字符串作為學(xué)期的標(biāo)識;最后進(jìn)行折線圖的繪制。主要代碼如圖6。
用戶進(jìn)行分析時,只需在GUI中選擇需要導(dǎo)入的表格文件,用學(xué)期對文件進(jìn)行命名即可,這里以選取兩個學(xué)期為例,得到的圖形如圖7。結(jié)合圖像可以很直觀的分析出,16-17-1學(xué)期財(cái)務(wù)管理專業(yè),信管專業(yè),土木專業(yè)的成績較為突出,而非金屬專業(yè),彈藥專業(yè)成績處于最下游。
4.3根據(jù)選取的班級或教師進(jìn)行分析
針對每一個班級以及每一位教師,為了更好地體現(xiàn)其近幾年的學(xué)習(xí)及教學(xué)情況,需要將每個班級以及每位教師近幾年的平均成績匯總到一張表中,這時就要選用數(shù)據(jù)預(yù)處理中已經(jīng)過數(shù)據(jù)集成的表。首先使用read_excel方法讀取出表格,將學(xué)期作為橫坐標(biāo),總評成績作為縱坐標(biāo);其次根據(jù)選取的班級或教師名在數(shù)據(jù)表中查找數(shù)據(jù)項(xiàng);最后讀出該數(shù)據(jù)項(xiàng)進(jìn)行折線圖的繪制。主要代碼如圖8。
用戶進(jìn)行分析時,只需在圖形化界面中選擇需要導(dǎo)入的表格文件,采用數(shù)據(jù)預(yù)處理中數(shù)據(jù)集成的方法,這里以選取脫敏后的代號為T23的老師為例,得到的圖形如圖9。結(jié)合圖像可以很直觀地分析出:代號為T23老師在近幾年的教學(xué)中,17-18學(xué)年第一學(xué)期的教學(xué)質(zhì)量最好,15-16學(xué)年第二學(xué)期的教學(xué)質(zhì)量最差。
5 結(jié)語
本文結(jié)合實(shí)例對Python應(yīng)用于數(shù)據(jù)處理時的各階段進(jìn)行了分析,發(fā)現(xiàn)無論在數(shù)據(jù)分析還是數(shù)據(jù)挖掘中,數(shù)據(jù)預(yù)處理都占有很重的地位,占有總工作量的70%左右,因此數(shù)據(jù)處理的準(zhǔn)確性是之后數(shù)據(jù)分析與挖掘的基礎(chǔ),數(shù)據(jù)預(yù)處理中的脫敏一步能夠有效地保護(hù)用戶的隱私,提高系統(tǒng)安全性。在對數(shù)據(jù)進(jìn)行分析時,可視化是一個很好的選擇,能夠更加直觀地對數(shù)據(jù)進(jì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]孔欽,葉長青,孫赟.大數(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é)旗,靳小龍,王元卓,郭嘉豐,張鐵贏,李國杰.大數(shù)據(jù)系統(tǒng)和分析技術(shù)綜述[J].軟件學(xué)報,2014,25(9):1889-1908.
[7]馮登國,張敏,李昊.大數(shù)據(jù)安全與隱私保護(hù)[J].計(jì)算機(jī)學(xué)報,2014,37(1):246-258.
[8]劉勘,周曉崢,周洞汝.數(shù)據(jù)可視化的研究與發(fā)展[J].計(jì)算機(jī)工程,2002(8):1-2+63.
【通聯(lián)編輯:王力】