赞
踩
大家好,最近有不少新朋友咨询怎么学Python,从哪找学习资源等等。
由于我个人也是从网易云课程的免费资源入门的,这里就扒一扒了网易云课程的Python课程资源,做简单的处理分析,让大家对这个平台的免费好资源有个了解,然后白嫖起来就好了。
关于免费课程方面,其实有很多都讲的很详细,新人朋友选择某个完整的学习下去基本就能对基础有一定的掌握,然后再进行更深入的学习就行了。
目录:
网易云课堂的课程列表数据爬取比较简单,直接关键字搜索出结果之后在开发者模式找到请求源地址即可,通过接口发现数据起始就是json格式的,处理也比较简单,附完整代码如下:
import pandas as pd import requests from tqdm import tqdm # 请求头 headers = { "Accept-Encoding": "Gzip", # 使用gzip压缩传输数据让访问更快 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36", } # 数据接口地址 url = 'https://study.163.com/p/search/studycourse.json' # 获取数据函数 def getData(page): pageIndex = page relativeOffset = (page-1)*50 Payload = { 'activityId': 0, 'keyword': "python", # python关键字,你也可以改为别的 'orderType': 5, 'pageIndex': pageIndex, 'pageSize': 50, 'priceType': -1, 'qualityType': 0, 'relativeOffset': relativeOffset, 'searchTimeType': -1, } r = requests.post(url, json=Payload, headers=headers) data = r.json() return data # 获取总页数 data = getData(1) pages = data['result']['query']['totlePageCount'] dataList = [] for page in tqdm(range(1, pages+1)): data = getData(page) dataList.extend(data['result']['list']) # 将数据转为dataframe类型 df = pd.DataFrame(dataList) # 只选取自己需要的字段 df = df[['courseId', 'productName', 'description', 'provider', 'score', 'learnerCount', 'lessonCount', 'originalPrice', 'discountPrice', 'discountRate','vipPrice']] df['平台'] = '网易云课堂' # 存储数据到本地 df.to_csv('网易云课堂python课程.csv',index=None)
数据预览:
由于我们在查看原始数据发现存在评分超过5,课程实际为Java或Power bi类的,这里需要进行删除:
# 删除score异常的数据及非python课程
df = df[df['score']<=5]
df = df[~df.productName.str.contains('Java')]
df = df[~df.productName.str.contains('Power')]
另外,我们在后续需要对评分、价格以及学习人数进行分箱操作后做数据可视化,这里也直接进行一次分箱
操作:
# 设置评分区间 bins = [0,2,3,4,4.5,5] df['评分区间'] = pd.cut(df.score,bins) # 计算评分区间分布 score = df.groupby('评分区间')['courseId'].nunique().reset_index() score.评分区间 = score.评分区间.astype('str') # 设置原价区间 bins = [0,10,50,100,200,500,1000] df['原价区间'] = pd.cut(df.originalPrice,bins,right=False) # 计算原价区间分布 price = df.groupby('原价区间')['courseId'].nunique().reset_index() price.原价区间 = price.原价区间.astype('str') # 设置学习人次区间 bins = [0,100,200,500,1000,2000,5000,100000,1000000] df['学习人次区间'] = pd.cut(df.learnerCount,bins,right=False) # 计算学习人次区间分布 learner = df.groupby('学习人次区间')['courseId'].nunique().reset_index() learner.学习人次区间 = learner.学习人次区间.astype('str') # 计算各培训机构python课程数 provider = df.groupby('provider')['courseId'].nunique().reset_index()
由于评分最高的一批课程以及学习人数最多的课程都是免费的,所以这里就直接简单做排序处理就好了。
评分最高的课程都是满分5分,学习人数超过20万的免费课程《免费Python全系列教程全栈工程师
》真的超级推荐,不仅包含了python基础,还包含了GUI库Tkinter、爬虫、Django等内容共128课时。
评分最高且学习人数最多的前10课程:
score10 = df.sort_values(['score','learnerCount'],ascending=False).head(10)
score10[['productName','provider','score','learnerCount','lessonCount']].reset_index(drop=True)
有兴趣的同学可以都看看,根据自己的需求,免费的好资源,白嫖起来!
在学习人数最多的课程中,python基础
、python爬虫
和python-web
开发居多,大家依旧是可以根据自己的需求,有选择的进行学习。
learnerCount10 = df.sort_values(['learnerCount','score'],ascending=False).head(10)
learnerCount10[['productName','provider','score','learnerCount','lessonCount','originalPrice']].reset_index(drop=True)
绘图展示:
绘图代码:
from pyecharts import options as opts from pyecharts.charts import Bar x_data = learnerCount10.productName.to_list() y_data = learnerCount10.learnerCount.to_list() bar = (Bar(init_opts=opts.InitOpts(theme="light", width='800px', height='490px', )) .add_xaxis(x_data) .add_yaxis('', y_data) .set_global_opts( xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)), title_opts=opts.TitleOpts(title="网易云课堂Python课程学习人数最高的前10课程", subtitle="绘图:可以叫我才哥"), ) ) bar.render_notebook()
我们通过关键字过滤课程,看看都有哪些关于数据分析、可视化及pandas的免费课程资源
数据分析主题课程
data = df[df['productName'].str.contains('数据分析')]
learnerCount10 = data.sort_values(['learnerCount','score'],ascending=False).head(10)
learnerCount10[['productName','provider','score','learnerCount','lessonCount','originalPrice']].reset_index(drop=True)
大家就找originalPrice = 0
且 score
高的就可以看看了。
可视化主题课程
data = df[df['productName'].str.contains('可视化')]
learnerCount10 = data.sort_values(['learnerCount','score'],ascending=False).head(10)
learnerCount10[['productName','provider','score','learnerCount','lessonCount','originalPrice']].reset_index(drop=True)
pandas主题课程
data = df[df['productName'].str.contains('pandas')]
learnerCount10 = data.sort_values(['learnerCount','score'],ascending=False).head(10)
learnerCount10[['productName','provider','score','learnerCount','lessonCount','originalPrice']].reset_index(drop=True)
网易云课堂一共有1,544种python关键字课程,其中有400门是免费课程,占比达到25.91%超过1/4。在网易云课堂发布课程的机构有491家,其中最多的发了59门课程。
可以看到,网易云课程中,超过3/4大部分课程的评分在4-4.5分之间,超高分的4.5以上也有接近20%,整体来说还是可以的。
绘图代码:
from pyecharts.charts import Pie # 富文本 rich_text = { "a": {"color": "#999", "lineHeight": 22, "align": "center"}, "b": {"fontSize": 12, "lineHeight": 33}, "per": { "color": "#eee", "backgroundColor": "#334455", "padding": [2, 4], "borderRadius": 2, }, } cate = score.评分区间.to_list() data = score.courseId.to_list() pie = (Pie(init_opts=opts.InitOpts(theme='light', width='700px', height='490px', )) .add('', [list(z) for z in zip(cate, data)], radius=180, #设置饼图半径 label_opts=opts.LabelOpts(position='outsiede', formatter="{b|{b}: }{c} {per|{d}%} ", rich=rich_text)) .set_global_opts(legend_opts=opts.LegendOpts(is_show=False), title_opts=opts.TitleOpts(title="网易云课堂python课程评分区间分布", subtitle='制图:可以叫我才哥'),) ) pie.render_notebook()
在1544门课程中,有400门免费课程,1144门付费课程。在付费课程中大部分其实在100元以内,其中10元以内 139门占比12.18%,1000元以上42门占比3.68%。
其实,有67.6%的大部分课程学习人次都较少低于100,差不多就是那些知名度低或者价格高的课程吧。另外,还有4门课的学习人次超过了10万次,这部分就是上面提到的python基础免费课程。
对于python课程,大家都喜欢起什么名字呢,以python为核心关键字之外,常见的关键字还有基础
、入门
、爬虫
、开发
、编程
、实战
等等。
我们可以看到,爬虫 作为特殊关键词的存在,一定程度上表明了这类型可能很受python学习者的青睐!
在课程描述中,依旧是以Python为核心关键字,此外课程
、数据
、开发
、学习
、基础
、讲解
、介绍
、数据分析
和项目
等字眼也频繁被用到。
以上就是本次全部内容,关于爬虫源码、课程数据文件、数据处理及可视化过程代码大家可以回复0411领取。
现在其实各种在线教育平台提供了很多不错的免费课程资源,不需要被眼花缭乱而不知所选,其实挑选某个比较全面的课程,然后按照课时顺序学完就够了
。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。