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