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