python astype category_python数据分析实例:python抓取课工厂网站数据和分析

news/2024/5/16 12:21:58/文章来源:https://blog.csdn.net/weixin_39666931/article/details/110533057

39264aeaabf8f129efdbd832a30e7689.png

在线教育网站学习,是很多人利于闲余时间进行充电的一种选择。本篇文章利用python抓取在线教育网站课工场课程页面的数据,进行简要分析。

通过使用requests库对课工场课程列表页进行抓取。

通过BeautifulSoup对课工场课程列表页面进行解析,并从中获课程名称,课程类型,付费类型,课程学习人次的数据。

最后再利用python的pandas,matplotlib,seaborn模块对数据进行处理和分析。

0,工作环境搭建

环境:win10+Anaconda +jupyter Notebook

模块:

爬虫和网页解析相关的模块:requests,BeautifulSoup,time

数据分析模块:Numpy,pandas

画图模块:matplotlib,seaborn

1,构建爬虫,抓取需要的信息

构造爬虫是需要注意

  • 开始抓取前先观察下目标页面或网站的结构,其中比较重要的是URL的结构
  • 在抓取网页时,为了尽量伪装成正常的请求,我们需要在http请求中设置一个头部信息,否则很容易被封。头部信息网上有很多现成的。并手动设置每次请求的时间间隔。

A,构造爬虫

import requests,time
from bs4 import BeautifulSoupurl = 'http://www.kgc.cn/list/230-'+str(i)+'-6-9-9-0.shtml'
headers={
'Accept':'application/json, text/javascript, */*; q=0.01',
'Accept-Encoding':'gzip, deflate, br',
'Accept-Language':'zh-CN,zh;q=0.8',
'Connection':'keep-alive',
'Referer':'http://www.baidu.com/link?url=_andhfsjjjKRgEWkj7i9cFmYYGsisrnm2A-TN3XZDQXxvGsM9k9ZZSnikW2Yds4s&wd=&eqid=c3435a7d00006bd600000003582bfd1f'
}for i in range(1,64):if i==1:url = 'http://www.kgc.cn/list/230-'+str(i)+'-6-9-9-0.shtml'r = requests.get(url=url,headers=headers)html = r.textelse:url = 'http://www.kgc.cn/list/230-'+str(i)+'-6-9-9-0.shtml'r = requests.get(url=url,headers=headers)html2 = r.texthtml = html + html2time.sleep(0.8)

B,解析页面,提取信息

kgc = BeautifulSoup(html,"html.parser")# 提取课程名称
name= kgc.find_all("a",attrs={"class":"yui3-u course-title-a"})c_name = []
for n in name:course_name = n.string.split()[0]c_name.append(course_name)#提取课程参加人数
number = kgc.find_all("span",attrs={"class":"course-pepo"})p_number=[]
for p in number:people_number = p.stringp_number.append(people_number)#提取付费信息
price = kgc.find_all(class_=['view0-price f16','view0-old f14'])p_type = []
for p in price:price_type = p.stringp_type.append(price_type)#提取课程类别
category = kgc.find_all(class_="yui3-u course-title-a")c_category = []for c in category:soup=BeautifulSoup(str(c),"html.parser")tag = soup.ahref = tag.attrs['href']c_category.append(href)

C,写入pandas数据框中

import pandas as pdcourse = pd.DataFrame({"course_name":c_name,"student_number":p_number,"pay_type":p_type,"course_info":c_category})#检查下数据集构造的情况
course.head(10)

845f8ce69b43ff537fd8d7425f9618f0.png

虽然我们已经把提取的信息构造为DataFarme结构的数据,但明显能看到,这个数据集有些粗糙。所以我们还需要,对数据集进行进一步的处理。

2,数据处理(特征构造)

数据处理的内容主要是对数据集进行数据清洗和加工。

数据处理的的目的是为了让数据集变得更利于下一步分析。

#从course_info字段中提取课程类别信息
course["category"] = course["course_info"].apply(lambda x:x.split("/")[1].strip())#从course_pay字段中提取付费信息
import re
def get_num(string):return (re.findall("d+.?d*",string))[0]
course["course_pay"] = course["pay_type"].apply(get_num).astype(float)#将“pay_type”字段中的“免费”替换为“0.00”
course.replace({'pay_type': {'免费': '¥0.00', }}, inplace=True)#数据类型转换
course['student_number'] = course['student_number'].astype(float)import matplotlib.pyplot as plt
plt.style.use("ggplot")
plt.rc('font',family='STXihei')
import missingno as msno
import seaborn as sns
sns.set()%matplotlib inline
%config InlineBackend.figure_format="retina"#缺失值检查
msno.matrix(course,figsize=(12,5))

8e63b20771fd31a3bc83b97d4d4acfda.png

3,数据分析(数据探索和可视化)

探索性数据分析(Exploratory Data Analysis,简称EDA)目的是最大化对数据的直觉,完成这个事情的方法只能是结合统计学的图形以各种形式展现出来。通常涉及以下几种方法的组合:

  • 原始数据集中每个字段的单变量可视化和汇总统计
  • 数据集中每个自变量与目标变量之间的关系的双变量可视化和汇总统计
  • 多元可视化以了解数据中不同字段之间的交互作用
  • 让观察值聚类成有区别的小组

这里对处理后的数据简要的探索性分析。

A.学习人次以及付费人次

作为在线教育产品,知道有多少人次在学习课程,有多少人次学习付费课程,有多少人次是学习免费课程,是必须要关注的数据。

course.student_number.sum()
#输出:11611136.0no_pay = course.loc[course["course_pay"] == 0].student_number.sum()
#输出:3519971.0paid = course.loc[course["course_pay"] != 0].student_number.sum()
#输出:8091165.0

付费学习与免费学习两种类型占比

plt.rc('font', family='STXihei', size=20) 
plt.figure(figsize= (12,8))#创建画布
plt.pie([no_pay, paid],labels=['No Pay','Paid'],autopct='%1.0f%%')
plt.title('Paid rate') 
plt.axis("equal")

8f26316c877ea16a05d7ca13400662e8.png

从数据中看出,该网站的课程,达到1100万学习人次,付费人次达到800多万,占比70%。

B,课程价格分布

course.course_pay.describe()#输出
count    1557.000000
mean       17.608863
std        17.697668
min         0.000000
25%         0.000000
50%        19.000000
75%        29.000000
max       299.000000
Name: course_pay, dtype: float64

价格分布直方图

course.course_pay.hist(bins=20)

c6b25ab854287e8072bcaeb10e519323.png

课程价格多集中在20—30元左右,付费课程的平均价格是17元人民币,按照800万的付费人次计算,目前为止,课程销售额不低于1.36亿人民币。

insight:

在千万级学习人次中,付费学习人次达到800多万,占比70%,课程销售额不低于1.36亿人民币。很厉害的转化。

作为北大青鸟旗下的在线教育平台,除了依托北大青鸟自身的流量扶持。应该还在有流量引入能力的垂直领域类容分发平台,进行卡位。

经过验证发现,课工场,在国内比较有知名度的在线课程内容分发平台如百度传课,网易云课堂,腾讯课堂都进行了内容分发和卡位。但在淘宝同学上,却没有找到课工场。

而且在知乎这个知识社区分享平台中搜“课工场”品牌名称时,却没有关于它的内容,不知道为什么课工场在各个在线课程内容分发平台都进行了卡位,却在知乎上没有行动。我觉得在这样的知识分享社区,无论是从社区氛围,还是从知乎社区用户的角度看,最有利的广告主就是做在线教育的,尤其是做IT培训在线教育的。

C,课程类型分布

plt.rc('font', family='STXihei', size=15) 
plt.figure(figsize= (12,8))#创建画布
sns.countplot(y='category', data=course)
plt.title('Course_category Count' )

668d827baeaca74df532a4af7ec058ec.png

网站中课程类型,多是偏向于编程技术如Java,handoop,android,linux

再来看看,用户参喜欢学习的课程多是哪些类型?

D,用户参与学习课程类型分布

plt.rc('font', family='STXihei', size=15) 
plt.figure(figsize= (12,8))#创建画布
sns.barplot(data=course,x="student_number",y="category",ci=None)

c27eea6675bab20cb0a3ecdcf42a57f5.png

位于前三的是Dotnet,office_software,personal_management,除了编程技术之外,职场办公,个人管理的课程也是很受欢迎的。但网站中关于office_software,personal_management的课程太少。

insight

上面的数据表现,说明网站用户中除了技术岗位的学习群体,还有不少是普通岗位(非技术向)的。在下一步的内容运营中,应该有意识的增加职场办公,个人管理这两个方向上的课程。

网站推广中增加对普通职场(非技术向)群体的覆盖。如果是选择某类型的单品课程,针对这类群体推广,应该把选择方向上锚定在这两个方向上职场办公,个人管理类型的课程。

E,课程价格种类分布

course.course_pay.value_counts().plot(kind="bar",figsize=(12,8))

02327ce5b9389d845a7bfd5fff8146bc.png

可以看到,付费课程的价格主要集中在9,19,29 ,这三个类别。

insight:

在上一步的分析中,可以看到,在参与学习人数最多的课程中,有两类课程:职场办公,个人管理

根这两个方向的课程学习人数,我们也或可推断,网站用户,多集中在职场白领群体,这部分群体是有较高的付费能力和购买能力的。

对于职场白领群体,课程的价格多不超过30元,是太过偏低的,还有可提升的空间。

当然,因为课程定价跟课程质量,数量,和学习时间周期都是相关的,所以定价也需要考虑这些因素。因为所得数据有限,这样的思考是基于这份数据而进行的假设,实际情况仍需要去通过更多的数据信息进行交叉验证。

再来看看在付费课程类型中,购买人数最多的课程是哪些。

F,付费课程类型中,平均购买人数最多的课程

course.loc[course["course_pay"] != 0]/
.groupby(["category","course_pay"])[["student_number"]].mean()/
.sort_values(by="student_number",ascending=False)

c31e390909e4fcf52fe3498a198d7b3a.png

可以看到,平均购买人数最多的课程多是偏于编程技术的,其中java 位居首位,其次是H5,

然后是AR。

在平均购买人数最多的课程中,属于前端开发的课程占据了3门:angularjs,vuejs,html5,这也说明web开发,的确很火热。

但却没有看到,这两年火热程度,一直以火箭速度蹿升的python的身影。

G,免费课程中,平均参与学习人数最多的课程

course.loc[course["course_pay"] == 0]./
groupby(["category","course_pay"])[["student_number"]].mean()./
sort_values(by="student_number",ascending=False)

f1041ee78201c3042b0ddbb1661042c2.png

在免费课程中,参与学习人数最多的是个人管理的课程,排名前3的课程中,有2门课程是关于职场办公通用技能提升的课程:个人管理,office办公软件。

insight:

在后续的付费课程中,可以针对个人管理,office办公软件的方向上,出一些收费精品课程,

尝试对非编程技术学习群体进行商业付费的转化。

总结:

与应用相结合,让数据产生商业价值,永远是数据生命的所在,也是数据驱动业务优化的价值所在。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_809366.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何防止通过url攻击_什么是CC攻击,如何防止网站被CC攻击的方法总汇

CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,也是一种常见的网站攻击方法,攻击者通过代理服务器或者肉鸡向向受害主机不停地发大量数据包,造成对方服务器资源耗尽,一直…

如何评定一个搜索引擎的好和坏_如何判断一个网站SEO优化的好坏

在对网站seo优化时通常要分析竞争对手,那如何判断一个网站SEO优化的好坏呢?以下列出的就是判断一个网站SEO优化好坏的标准,通过这些能看出这个网站SEO优化的质量。1、关键词与网站的内容是否息息相关?2、关键词是否是搜索引擎查询中常用的词…

Domolo SEOHelper 多么乐SEO工具:璀璨登场

Domolo SEOHelper 多么乐SEO工具:璀璨登场 六大功能:1、PageRank 批量查询 , 现在的工具只能查一个网页,没有批量查询,现在您可以批量查询了;2、网站 keywords , description , title 收割机, …

干货 | 如何搭建小型视频点播网站

视频点播是二十世纪90年代在国外发展起来的,英文称为“Video on Demand”,所以也称为“VOD”。顾名思义,就是根据观众的要求播放节目的视频点播系统,把用户所点击或选择的视频内容,传输给所请求的用户。视频点播业务是…

干货 | 云解析DNS之网站监控

云解析是在域名解析的基础上,由京东云团队,结合京东云的优质网络、主机资源研发的高可用、高可靠、功能丰富的权威DNS服务器。云解析拥有简单易用的控制台,方便用户对域名进行操作。采用多集群、多节点部署,拥有百G防护套餐&#…

干货 | 使用京东云搭建视频直播网站

视频直播是指利用互联网及流媒体技术进行直播,视频因融合了图像、文字、声音等丰富元素,声形并茂,效果极佳,逐渐成为互联网的主流表达方式。视频通过真实、生动的传播,营造出强烈的现场感,吸引眼球&#xf…

基于SEO的Log 日志分析软件应该提供那些功能?

基于SEO的Log 日志分析软件应该提供那些功能? 今天是连续第3个要过了12点才睡的日子了,希望今天可以告一个段落.最近在考虑如何做基于 SEO 的日志分析工具, 每天都熬夜, 还真吃不消啊.当用户在浏览器地址栏输入一个网址的时候,web服务器在返回用户需要…

云原生网站威胁扫描系统

随着企业上云的业务需求,扫描业务需求和使用场景也发生了变化,网站威胁扫描产品逐步受到云上租户的青睐,特别是云原生的网站威胁扫描系统。网站威胁扫描系统可以广泛用于以下业务场景: 云上业务系统上线或者重要活动保障&#xf…

搜索引擎SEO外挂:一边搜索,一边看PageRank

搜索引擎SEO外挂:一边搜索,一边看PageRank 下载地址:多么乐站长工具 我原来曾写过一篇统计分析搜索引擎排名和Page Rank 关联分析 的文章。很多人引用,回复和我讨论了我的结论。有赞成的,有反对的,有鼓励…

网站挂 Google 广告能赚多少钱?

首先申明 Google 广告价格的算法是保密的。Google 广告价格和多种因素有关。比如:访客的地理位置、访问的时间、是否为广告主带来效益、您网站的内容等等。Google 广告的价格是国内广告的几倍甚至几十倍,在当前国内广告非常不好做的情况下,Go…

亿速云服务器负载设置,如何让网站访问更快 亿速云服务器新一代云负载均衡...

在以前,企业如果要使用传统负载均衡服务,往往需要专门购买硬件。这样的话会带来很多问题,比如价格高昂、部署周期长、运维门槛高而且服务器连接数有限。针对这个问题,亿速云推出了新一代云原生负载均衡,天然拥有即开即…

大多数日志文件的后缀名是_网站日志相关问答整理分享

1、网站刚上线,怎么看搜索引擎蜘蛛的抓取情况?如果站点提交给搜索引擎2天后,发现日志中有很多蜘蛛,并且全部返回到200,则说明它可以正常收录。谷歌显示时间更快,百度需要20天左右才能显示出来。2、日志分析…

SEO 比比看: Che168.com VS pcauto.com.cn

SEO 比比看: Che168.com VS pcauto.com.cn 做SEO工作,平常少不了多观察各种网站优化的案例。俗话说的好,懂行的看门道,不懂的看热闹。面对五花八门的网站,如何才能从专家的角度,以最快的速度来了解被观察网…

seo优化:把百度放进数据库

seo优化:把百度放进数据库 有时候我想,能把百度的数据放进数据库,用广大程序员熟悉的sql语句查询百度的搜索结果应该是一个不错的主意。在这方面Google早已经跨出了一大步,利用Google Search API 把Google的搜索结果放进数据库是很容易办到得…

奥运票务网站——话题仍在继续(软件设计的前期评估)

今天忽然发现自己的关于奥运票务网站故障的文章,竟然排到了首位:当然,这并不是炫耀,因为前四名全部是关于奥运票务网站的文章。这充分体现了大家对奥运的关注,而作为一名技术人员对出现这种“国际性”的问题&#xff0…

5菜鸟教程_5个相见恨晚的自学网站,每天自学半小时,月入过万不用愁!

很多人在空闲的时候,都想学点东西提升自己,增值一下自己,而一些学习网站也就是大家的选择了,今天小编给大家带来了5个能自我提升的学习网站,每个都是精品,有需要的朋友就快点收起来吧!一、我要自…

写了一个建站系统DMAKE,自觉在某些情况下和FastAdmin有的一拼,你觉得呢?

DMAKE轻量级PHP平台建站系统(板砖博客)是基于Thinkphp5前后端分离的理念开发而来,经过门户网站、微信公众平台、资讯网站、资源网站和企业站群等多种运营模式和建站模式产品化,方便更多的个人站长和企业能够快速建立互联网品牌。 …

FLEX应用展示之PS体育项目网站

FLEX应用展示之PS体育项目网站 这是又一个体育竞技的网站,而且这个是更加规范的网站,从这个站点上,体育迷们能够看到自己喜欢的队伍,比赛的时间安排,各个队员的情况。 网站还提供了注册加盟的方式。这个正规的体育商…

Goo3D 3d图片制作网站

Goo3D 3d图片制作网站 这是一个很酷的概念至少看上去很酷,通过三个侧面的图片就可以合成一个3维的物体,不知道这个网站具体做的怎么样 但是忍不住告诉大家,大家或者一起用一下,交流交流 贴一张图片

一步步构建大型网站架构

2013-05-28 11:08 6976人阅读 评论(32) 收藏 举报 之前我简单向大家介绍了各个知名大型网站的架构,亿万用户网站MySpace的成功秘密、Flickr架构、YouTube网站架构、PlentyOfFish 网站架构学习、WikiPedia技术架构学习笔记。这几个都很典型,我们可以从中获…