卿 楓 韓 耀 唐明鳳 田 甜
(西華大學 電氣與電子信息學院,四川 成都 610039)
近年來,隨著互聯網與通信技術的高速發展,學習資源的建設與共享呈現出新的發展趨勢,各種網課、慕課、直播課等層出不窮,各種在線教育平臺和學習 應用紛紛涌現。尤其是2020 年春季學期,受新冠疫情影響,在教育部“停課不停學”的要求下,網絡平臺成為“互聯網+教育”成果的重要展示陣地。因此,如何根據教育平臺的線上用戶信息和學習信息,通過數據分析為教育平臺和用戶提供精準的課程推薦服務就成為線上教育的熱點問題。本賽題提供了某教育平臺近兩年的運營數據,希望參賽者根據這些數據,為平臺制定綜合的線上課程推薦策略,以便更好地服務線上用戶。[1]
1.分析平臺用戶的活躍情況,計算用戶的流失率。
2.分析線上課程的受歡迎程度,構建課程智能推薦模型,為教育平臺的線上 推薦服務提供策略。
任務 1.1 應包含每個表中缺失值和重復值的記錄數以及有效數據的記錄數。
任務 1.2 應包含 recently_logged 字段的“--”值的記錄數以及數據處 理的方法。
任務 2.1 應包含各省份與各城市的熱力地圖以及主要省份和主要城市的數據表格,并進行分析。
任務 2.2 應包含工作日與非工作日各時段的柱狀圖,并進行分析。
任務 2.3 應包含對流失率的定義,并給出流失率的結果。
任務 2.4 應根據計算結果給出合理的建議。
任務 3.1 應包含最受歡迎的前 10 門課程的參與人數、受歡迎程度及柱狀圖。
任務 3.2 應包含相應推薦算法的描述,并給出總學習進度最高的5 個用戶的課程推薦數據。
任務 3.3 應包含數據分析的方法、算法描述以及主要結果。
數據時間:2020 年11 月14 日
數據處理是應用數據分析前極其重要的一步,通常包括了對異常數據的處理、缺失值的處理和重復值的處理。只有處理了才能夠進行模型的建立與訓練,最終得到相關的結果。
2.2.1 異常數據處理
針對附件所給數據的study_information 文件,對其進行處理。
2.2.2 缺失數據處理
針對附件所給數據的study_information 文件,首先讀取原始數據(如下圖1),然后再對其price 一欄的缺失值進行處理,我們利用python 的pands 庫的數據處理功能先將缺失價格的課程統計出來course_id 中的課程51 與課程96的價格數據缺失,且課程51 缺失4011 個,課程96 缺失227 個。針對study_information 文件總數據數來說,這缺失值的占比不足2%,由此我們將其價格統一補0 處理。

圖1
通過python 的布爾索引找出有缺失值的某列數據,如下圖2:

圖2
由此可見price 列存在缺失值,由此利用fillina 將缺失值的課程進行統計分析得到缺失值的課程id 為課程51 與課程96,在統計其缺失個數得到課程51 缺失4011 個,課程96 缺失227 個。得到圖3:

圖3
再對缺失值進行補0 操作得到如下圖數據:
至此將study_information 文件中的所有缺失值處理完成。
針對附件給出的users 文件中的用戶id 欄存在缺失數據通過python 的pandas 庫將缺失用戶id 的那一欄數據全部提取出來,提取圖4:

圖4
由于此數據量占總數據量的比例小因此采取了剔除處理,將以上的67 個缺失用戶id 全部移除。得到新的數據如圖5:

圖5
由此文件users 文件中的缺失用戶id 全部解決。
通過已經進行了缺失值和重復值處理的文件users,再將login 文件中的最近登陸時間的那一列數據進行時間戳類型轉化,找到最近的時間,再通過用戶id 匹配users 文件中的相同的用戶id 上將最近登陸的時間補為login 文件找到的最近的時間。但是經過此種方式進行匹配后依然未完全補全。由此確定某些用戶再注冊后并沒有使用,故將其最近的登陸時間修改為注冊的時間。最后補全數據如圖6 所示:

圖6
2.2.3 重復數據處理
通過對已經進行過數據缺失處理的users 文件進行數據分析,發現文件users 的某些行存在重復的數據如圖7 所示:

圖7
在經過python 的將user 的重復值刪除保留其中的一行有用的數據,處理后如圖8 所示:

圖8
由此解決了文件user 中的數據重復的問題。
數據可視化主要旨在借助于圖形化手段,清晰有效地傳達與溝通信息。但是,這并不就意味著數據可視化就一定因為要實現其功能用途而令人感到枯燥乏味,或者是為了看上去絢麗多彩而顯得極端復雜。[2]為了有效地傳達思想概念,美學形式與功能需要齊頭并進,通過直觀地傳達關鍵的方面與特征,從而實現對于相當稀疏而又復雜的數據集的深入洞察。然而,設計人員往往并不能很好地把握設計與功能之間的平衡,從而創造出華而不實的數據可視化形式,無法達到其主要目的,也就是傳達與溝通信息。[3]

圖9

圖10
3.2.1 熱力地圖
統計login 文件中不同的登陸地點的登陸次數然后通過python 的pyecharts 庫進行熱力地圖的繪制。通過對數據的分析及處理,得到不同登陸地點的登陸次數。
3.2.2 登陸次數柱狀圖
通過對users 文件中的最近訪問時間那一列數據進行時間戳轉化然后通過匹配星期的方式將每個時間進行分類,將為工作日的數據標記為0,非工作日的標記為1。然后再將統計的數據進行分類處理,在劃分時間段統計登陸次數,最后利用python 的matplotlib 庫繪制成柱狀圖。
3.2.3 流失率分析
先統計users 文件中的最近登陸時間與2020 年6 月18日的時間差,當時間差大90 天的時間時將此項標記為1,將時間差小于等于90 天的標記為0,最后將標記欄求和就得到流失的人數為22474,在于總人數相比得到最后的流失率為51.18%。
3.3.1 受歡迎程度分析
根據用戶參與學習的記錄,統計每門課程的參與人數,計算每門課 程的受歡迎程度,列出最受歡迎的前 10 門課程,并繪制相應的柱狀圖。通過數據處理過后的study_information 文件用python 提取出每一個課程的選人數量然后在對他的選課人數進行排序。
3.3.2 相似度分析
根據用戶選擇課程情況,構建用戶和課程的關系表(二元矩陣),使用基于物品的協同過濾算法計算課程之間的相似度。[4]通過數據預處理study_information 的文件,利用python 的pandas 庫得到:得到協同過濾后的數據如圖9所示:
通過數據分析得到的活躍程度的柱狀圖,然后柱狀圖表明非工作日時早上8:00 點到晚上20:00 的活躍度最高,由此可以建議在工作日時將課程開放時間調整在早上8:00到晚上20:00。然而非工作日活躍度有延長的趨勢,所以在非工作日時把課程開放時間可以適當延長。
通過對課程之間的相似度分析與付費和免費課程統計得到圖10、圖11:

圖11
由此得到付費課程的學習人數較多,而免費課程的學習人數較少。由此,為促進學習可以適當將一部分課程進行收費,同時來提高課程的學習率。
通過對附件所給的數據進行預處理,對缺失數據和重復數據的處理,再到對問題的分析以及對各個任務的處理,其中運用了python 的pandas 庫、datetime 庫、matplotlib 庫、numpy 庫、pyecharts 庫,最后得到的線上課程的綜合策略與管理決策建議。