企业培训数据可视化我爱编程

时代光华课程数据分析

2018-03-02  本文已影响47人  hua_allen

目录

  1. 概述
  2. 课程词频分析
    2.1 平台课程词频分析
    2.2 学员已学课程词频分析
    2.3 本人选课课程词频分析
  3. 学员学分分析
    3.1 学分基本情况
    3.2 按部门分析
    3.3 按性别分析
    3.4 按学历分析
  4. 其他
    4.1 课程视频下载
    4.2 时代光华官网课程词频分析
  5. 结语

1. 概述

本文简要分析了时代光华的一些课程数据和泓人学员学习数据。数据截止日期为2018年2月28日。分析过程主要运用如下工具:

2. 课程词频分析

2.1 平台课程词频分析

第一步:在浏览器中对网页地址进行分析,得到全部课程的json文件
第二步:编写页面程序展示全部课程,可以筛选课程和选课。

全部课程 第三步:利用export插件将课程名称列导出至txt文件 课程名称 第四步:在python中利用jieba库分词,再用wordcloud库制作词云图,选取了出现频率最高的60个词。
import jieba
from scipy.misc import imread  # 这是一个处理图像的函数
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
import matplotlib.pyplot as plt
from jieba.analyse import extract_tags
import numpy as npy

# 添加自己的词库分词
# jieba.add_word('十九大')
# 向jiabe库添加本地词库
jieba.load_userdict("newdict.txt")

# 分词函数
def jieba_words(texts):
    words_list = []
    word_generator = jieba.cut(texts, cut_all=True)
    # 打开屏蔽词的文本文件
    stopwords = open('stopwords.txt').read()
    for word in word_generator:
        if word.strip() not in stopwords:
            words_list.append(word)
    return ' '.join(words_list)  # 注意是空格

# 打开词源的文本文件
text = open('title.txt').read()
donewords = jieba_words(text)

# 计算词频
tags = jieba.analyse.extract_tags(sentence=donewords, topK=60)
words = [word for word in jieba.cut(text, cut_all=True)]
word_frequence_list = {}
for tag in tags:
    word_frequence_list[tag] = words.count(tag)

# 词云图设置
back_color = imread('map.jpg')  # 解析该图片
# 基于彩色图像生成相应彩色
image_colors = ImageColorGenerator(back_color)
wc = WordCloud(
    background_color='white',  # 背景颜色
    # max_words=80,  # 最大词数80
    mask=back_color,  # 以该参数值作图绘制词云,这个参数不为空时,width和height会被忽略
    max_font_size=60,  # 显示字体的最大值
    min_font_size=8,  # 显示字体的最小值
    # stopwords=STOPWORDS.add('new'),  # 使用内置的屏蔽词,再添加'苟利国'
    font_path="C:/Windows/Fonts/STZHONGS.TTF",  # 解决显示口字型乱码问题,可进入C:/Windows/Fonts/目录更换字体
    random_state=42,  # 为每个词返回一个PIL颜色
    width=576,  # 图片的宽
    height=576  # 图片的长
)

# 根据词频生成云图
wc.fit_words(word_frequence_list)
plt.imshow(wc.recolor(color_func=image_colors))
# 保存图片
wc.to_file('title.png')

4128门课程最后生成的词云效果图如下: 平台4128课程的关键词云图 还可以绘制课程关键词词频图: 课程关键词词频 核心python代码如下:
import wordcloud as wc
import matplotlib.pyplot as plt
import jieba
from PIL import Image
from numpy import array
from jieba.analyse import extract_tags
import numpy as npy
# 导入绘图库
from numpy import arange
import matplotlib

jieba.load_userdict("newdict.txt")
# 分词函数
def jieba_words(text):
    words_list = []
    word_generator = jieba.cut(text, cut_all=True)
    # 打开屏蔽词的文本文件
    stopwords = open('stopwords.txt').read()
    for word in word_generator:
        if word.strip() not in stopwords:
            words_list.append(word)
    return ','.join(words_list)  # 注意是空格


text = open('title.txt').read() #title
donewords = jieba_words(text)
tags = jieba.analyse.extract_tags(sentence=donewords, topK=20)
words = [word for word in jieba.cut(text, cut_all=True)]

words_freq = {}
for tag in tags:
    freq = words.count(tag)
    words_freq[tag] = freq
usedata = sorted(words_freq.items(), key=lambda d:d[1])
tmp = npy.array(usedata).T
# print(tmp)
word = tmp[0]
num = [int(item) for item in tmp[1]]

# 画布大小
fig,ax = plt.subplots(figsize=(15, 10))
#输出中文字体
myfont = matplotlib.font_manager.FontProperties(fname="C:/Windows/Fonts/STZHONGS.TTF")
#图表标题设置,想要标题居中可以去掉x,y的设置
plt.title(u'词频统计', fontproperties=myfont, fontsize=20, x=0.001, y=1.02)
#图表x轴设置
ax.set_xlabel(u'出现次数', fontproperties=myfont, fontsize=20, x=0.06, y=1.02, color="gray")
#边框线设置,去除上方右方的框线,左下框线置灰融入背景
ax.spines['bottom'].set_color('grey')
ax.spines['left'].set_color('grey')
ax.spines['top'].set_color('white')
ax.spines['right'].set_color('white')
#传入词语,y轴显示20个标记位置,设置字体大小,颜色为灰色
tick_positions = range(1,21)
ax.set_yticks(tick_positions)
ax.set_yticklabels(word, fontproperties=myfont, fontsize=18, color="gray")
#设置数据条的间隔
bar_positions = arange(20) + 0.75
#导入数据并做图展示
ax.barh(bar_positions, num, 0.5, align="edge")
plt.savefig("title.jpg")
plt.show()

2.2 学员已学课程词频分析

在导出的课程excel表中筛选出有学员学过的课程,利用上文介绍的方法做词频分析,结果如下: 学员已选课程词云图 最受泓人学员欢迎的课程的关键词

对比平台课程及学员所学课程,“管理”与“企业”是课程热门词,也是学员学习的热门。另外,平台课程关键词前10位中有3个并没有出现在学员课程关键词中,分别是“销售”、“生产”、“沟通”,而“安全”和“技术”两个词虽然平台上词频不高,却较受泓人学员欢迎。
个人认为,集团公司是大型制造型企业,还是应当重视有关“生产制造”的学习和培训。

2.3 本人选课课程词频分析

第一步:在浏览器中对网页地址进行分析,得到本人所学课程的json文件
第二步:编写页面程序展示我的课程,我设置了查看课程详细列表和学习的链接,此外还给出了查看总学分排名的链接>>>>学分排名

我的课程 第三步:同前文一样,利用export插件将课程名称导出至txt文件。
第四步:利用python的jieba分词和wordcloud生成词云图。 我的课程 我的课程词频

3. 学员学分分析

3.1 学分基本情况

我通过分析URL提取了全部学员的学员积分情况。截止2月28日,58名学员最高分795.2,最低分0.5,平均分235.5,中位分171.6。学分最高的前10人,有7人来自法 * * 集团,3人来自光 * 集团。 学分区段人数分布

学分整体呈现左偏态分布,因此中位分比平均分更有代表意义。

3.2 按部门分析

从分部门统计看,表现最好的应该是投 * * * 部,平均分达到333.5,平均分超过300分的还有法 * * 集团和光 * 集团;平均分低于100分的是博 * * 工作站和科 * 中心。 按部门统计学分

3.3 按性别分析

从分性别统计看,女生平均分252.5,中位分200.5;男生平均分225.2,中位分160.5。女生表现要好于男生,女生分差波动也小于男生。 按性别统计学分

3.4 按学历分析

从分学历统计看,本科、大专和硕士表现相当,本科略胜出;博士(后)表现较差。 按学历统计学分.PNG

4. 其他

4.1 课程视频下载

本人在看其他平台教学视频的时候通常都是1.5 - 2倍速度播放。时代光华平台上的视频无法加速播放和快进,这是服务器上做了限制,即使安装诸如video speed controller这种google chrome插件也没法解决。考虑到平台上有些课程视频既想学,但又嫌播放慢,这里我基于网页代码分析提供一种方法。首先要获取三个参数,分别是elsSign,courseId,scoId,分别代表登录用户的session id,课程名称id,以及具体视频的id。session id可以登录平台后在cookie中找到。

5555.PNG 而courseId可以在我前面抓取的平台课程json文件中得到,scoId可以通过courseId间接得到,地址为http://www.jyjxw.21tb.com/els/html/courseStudyItemcourseStudyItem.loadCourseItemTree.do?courseId=b4cc0cf32745fb617e9b4d79746b5302&courseType=NEW_COURSE_CENTER,会返回包含该课程下所有视频scoId的html代码。得到这三个参数后,就可以通过下列url获取视频的原始地址:http://www.jyjxw.21tb.com/els/html/courseStudyItem/courseStudyItem.selectResource.do?scoId=c9a6bf7ba3a3420f9a6998a9c1844904&courseId=14bbbbd29383c2679933a8f40bb86544&elsSign=elnSessionId.132eb9b0f4c14f239d72d095454c11a1。由于平台服务器要求必须是post请求才返回结果,加上服务器做了跨域限制,只好通过postman工具获取结果,黄色标记的就是视频原始地址,在浏览器中打开会直接提示下载视频,然后就可以用本地播放器播放视频。 postman运用

4.2 时代光华官网课程词频分析

在学习网络平台课程的时候,我感觉课程内容有些陈旧,比如感兴趣的项目管理、数据分析、互联网技术类课程很少。为此,我特意访问了时代光华官网,然后爬了一些官网的课程来做对比。结果如下:

时代光华官网课程 时代光华官网课程词频 可以注意到官网课程高频词中出现了“互联网”、“十九大”等近期热门的词汇,说明官网的课程质量要高一些。当然,官网课程大部分是收费视频,质量肯定要高点了。

5. 结语

由于自己不是课程管理员,数据来源有限,另外自己的数据分析水平还较初级,对课程的数据分析和解读暂时就这么多了。

上一篇下一篇

猜你喜欢

热点阅读