与远哥的CSDN粉丝们互动,设计一个基于KETTEL的数据分析系统
喜报:截至2022年4月16日中午12时,博主的CSDN粉丝数量已经达到并突破了1500,正向着1600大关大踏步迈进❀❀❀。
为了对支持我的粉丝朋友们表示感谢,博主决定花时间给各位整个活,设计一个基于KETTEL的数据分析系统
文章目录
一、了解本项目目标
A.任务描述
- 了解博主涨粉情况的发展现状与发展趋势
- 熟悉理解博主现有的文章、专栏等数据
- 明确粉丝们对博主文章的喜好偏爱程度等情况
B.熟悉项目目标
为了更加直观地了解分析博主CSDN发展的情况,需要综合分析每天的粉丝关注情况、粉丝具体信息和文章赞与收藏等的情况,获得粉丝们喜好的文章方向,以及粉丝热情程度等信息。按照这一目标,整体项目可以分为以下5个任务。
- 按关注博主的时间分组统计粉丝数量
- 计算统计各文章吸粉情况
- 统计各专栏文章平均阅读|评论|点赞情况
- 整理近一个月的总体涨粉情况
- 综合点赞|收藏|关注的情况,按照热情程度给粉丝排名
C.熟悉数据字段
数据集使用博主从CSDN后台爬取的博主的粉丝和文章等部分信息「截至2022年4月12日中午12时」。
由于代码部分涉及cookie等隐私内容,故不在此公布,此处仅分享脱敏后的现成数据。
链接:https://pan.baidu.com/s/1FGgdHU6dh__9537fKD4OXg
提取码:ygtl
下面对各表数据项、含义及备注做介绍
1.粉丝详情表
在粉丝详情“fans.csv”文件中,有关数据字段的说明如表所示
数据项 | 含义 | 备注 |
---|---|---|
username | - | |
nickname | 用户昵称 | - |
userAvatar | 头像链接 | - |
blogUrl | 用户个人主页链接 | - |
loginUserNameIsFollow | 博主是否关注该用户 | TRUE|FALSE |
blogExpert | 是否是博客专家 | TRUE|FALSE |
briefIntroduction | 个人简介 | - |
id | 粉丝ID | 用户在粉丝列表中的ID,意义不大 |
2.新增粉丝消息表
在新增粉丝消息“follow.csv”文件中,有关数据字段的说明如表所示
数据项 | 含义 | 备注 |
---|---|---|
id | 消息ID | 消息在列表中的ID,意义不大 |
time | 用户关注博主的时间 | 一天之内显示XX小时|分钟|秒前,一天之外显示具体日期 |
username | 用户ID | - |
sourceUrl | 用户通过哪篇文章关注博主的 | - |
3.赞和收藏消息表
在赞和收藏消息“good.csv”文件中,有关数据字段的说明如表所示
数据项 | 含义 | 备注 |
---|---|---|
id | 消息ID | 消息在列表中的ID,意义不大 |
time | 点赞|收藏博主评论或文章的时间 | 一天之内显示XX小时|分钟|秒前,一天之外显示具体日期 |
username | 用户ID | - |
url | 通过哪篇文章点赞|收藏博主的 | 少部分为赞|收藏博主对于别人文章的评论 |
isFans | 是否为粉丝 | TRUE|FALSE |
isPraise | 行为是否为点赞 | TRUE点赞|FALSE收藏 |
4.文章具体详情表
在文章具体详情“article.csv”文件中,有关数据字段的说明如表所示
数据项 | 含义 | 备注 |
---|---|---|
articleId | 文章ID | - |
title | 文章标题 | - |
description | 文章摘要 | - |
url | 文章链接 | - |
type | 文章类型 | 1原创|2转载|3翻译 |
top | 是否置顶 | TRUE|FALSE |
forcePlan | 未知意义 | - |
viewCount | 阅读次数 | - |
commentCount | 评论次数 | - |
editUrl | 编辑文章的链接 | - |
postTime | 发布时间 | - |
diggCount | 点赞次数 | - |
formatTime | 标准化发布时间 | - |
5.专栏管理详情表
在专栏管理详情“special.csv”文件中,有关数据字段的说明如表所示
数据项 | 含义 | 备注 |
---|---|---|
id | 专栏ID | - |
title | 专栏标题 | - |
url | 专栏链接 | - |
artical_url | 文章链接 | - |
二、环境介绍
虚拟机软件:VMware Workstation Pro
运行系统:ubuntu 18.04 LTS
jdk版本:version “1.8.0_312”
Kettle对应的PDI版本:pdi-ce-9.2.0.0-290
三、分步完成项目目标
1.按关注博主的时间分组统计粉丝数量
任务分析
- 建立【按关注博主的时间分组统计粉丝数量】转换工程
- 通过新增粉丝表中的time字段获取并标准化粉丝关注我的年份、月份、日期、季节、星期等信息。
- 按照时间维度的不同,分别分组聚合统计粉丝的关注数量
- 装载和解读结果数据
任务流程
在聚合统计粉丝关注数量的过程中,需要获取唯一标识粉丝的关键字段,再根据此关键字段进行聚合统计。按时间分组聚合粉丝关注数量的流程如图所示。
具体来说,主要包括以下4个步骤
- 获取粉丝数据。建立转换工程,创建获取文件组件,获取新增粉丝表中的数据。
- 过滤和抽取数据。首先使用脚本将日期字符串(包括形如“12小时前”这类非标准化日期)统一为Date类型的对象格式,存储在字段中,然后依据需求,分别从不同维度抽取聚合统计所需的字段数据(如年、月、日、季、周等)。
- 聚合统计。对抽取后的数据根据用户ID进行排序,然后按不同维度分组聚合粉丝关注数量,最后去除重复数据和无效字段(用户ID)。
- 装载和解读聚合关注数据。对于聚合统计好的粉丝数量数据,按照新增粉丝数量大小,从高到低进行排序,再将排序后的数据装载至Excel文件中,并对结果数据进行解读。
实现过程
由于步骤较多,在此不详细说明操作步骤,给出部分重点步骤实验截图
图一:总体步骤截图
图二:标准化关注时间
图三:提取年、月、日、季、周等关键信息
图四:分组聚类(时间维度以年为例)
图五:Excel输出「1为覆盖原文件;2、3、4、5为使用现有文件输出」
结果分析
打开生成的Excel文件,显示的结果可以大致说明以下几点
- 从年份上来看,虽然今年只过去四个月,但是,今年关注博主的粉丝量就已经超过了去年一年的新增粉丝量,达到了惊人的605人。而前年(2020年),由于博主下半年才开启写作而且初期涨粉不多,只有458人。
- 从月份上来看,12月是博主涨粉最快的一个月,近三年的12月份加起来博主总共涨了622个粉丝,第二名是4月的256人。与之相反,5、6月大多数粉丝童鞋们都在放假期间,所以博主涨粉不多,三年的6月加起来也只涨了10个粉丝,5月则只有可怜的3个粉丝。
- 从日期上来看,每个月的7、8、9号博主涨粉比较多,分别达到了142、121、96人,而25、28、31三个日子博主涨粉就比较少了,分别只有29、27、19人了。虽然小月和平月没有31号,但按照这个趋势,月末总体都偏少,看来以后博主发文时间要集中放在月初了。
- 从季节上来看,春夏秋冬累计涨粉分别为434、269、24、897人。这个与月份有着很紧密的联系,前面分析了,这里不详述。「各位在冬天都喜欢窝在电脑前吗??」
- 从星期上来看,工作日总体要大于休息日,这当然是肯定的。大家都是社会主义打工仔,双休当然不能卷。周一到周日,博主的涨粉数量分别为371、308、266、217、207、136、119人。
由于数据不够直观就不放了,这里使用WPS对Excel文件中的数据进行可视化处理,看得更直观一些。
2.计算统计各文章吸粉情况
任务分析
- 建立【计算统计各文章吸粉情况】转换工程
- 通过新增粉丝表中的sourceUrl字段获取粉丝是通过哪篇文章关注我的。
- 在文章具体详情表中找到文章的标题信息,连接其与上一步的数据。
- 分组聚合各文章吸粉数量
- 装载和解读结果数据
任务流程
在聚合统计各文章细分情况的过程中,需要获取唯一标识文章的关键字段,再根据此关键字段进行聚合统计。计算统计各文章吸粉情况的流程如图所示。
具体来说,主要包括以下4个步骤
- 获取粉丝和文章数据。建立转换工程,创建获取文件组件,获取新增粉丝表和文章详情表中的数据。
- 过滤、抽取数据和聚合统计。首先使用脚本和字段选择将文章标题和对应的文章ID选出,存储在字段中。同时,用完成本项目第一个目标相同的方法,对数据做聚合统计。
- 记录集连接和排序。使用文章ID做外键对两块数据做外连接,之后剔除文章ID字段。
- 装载和解读聚合关注数据。对于聚合统计好的文章吸粉数据,按照吸粉程度的大小,从高到低进行排序,再将排序后的数据装载至Excel文件中,并对结果数据进行解读。
实现过程
给出部分重点步骤实验截图
图一:总体步骤截图
图二:根据文章链接提取文章ID
图三:生成空记录,填补ID为null的记录计数后的title空缺问题
图四:记录集连接
图五:对于文章详情表中没有找到对应ID的文章,说明该文章已经删除
结果分析
打开生成的Excel文件,显示的结果可以大致说明以下几点
- 未知各位从哪篇文章开始关注博主的记录达到了621条,这是因为太久远的数据CSDN后台也没有记录,爬不到,这是数据集的问题。
- 现有的记录当中,博主最吸粉的一篇文章就是《Python自实现DBSCAN聚类算法,支持多维数组,距离用欧式距离。》,一篇文章就吸引了410个粉丝关注博主。其后依次为《pyecharts的用法入门(三)柱状图分享基础篇之柱状图6大元素和设置方式》的156和《一种使用Python自实现KMeans++聚类算法的写法》的103,感谢各位。
这里继续使用WPS对Excel文件中的数据进行可视化处理,看得更直观一些。
3.统计各专栏文章平均阅读|评论|点赞情况
任务分析
- 建立【统计各专栏文章平均阅读|评论|点赞情况】转换工程
- 通过文章具体详情表获取各文章的阅读|评论|点赞情况。
- 通过专栏管理详情表获取各个专栏分别包含哪些文章。
- 分组聚合各专栏文章,求出各专栏文章平均阅读|评论|点赞情况。
- 装载和解读结果数据
任务流程
在统计各专栏文章平均阅读|评论|点赞情况的过程中,需要获取各文章的阅读|评论|点赞情况,再根据此关键字段进行聚合统计求平均。计算统计各专栏文章平均阅读|评论|点赞情况的流程如图所示。
具体来说,主要包括以下4个步骤
- 获取专栏和文章数据。建立转换工程,创建获取文件组件,获取专栏管理详情表和文章详情表中的数据。
- 分别对两张表内的数据进行处理。首先使用脚本和字段选择将文章ID和专栏标题选出,按照文章ID排序。在文章详情表中选择文章ID、阅读、评论和点赞数等字段,按照文章ID排序。
- 记录集连接和排序。使用文章ID做外键对两块数据做连接,之后剔除文章ID字段。
- 装载和解读聚合关注数据。根据专栏标题分组,求各组的阅读、评论和点赞平均值,再将去重、排序后的数据装载至Excel文件中,并对结果数据进行解读。
实现过程
给出部分重点步骤实验截图
图一:总体步骤截图
图二:分组平均
结果分析
打开生成的Excel文件,显示的结果可以大致说明以下几点。
- 直观上看,无论是观看、评论还是点赞数,《数据挖掘》专栏的平均值都远高于其他专栏。说明各位比较支持博主做数据挖掘系列的文章,博主以后会再接再厉的。
- 与之相比,《Java基础》专栏就显得门可罗雀了,平均每篇文章的观看量还不到200,看来是博主Java方面的文章没什么亮点,今后需要继续努力。
这里继续使用WPS对Excel文件中的数据进行可视化处理,看得更直观一些。
4.整理近一个月的总体涨粉情况
任务分析
- 建立【整理近一个月的总体涨粉情况】转换工程。
- 通过新增粉丝表中的time字段获取并标准化时间并计算各时间与4月16日之间的间隔。
- 分组聚合各日期,求出近30日单日涨粉情况。
- 装载和解读结果数据。
任务流程
整理近一个月的总体涨粉情况的流程如图所示。
具体来说,主要包括以下3个步骤
- 获取粉丝数据。建立转换工程,创建获取文件组件,获取新增粉丝消息表中的数据。
- 对表内的数据进行处理。主要涉及时间的转化、计算日期距离等(大体与第一项任务相同)以及排序和分组聚合。
- 装载和解读聚合数据。过滤前30条,选择字段,写入Excel,并对结果数据进行解读。
实现过程
由于步骤较多,在此不详细说明操作步骤,给出部分重点步骤实验截图
图一:总体步骤截图
图二:过滤记录
结果分析
打开生成的Excel文件,显示的结果可以大致说明以下几点。
- 近一月,博主的粉丝每日新增量较为稳定,在稳定的基础上持续走高。
- 4月14日达到顶峰(单日新增52名粉丝)。【这也是我一定要写这篇文章的原因和动力之一】
这里继续使用WPS对Excel文件中的数据进行可视化处理,看得更直观一些。
5.综合点赞|收藏|关注的情况,按照热情程度给粉丝排名
任务分析
- 建立【统计各专栏文章平均阅读|评论|点赞情况】转换工程
- 通过赞和收藏详情表得到所有收到的赞和收藏的信息。
- 通过新增粉丝消息表中验证赞和收藏详情表中部分缺失的“是否是粉丝”值,并整合至总体数据中。
- 计算量化的”粉丝热情程度“,分组聚合各条记录的”热情程度“,各人总体的热情程度值。
- 装载和解读结果数据
任务流程
综合点赞|收藏|关注的情况,按照热情程度给粉丝排名的流程如图所示。
具体来说,主要包括以下5个步骤
- 获取赞和收藏详情及粉丝数据。建立转换工程,创建获取文件组件,获取新增粉丝消息表、赞和收藏详情表中的数据。
- 对表内的数据进行处理。使用脚本和过滤将列表中与博主文章无关的全部剔除,并按照【是否为粉丝一栏是否为null】这一标准将数据分流。
- 对上一步”是“的处理。看他是否存在新增粉丝列表中,具体操作为使用全连接后判断是否username和username_1都不为null,字段选择后给isFans赋值
- 数据的整合和聚合计算。整合3中处理完的数据与2中否的数据,之后进行热情程度的量化、去重、排序、选择等工作。
- 装载和解读聚合数据。选择字段,写入Excel,并对结果数据进行解读。
实现过程
给出部分重点步骤实验截图
图一:总体步骤截图
图二:筛选是否未知是否粉丝
图三:记录集连接
图四:排序合并
结果分析
打开生成的Excel文件,显示的结果可以大致说明以下几点。
- 除了博主本人之外,与博主互动程度最高前三名是treesorshining、m0_47256162、weixin_51030865,感谢你们对我的支持。
- 大部分粉丝的热情程度与陌生人点赞一次也差不太多,可能博主的文章数量太少,不能吸引各位点赞收藏更多文章,博主一定会继续努力。
这里继续使用WPS对Excel文件中的数据进行可视化处理,看得更直观一些。
四、小结
本项目通过对【按关注博主的时间分组统计粉丝数量】【计算统计各文章吸粉情况】【统计各专栏文章平均阅读|评论|点赞情况】【整理近一个月的总体涨粉情况】【综合点赞|收藏|关注的情况,【按照热情程度给粉丝排名】五项任务的介绍,描述了KETTLE技术有关组件在实际项目的运用和处理方法,使用多个组件组合应用处理实际的数据问题,展现了复杂的数据处理流程,实现了对实际项目数据的转换处理。