这篇文章是将要分析网易云课堂里的数据,分析时下学习的热点。

工具准备:

Chrome游览器,

python3.6 (包含requests,jieba库)

首先打开全部课程 - 网易云课堂,登陆之后打开chrome开发者工具,经过分析发现,云课堂里的数据是直接通过ajax获取,于是直接复制cookie模拟发送包,跳过登陆模拟。

截图显示了这个json数据的结构

import requests

import json

header = {

'Accept':'application/json',

'Accept-Encoding':'gzip, deflate',

'Accept-Language':'zh-CN,zh;q=0.8,en;q=0.6',

'Cache-Control':'no-cache',

'Connection':'keep-alive',

'Content-Length':'120',

'Content-Type':'application/json',

'Cookie':'', #input your cookie

'edu-script-token':'', #input your token

'Host':'study.163.com',

'Origin':'http://study.163.com',

'Pragma':'no-cache',

'Referer':'http://study.163.com/courses',

'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36',

}

payload= {

"pageIndex":'1',

"pageSize":'50',

"relativeOffset":'100',

"frontCategoryId":'-1',

"searchTimeType":'-1',

"orderType":'0',

"priceType":'-1'

}

由于这个request是个 Request Payload 而不是 Form Data,因而header里需要申明为json,以及一会儿发送时要将payload转换成json数据。

data_list = []

count=0

for i in range(60):

ret = requests.post("http://study.163.com/p/search/studycourse.json", data=json.dumps(payload), headers=header)

payload["pageIndex"] = int(payload["pageIndex"])+1

temp_dic = ret.json()

if temp_dic["message"]!="ok":

print("error "+temp_dic["message"])

#data_list.append(temp_dic["result"]['list'])

for item in temp_dic["result"]['list']:

count +=1

data_list.append(item)

print(i+1,"/60")

print(count)

file_name='opencourse.json'

with open(file_name,'w') as file_object:

json.dump(data_list,file_object)

根据云课堂自己的数据,正好是3000条数据,然后将这3000条数据先保存。

接下来先对标题和介绍进行简单的分词,使用jieba库里的cut() method。 基本原理是用统计 构造Trie树做词典,然后构造DAG,使用动态规划找出最大概率组合。对于词典里没有的词,使用HMM进行划分。代码如下:

import jieba

word_count={}

for item in data_list:

temp_analyse = jieba.cut(item["productName"])

for temp in temp_analyse:

if word_count.get(temp) == None:

word_count[temp] = 1

else:

word_count[temp] = int(word_count[temp]) + 1

temp_analyse = jieba.cut(item["description"])

for temp in temp_analyse:

if word_count.get(temp) == None:

word_count[temp] = 1

else:

word_count[temp] = int(word_count[temp]) + 1

对词典排序后,出现次数最多的50个词 结果如下

sorted(word_count.items(),key=lambda item:item[1],reverse=True)

x[0:50]

Out[25]:

[(',', 21836),

('\n', 19297),

('的', 18876),

(' ', 15846),

('、', 9085),

('。', 8531),

('-', 6916),

('课程', 5677),

(':', 5130),

('.', 4165),

('你', 3218),

('/', 2830),

('学习', 2825),

('是', 2796),

('和', 2730),

('!', 2371),

(')', 2370),

('(', 2268),

('\r\n', 2268),

('在', 2149),

('—', 1967),

('了', 1711),

('本', 1690),

('与', 1633),

('】', 1547),

('【', 1537),

('《', 1521),

('》', 1521),

('?', 1449),

('基础', 1427),

('中', 1382),

('1', 1376),

('为', 1270),

('有', 1260),

('2', 1243),

('“', 1233),

('”', 1218),

(';', 1166),

('如何', 1128),

('可以', 1121),

('让', 1082),

('我们', 1061),

('3', 1042),

(':', 1034),

('教程', 1009),

('更', 1005),

('等', 999),

('设计', 981),

('讲解', 975),

('视频', 969)]

可见单纯的分词并不能满足我们的需求,于是我们采用下TD-IDF和textrank算法直接获取关键词。代码如下:

import jieba.analyse

word_count={}

for item in data_list:

temp_analyse = jieba.analyse.extract_tags(item["productName"])

for temp in temp_analyse:

if word_count.get(temp) == None:

word_count[temp] = 1

else:

word_count[temp] = int(word_count[temp]) + 1

temp_analyse = jieba.analyse.extract_tags(item["description"])

for temp in temp_analyse:

if word_count.get(temp) == None:

word_count[temp] = 1

else:

word_count[temp] = int(word_count[temp]) + 1

出现次数最多的40个词 结果如下:

[('课程', 1725),

('学习', 717),

('教程', 535),

('基础', 471),

('讲解', 422),

('入门', 389),

('视频', 372),

('http', 369),

('com', 351),

('技巧', 304),

('微信', 290),

('实战', 283),

('制作', 260),

('老师', 258),

('QQ', 248),

('设计', 247),

('如何', 240),

('开发', 218),

('学员', 214),

('掌握', 213),

('study', 211),

('案例', 201),

('163', 201),

('PPT', 199),

('课堂', 197),

('10', 190),

('更新', 184),

('英语', 179),

('知识点', 179),

('职场', 178),

('视频教程', 177),

('轻松', 176),

('Excel', 163),

('PS', 162),

('软件', 158),

('系列', 156),

('快速', 155),

('管理', 151),

('考试', 142),

('数据', 142),

('教学', 139),

('htm', 138),

('大家', 138),

('免费', 137),

('知识', 136),

('课程内容', 134),

('使用', 132),

('课时', 129),

('方法', 128),

('www', 127)]

由于textrank的代码和之前的代码重复度太高,直接研究jieba库就行了,结果和TD-IDF也差不多。

就从结果来看,单纯的TD-IDF和textrank算法不能满足我们的需求。因为‘课程’ ‘学习’的IDF值高,相对于助词来说,被认为是关键词,加之出现频率高,所以出现在第一第二名,但是我们更希望得到的是‘Excel’ ‘PS’这样的具体的关键词,得到当下学习的热点。

下一节会用余弦定理和层次聚类来处理这些数据。

python数据分析师网易云课堂_网易云课堂 数据分析(一)相关推荐

  1. python 数据分析师前景及待遇_数据分析师的前景怎么样?

    从20世纪90年代起,欧美国家开始大量培养数据分析师,直至现在对数据分析师的需求仍然长盛不衰而且还有扩展之势.根据美国劳工部预测,到2020年,数据分析师的需求量将增长20%.就算你不是数据分析师,但 ...

  2. 深夜,学妹说她想做Python数据分析师

    大家好,我是大鹏,目前是一名数据分析师. 上周末晚上,我的学妹突然约我出来喝咖啡.想起学妹在学校就一直说想转行,最近在网上捣鼓自学数据分析软件有一小段时间了.我想她不是为了叙旧. 果然来到咖啡店,她一 ...

  3. 上海python工资一般多少-python数据分析师待遇有多少?工资待遇如何?

    随着大数据时代的到来,企业对数据价值的重视,python数据分析师的市场越来越大,毫无疑问python数据分析师已成为"当今最具发展潜力的职业",吸引了无数像小编这样的热血青年,在 ...

  4. python的薪资待遇-python数据分析师待遇有多少?工资待遇如何?

    随着大数据时代的到来,企业对数据价值的重视,python数据分析师的市场越来越大,毫无疑问python数据分析师已成为"当今最具发展潜力的职业",吸引了无数像小编这样的热血青年,在 ...

  5. 买《Python数据分析师:从0基础到数据分析达人》专题视频课程送纸质图书

    <Python从小白到大牛>纸质图书于2018年10月上市,为了答谢广大学员对智捷课堂以及关老师的支持,现购买51CTO学院([Python数据分析师:从0基础到数据分析达人](https ...

  6. python的工资待遇-python数据分析师待遇有多少?工资待遇如何?

    随着大数据时代的到来,企业对数据价值的重视,python数据分析师的市场越来越大,毫无疑问python数据分析师已成为"当今最具发展潜力的职业",吸引了无数像小编这样的热血青年,在 ...

  7. python 数据分析学什么-python数据分析师要学什么

    数据分析师 是数据师Datician['detɪʃən]的一种,指的是不同行业中,专门从事行业数据搜集.整理.分析,并依据数据做出行业研究.评估和预测的专业人员. 1.数学知识(推荐学习:Python ...

  8. 成都python数据分析师培训_python数据分析师

    企业想要在竞争激烈的市场中胜出,决策的速度和反应的效率尤为重要.根据调查显示,75%的企业在面临拟定策略时,常常无法获得实时且有根据的决策信息.什么样的数据.要透过什么样的方法,才能且实时的转变成决策 ...

  9. 【Python 实战基础】如何绘制树状图展示Python数据分析师的知识结构

    目录 一.实战场景 二.主要知识点 文件读写 基础语法 字符串处理 文件生成 数据构建 三.菜鸟实战 1.创建 python 文件 2.运行结果 一.实战场景 实战场景:如何绘制树状图展示Python ...

  10. python数据分析师下载_2020云开见明Python数据分析师特训营,全套课程资源下载...

    课程名称 Python数据分析师特训营(python数据分析从入门到精通) 课程预期目标: 01熟练撞我python语法和常用数据结构 02熟练掌握数据分析相关库的运用 03岁数据分析相关流程和常用方 ...

最新文章

  1. K12,再好的愿景遇到商业都会慢慢失去真正的目标
  2. creo 3.0计算机配置,Creo 3.0 Parametric 配置选项文件使用说明
  3. 从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件
  4. POJ2299 树状数组求逆序对
  5. JZOJ 3648. 【GDOI2014】beyond
  6. ASP——判断数据库NULL值
  7. 结构型模式—外观模式
  8. Ubuntu中打开.ipynb文件
  9. 在CSS中clear属性的妙用
  10. 【java笔记】打印流printStream
  11. oracle取字段第三位字符,oracle截取字符串(截取某个字符前面的字符串)
  12. installshield中用release wizard打包.net framework 1.1中文版
  13. 快速突破面试算法之数组与矩阵篇
  14. 【模糊神经网络】基于matlab的模糊神经网络仿真
  15. 2021FME博客大赛 —— 利用FME实现三调地类图斑统计分析
  16. ubuntu20.04下rabbitvcs使用svn无法保存密码
  17. Moviebooking电影售票系统--用例建模
  18. flog和flag,FLAG标签和3xFLAG标签的序列
  19. [转载]Eclipse开发工具简介
  20. 【转】excel文件格式分析

热门文章

  1. vmware station密钥
  2. Java分页详细步骤
  3. python实现的好玩的小程序--利用wxpy实现的微信可检测僵尸粉机器人
  4. otf字体转ttf字体
  5. 菜鸟教程Python100例-笔记
  6. c#语言猜数字游戏,C#实现猜数字小游戏
  7. JxBrowser使用心得和带中文翻译的文档分享
  8. java rce漏洞原理_JXBrowser JavaScript-Java bridge 中的RCE漏洞
  9. 管道读写报错121:信号灯超时时间已到
  10. filenet java配置_连接到filenet的外部java应用程序服务器