基于Python的Moodle学习平台日志分析
2018-12-15宋永生吴新华
宋永生 吴新华
摘 要: Moodle作为一种开源学习平台,在高职院校中得到了广泛的运用。Moodle在使用过程中,积累了大量的数据。利用Python语言设计程序,对学习平台积累的日志数据进行分析,揭示出Moodle学习平台在线学习人数随日期和时间的变化规律,为学习平台的计算资源分配及教师在线辅导的时间选择提供决策依据。
关键词: Python; Moodle; 学习平台; 日志
中图分类号:TP391 文献标志码:A 文章编号:1006-8228(2018)10-19-03
Abstract: As an open source learning platform, Moodle has been widely used in higher vocational colleges. Moodle has accumulated a lot of data in the process of using. Design a program by using Python language to analyze the log data accumulated on the learning platform, reveal the law that the number of online learner on Moodle learning platform changes with the date and time, and provide a decision basis for the allocation of computing resources of the learning platform and time selection of teachers' online tutoring.
Key words: Python; Moodle; learning platform; log
0 引言
Moodle是一種开源在线学习平台,它基于开源脚本语言PHP开发,数据库采用开源关系型数据库MySQL,支持SCORM和AICC标准课件,可以创建互操作、易访问和可复用的基于Web的学习内容。Moodle把整个学习过程抽象为活动和资源,主要有课程管理、作业、聊天、投票、论坛、测验、问卷调查、互动评价及资源等模块[1]。Moodle学习平台界面简洁明了,但功能非常强大,Moodle的在线教学模块采用可自由组合的动态模块化设计,教师构建在线教学课程像搭积木一样简单有趣。伴随着Moodle的飞速发展,近年来国内很多高职院校先后上线了Moodle在线学习平台。Moodle网络学习平台在使用过程中,积累了大量的学习资源数据和学习行为数据,而这些数据并没有在在线学习实践中真正发挥应有的作用。
Python是Guido van Rossum在1989年圣诞节期间开发的一种面向对象的解释型高级程序设计语言。Python程序具有简洁性、易读性、可扩展性及跨平台运行。Python作为一种胶水语言,方便扩展,提供了丰富的API和工具,可以使用C、C++或Java来编写扩充模块。Python最大的优势是有丰富的库,数据分析是Python的杀手锏,利用Python做科学计算的科研人员日益增多。因为Python是一种解释型语言,所以运行速度相对较慢,而且代码不能加密,但利用Python语言编程的开发速度较快。
随着物联网、云计算等信息技术的飞速发展,各种应用系统近年来积累了大量的数据,对这些数据进行分析的需求也与日俱增,然而普通用户在进行数据分析和使用相关工具时也面临着诸多问题[2]。目前主流的数据分析软件有Matlab、SPSS和SAS,然而这些软件费用高昂,安装包较大,安装过程复杂,所以很多研究人员纷纷将目光转向程序设计。目前数据分析的程序设计语言主要包括R和Python。数据集大了以后,R语言的处理速度下降明显,而且R语言的受众较窄,一般只有金融方面的人士在使用。近年来,随着Python语言在人工智能领域的大放异彩,Python走进了中小学课堂,且被列为全国计算机等级考试的程序语言,越来越多的人开始学习和使用Python语言。Python已经成为最受欢迎的程序设计语言之一[3]。
本文提出利用Python语言进行程序设计,对开源学习平台Moodle积累下来的日志数据进行分析,尝试发现一些对Moodle学习平台有用的信息。
1 数据处理流程
本文采用Python语言编写程序,对Moodle学习平台积累下来的日志数据进行分析,数据分析处理的流程如图1所示。
2 相关技术
2.1 数据预处理
收集到的原始数据可能来自不同的数据源,不同的格式,而且数据中也可能有缺失、重复、不一致甚至错误的数据,这使得数据分析的结果可能出现偏差,甚至错误,所以在数据分析之前的数据预处理非常重要。数据预处理分为数据清洗、数据集成、数据规约及数据变换四个步骤。数据清洗主要包括填充缺失值、光滑噪声、识别离群点等;数据集成主要指集成多种数据源;数据规约主要指数据的简化表示;数据变换主要指数据规范化、离散化及概念分层等。
本文的数据来自Moodle学习平台,可以编写程序连接学习平台的MySQL数据库读日志数据,也可以通过日志页面直接导出Execl或CSV格式日志数据。本文在导出Execl格式的日志数据后,编写Python程序,利用openpyxl库,读取日志数据,转换日期时间列的格式,生成新的日期列和时间列,将处理结果保存为新的Execl文件,部分日志数据如图2所示,其中加粗的为新增列。由于本文的数据源单一,不存在数据缺失等问题,所以数据预处理相对简单。
2.2 利用Pandas进行数据分析
数据分析是指利用统计等方法对收集到的数据进行分析,提取有用信息并形成知识的过程。数据挖掘是从海量数据中抽取前所未知的,可理解的,可操作信息的过程,数据挖掘是数据分析的高级阶段。Pandas是一个专门用于数据分析的开源Python库[4],它以Python的科学计算基础库NumPy为基础,使得Pandas具有较好的兼容性,还可以借力NumPy库在计算方面的高性能优势。Pandas最初由AQR Capital Management于2008年4月开发,并于2009年底开源。Pandas提供了多种高级的数据结构和数据处理的方法,其中最主要的是Series和DataFrame数据结构。Series用来表示一维数据结构,与数组类似,但功能更强大,每一个元素都有一个标签,可以理解为一组带索引的数组。DataFrame用来表示二维的表结构,它是由按一定顺序排列的多列数据组成,各列的数据类型可以不同。
本文利用Python编写程序,读取数据预处理得到的Execl文件,首先把用户全名及日期列读取到Pandas DataFrame中,删除重复行,然后按日期进行分组,统计每组总人数,得到在线人数随日期变化的统计数据;再把用户全名、时间列读取到Pandas DataFrame中,删除重复的行,按时间进行分组,统计每组总人数,得到在线人数随时间变化的统计数据。
2.3 利用Matplotlib进行数据可视化
数据可视化是指将数据分析的结果,通过图形等方式直观展示出来,便于解释和评估,从而形成知识。一张图胜过千言万语,当数据以直观的图形方式展示在数据分析者面前时,分析者往往能够一眼洞悉数据背后隐藏的信息并转化知识以及智慧[5]。Python中常用的数据可视化库主要有Matplotlib、Bokeh、Pygal、Plot.ly、Seaborn及ggplot。
Matplotlib是一个基于NumPy的2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。Seaborn及ggplot库是以Matplotlib库为基础进行构建的。Matplotlib用于数据的可视化,可以将数据分析结果直观展示,便于数据分析结果的解释和评估。利用Matplotlib库,通过编程可以方便绘制直方图、折线图、饼图、散点图及雷达图等。本文在对学习平台的日志数据分析结果进行可视化时,通过调用Matplotlib绘图库,先以日期为横轴,以对应的在线人数为纵轴,绘制折线图,展示出学习平台在线人数随日期的变化规律;再以时间为横轴,以对应的在线人数为纵轴,绘制折线图,直观地展示出学习平台在线人数随时间的变化规律。
3 数据分析实现
本文选择江苏工程职业技术学院商学院的2016级电子商务独立本科班所使用的Moodle学习平台的网络课程《网络安全》的日志数据进行分析,共14人(含在外实习学生)参加该课程网络学习。在Moodle学习平台的日志信息页面,选择要分析的日志并导出为Execl格式,然后通过Python编写程序读取日志数据,对日志数据进行预处理,转换日期时间格式,生成新的日期列和时间列,将预处理后的日志数据保存。读取用户全名及日期列,删除重复行,先按日期进行分组统计在线人数并利用Matplotlib绘制折线图,横轴为日期,纵轴为在线学习人数,程序运行结果如图3所示。
类似的,按时间进行分组统计在线人数并利用Matplotlib绘制折线图,横轴为时间,纵轴为在线学习人数,程序运行结果如图4所示。
由图3可以看出,在线学习的人数有一定的周期性规律,这点与该课程在每周二开课,课上学生利用学习平台进行学习或测验相吻合,上课日期的在线人数最多。由图4可以看出,晚上在线学习的人数较多,这与课程开设在晚间是一致的,此外中午放学后、下午放学后及晚上放学后,在线人数也会出现小高峰,这说明学生课余时间会登录学习平台进行学习及做作业。除了课堂时间,教师可以选择在这三时段进行在线辅导。平台管理者应该为学习平台的服务器在该时段分配更多的计算资源,以保证学习平台顺畅稳定运行。
4 结束语
本文利用Python语言编写程序,分析开源学习平台Moodle产生的日志数据,从而揭示一些关于Moodle平台上学习者学习的规律。该研究有助于教师选择在线人数较多的时段进行在线辅导及答疑,从而提高学生的在线学习效率,平台管理者在此时段应为学习平台的服务器分配更多的计算资源。将来可以利用机器学习的方法对 Moodle学习平台积累的数据进行分析,帮助教师发现学生学习的更多规律、分析学习特征及习惯等,针对性的改进学习平台及学习资源,优化教学过程,为学生提供个性化的学习服务,提升教学效果。
參考文献(References):
[1] 宋永生.基于云计算的在线学习平台研究[J].价值工程,2017.36:172-174
[2] 严婷,文欣秀,赵嘉豪等.基于Python的可视化数据分析平台设计与实现[J].计算机时代,2017.12:54-56
[3] 聂晶.Python在大数据挖掘和分析中的应用优势 [J].广西民族大学学报(自然科学版),2018.24(1):76-79
[4] (意)Fabio Nelli著,杜春晓译.Python数据分析实战[M].人民邮电出版社,2016.
[5] 任磊,杜一,马帅等.大数据可视分析综述[J].软件学报,2014.25(9):1909-1936