美文网首页
虎嗅网 5 万篇文章数据分析

虎嗅网 5 万篇文章数据分析

作者: 双子座玩家 | 来源:发表于2019-07-21 16:47 被阅读0次

最近一段时间一直在学习 Python 爬虫、数据分析和数据可视化,想通过一个项目对这些知识做一下整体的运用和总结,所以参考了网络上文章上几篇文章的思路通过数据抓取、数据清洗、数据分析、数据可视化一整个数据分析的流程简单地完成了这篇分析文。

为什么选择虎嗅网进行分析呢?

主要是因为虎嗅网创办于2012年5月,根据下面的分析我们可以知道网站发布第一篇文章的时间是在2012年4月3号。它是一个聚合优质创新信息与人群的新媒体平台,这个平台专注于贡献原创、深度、犀利优质的商业资讯、围绕创新创业的观点剖析与交流。经过这几年的发展,个人认为虎嗅上面还是积累了不少的好文章,所以这次打算去一探究竟。

1、数据抓取

通过 Python 的 pyspider 框架对虎嗅网进行抓取,pyspider 是一个可视化界面,可以看到爬虫运行的整个过程和具体进度。


pyspider web界面

爬虫最终的数据是保存在数据库 MongoDB 中,也可以再把数据输出为 csv 格式。


部分数据截图
image

可以看到这里抓取了虎嗅网的主页文章,文章抓取时间为 2012 年开始至 2019 年 6 月 22 日,共计有 5 万多篇文章。抓取了 7 个字段信息:摘要、评论数、收藏数、作者名、文章标题、文章链接和发文时间。

2、数据清洗

获取数据之后首先看一下数据的总体情况,一般要对数据进行整理,删除不需要的字段,增加一些我们分析需要的字段。

 data.shape    #查看行数和列数
 data.info()    #查看总体情况
 data.head() #输出前5行
#结果:
(53690, 8)
Data columns (total 8 columns):
_id           53690 non-null object
abstract      53690 non-null object
comment       53690 non-null int64
favorites     53690 non-null int64
name          53690 non-null object
title         53690 non-null object
url           53690 non-null object
write_time    53690 non-null object
dtypes: int64(2), object(6)
0   ObjectId(5d0efdd2b958a70fb81f6635)  你看到的结果,很可能是“假结果”    6   133 人神共奋    为什么“总结经验”反而把你带进沟里?  https://www.huxiu.com/article/304652.html   4天前
1   ObjectId(5d0efdd2b958a70fb81f6636)  守住财富,要付出10倍于创造财富所需的才智   8   162 孤独大脑    一生只用富一次 https://www.huxiu.com/article/304649.html   4天前
2   ObjectId(5d0efdd2b958a70fb81f6637)  即使B站审核组为平台付出了太多,但在用户眼中依旧是恶人 20  28  动漫经济学   B站番剧自查的第19天 https://www.huxiu.com/article/304648.html   4天前
3   ObjectId(5d0efdd2b958a70fb81f6638)  真正的货币战争才刚刚开始    5   28  量子学派?   Facebook的“野心”?  https://www.huxiu.com/article/304642.html   4天前
4   ObjectId(5d0efdd2b958a70fb81f6639)  原创 社区团购未来会呈现出四种发展趋势,行业进入洗牌期。    12  101 吴倩男 社区团购周年考:唯一能赚钱的生鲜电商模式?   https://www.huxiu.com/article/304641.html   4天前

可以看到数据是 53690 行 × 8 列,其中有一列没有用的 _id 需要删除,因为 write_time 列的数据格式是 object,需要把它变为日期格式,为了方便分析,把发布时间为几个小时前或者几天前的文章全部改为爬取数据的当前 2019 年 6 月 22 日。

#删除无用_id列
data.drop(['_id'],axis=1,inplace=True)

# 更该日期格式
data['write_time'] = data['write_time'].replace('.*前','2019-06-22',regex=True) 

data['write_time'] = pd.to_datetime(data['write_time'])

下一步是需要查看数据有没有重复值,如果存在重复值的话,需要把重复的行删除。

# 判断整行是否有重复值
print(any(data.duplicated()))
# 显示True,表明有重复值,进一步提取出重复值数量
data_duplicated = data.duplicated().value_counts()
# 结果显示有 720 重复值
print(data_duplicated) 
#结果:
True
False    52970
True       720

# 删除重复值
data = data.drop_duplicates(keep='first')
# 删除部分行后,index中断,需重新设置index
data = data.reset_index(drop=True)

接下来为了之后分析的需要,我们增加两列字段,一列是文章标题长度列,一列是年份列。

data['title_length'] = data['title'].apply(len)
data['year'] = data['write_time'].dt.year

然后再看一下处理后的数据的整体情况,基本完成了整个数据清理的过程。

Data columns (total 9 columns):
abstract        52970 non-null object
comment         52970 non-null int64
favorites       52970 non-null int64
name            52970 non-null object
title           52970 non-null object
url             52970 non-null object
write_time      52970 non-null datetime64[ns]
title_length    52970 non-null int64
year            52970 non-null int64
dtypes: datetime64[ns](1), int64(4), object(4)
3、数据分析

首先对数值型数据进行描述型数据分析:

print(data.describe())

            comment     favorites  title_length          year
count  52970.000000  52970.000000  52970.000000  52970.000000
mean      10.681688     40.491240     22.431320   2015.970530
std       22.544517     55.153885      9.526061      1.961912
min        0.000000      0.000000      1.000000   2012.000000
25%        3.000000     11.000000     16.000000   2014.000000
50%        6.000000     23.000000     22.000000   2016.000000
75%       12.000000     48.000000     27.000000   2018.000000
max     2376.000000   1269.000000    224.000000   2019.000000

可以得出以下几个结论:

  • 虎嗅网大部分文章的评论数和收藏数都是比较低的,平均的评论数在 10 个左右,收藏数在 40 个左右,说明虎嗅网的文章的活跃度都不够高。

  • 文章的标题字数长度平均在 22 个 左右,最短的标题字数是 1 个,最长的标题长度是 224 个,极差还是比较大的,我认为一般文章的标题字数还是适中为好。

  • 有一部分文章的评论数和收藏数还是特别高的,说明虎嗅网上面还是存在不少爆文,下面会列举出来。

接下来对两个非数值型变量(name、write_time)进行描述型统计:

print(data['name'].describe())
print(data['write_time'].describe())

count     52970
unique     5272
top          虎嗅
freq       8457
Name: name, dtype: object

count                   52970
unique                   2388
top       2018-10-31 00:00:00
freq                      286
first     2012-12-02 00:00:00
last      2019-06-16 00:00:00
Name: write_time, dtype: object

通过对这两个非数值型数据进行分析,我们可以发现:

  • 从 2012 年到 2019 年,总共有 5272 位作者在虎嗅网上发布了 52970 篇文章,其中发布文章最多的作者是虎嗅官方,总共发表了 8457 篇文章。

  • 从时间上看,发布文章的天数总共有 2388 天,最早发布文章是在 2012 年 12 月 2 号,最后发布文章是时间是爬虫抓到文章的最后一天,也就是 2019 年 6 月 16 号,当然这个网站还在正常运转中,其中在 2018 年 10 月 31 号这天发布的文章数最多,是 286 篇文章。

4、数据可视化
  1. 从 2012 年到 2019 年,以季度为单位,每个季度的发文数量如下:排除掉 2012 年第 4 季度数据记录不全外,看其他各个季度的文章发布数,基本都稳定在 1500 篇以上,而且总整体的趋势上看,有逐年上升的趋势,在 2018 年以后每一个季度的发文数都在 2000 篇以上。


    image
  2. 文章收藏量 Top 10

序号 title favorites comment
1 大江大河40年:改变命运的七次机遇 1269 59
2 两万字,任正非采访全记录 1240 80
3 读完这10本书,你就能站在智商鄙视链的顶端了 1123 14
4 寒冬、裁员、失业……职场人如何找到出路? 1110 41
5 张小龙4个小时演讲全文:每天有1亿人教我做产品 1035 43
6 藏在县城的万亿生意 927 39
7 京东打脸央视:你所谓的翻新iPhone均为正品,我们保留向警方报案的权利 867 10
8 货币如水,覆水难收 865 43
9 离职创业?先读完这22本书再说 862 9
10 日本消费社会演变史——窥见未来 20 年的中国 844 22

收藏量前五有几篇是近期的,还有一篇是 2015 年推荐书的文章,这里放上这几篇文章的链接:

  1. 选取每年文章的收藏量前三的文章进行分析
year title favorites
2012 经营微博的十个经典案例 102
《大数据时代》,一场生活、工作与思维的大变革 93
周鸿祎:如何求生于这个只属于巨头的江湖 79
2013 创业者手记:我所犯的那些入门错误 475
马化腾三小时讲话实录:千亿美金这个线,其实很恐怖 392
雕爷亲身谈:白手起家的我如何在30岁之前赚到1000万。读《MBA教不了的创富课》 355
2014 85后,突变的一代 532
雕爷自述:什么是我做餐饮时琢磨、而大部分“外人”无法涉猎的思考? 524
据说这 40 张PPT是蚂蚁金服的内部培训资料…… 486
2015 读完这10本书,你就能站在智商鄙视链的顶端了 1123
京东打脸央视:你所谓的翻新iPhone均为正品,我们保留向警方报案的权利 867
离职创业?先读完这22本书再说 862
2016 蝗虫般的刷客大军:手握千万手机号,分秒间薅干一家平台 557
准CEO必读的这20本书,你读过几本? 550
运营简史:一文读懂互联网运营的20年发展与演变 511
2017 2016年已经起飞的5只黑天鹅,都在罗振宇这份跨年演讲全文里 777
真正强大的商业分析能力是怎样炼成的? 755
王健林的滑铁卢 719
2018 寒冬、裁员、失业……职场人如何找到出路? 1110
藏在县城的万亿生意 927
货币如水,覆水难收 865
2019 大江大河40年:改变命运的七次机遇 1269
两万字,任正非采访全记录 1240
张小龙4个小时演讲全文:每天有1亿人教我做产品 1035
历史文章 Top 3
  1. 发文数最高的作者 Top 20 (除去虎嗅网官方)


    image
  2. 描述文章收藏数与评论数关系的散点图


    image

    从中可以看出,大部分文章都是评论数低、收藏数也低,也存在某些异常值,也就是说一些文章存在评论数很高而收藏数很低或者是收藏数很高而评论数很低的异常情况。

  3. 文章标题的长度与文章收藏量的关系


    image

    好像规律不是特别明显,但是可以发现文章收藏数高的标题都不是很长,而文章标题比较长的收藏数都很低。

  4. 词云图
    通过对这 5 万多篇文章的标题和摘要进行分词处理,然后利用 Python 中的 WordCloud 包生成词云图,这样就可以直观地看出虎嗅网的文章关注的话题比重高低。


    image

    可以看到虎嗅网文章所关注的话题都集中在国内互联网领域,比如提及的公司有阿里、腾讯、小米、谷歌、苹果、京东等,这些都是著名的互联网公司,提及的关于产品、技术、用户、市场、营销、品牌、电商等也都是互联网相关的话题。

这篇文章用到的关于数据处理和可视化的技术主要有:

  • 数据处理:numpy、pandas
  • 可视化:matplotlib、seaborn
  • 分词:jieba
  • 词云图:wordcloud

相关文章

网友评论

      本文标题:虎嗅网 5 万篇文章数据分析

      本文链接:https://www.haomeiwen.com/subject/fgnelctx.html