0
点赞
收藏
分享

微信扫一扫

与远哥的CSDN粉丝们互动,设计一个基于KETTEL的数据分析系统

与远哥的CSDN粉丝们互动,设计一个基于KETTEL的数据分析系统

喜报:截至2022年4月16日中午12时,博主的CSDN粉丝数量已经达到并突破了1500,正向着1600大关大踏步迈进❀❀❀。

为了对支持我的粉丝朋友们表示感谢,博主决定花时间给各位整个活,设计一个基于KETTEL的数据分析系统

文章目录

一、了解本项目目标

A.任务描述

  1. 了解博主涨粉情况的发展现状与发展趋势
  2. 熟悉理解博主现有的文章、专栏等数据
  3. 明确粉丝们对博主文章的喜好偏爱程度等情况

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

虚拟机Linux环境

jdk版本

pdi

三、分步完成项目目标

1.按关注博主的时间分组统计粉丝数量

任务分析

  1. 建立【按关注博主的时间分组统计粉丝数量】转换工程
  2. 通过新增粉丝表中的time字段获取并标准化粉丝关注我的年份、月份、日期、季节、星期等信息。
  3. 按照时间维度的不同,分别分组聚合统计粉丝的关注数量
  4. 装载和解读结果数据

任务流程

在聚合统计粉丝关注数量的过程中,需要获取唯一标识粉丝的关键字段,再根据此关键字段进行聚合统计。按时间分组聚合粉丝关注数量的流程如图所示。

按时间分组聚合粉丝关注数量流程图

具体来说,主要包括以下4个步骤

  1. 获取粉丝数据。建立转换工程,创建获取文件组件,获取新增粉丝表中的数据。
  2. 过滤和抽取数据。首先使用脚本将日期字符串(包括形如“12小时前”这类非标准化日期)统一为Date类型的对象格式,存储在字段中,然后依据需求,分别从不同维度抽取聚合统计所需的字段数据(如年、月、日、季、周等)。
  3. 聚合统计。对抽取后的数据根据用户ID进行排序,然后按不同维度分组聚合粉丝关注数量,最后去除重复数据和无效字段(用户ID)。
  4. 装载和解读聚合关注数据。对于聚合统计好的粉丝数量数据,按照新增粉丝数量大小,从高到低进行排序,再将排序后的数据装载至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文件中的数据进行可视化处理,看得更直观一些。

excel画图

2.计算统计各文章吸粉情况

任务分析

  1. 建立【计算统计各文章吸粉情况】转换工程
  2. 通过新增粉丝表中的sourceUrl字段获取粉丝是通过哪篇文章关注我的。
  3. 在文章具体详情表中找到文章的标题信息,连接其与上一步的数据。
  4. 分组聚合各文章吸粉数量
  5. 装载和解读结果数据

任务流程

在聚合统计各文章细分情况的过程中,需要获取唯一标识文章的关键字段,再根据此关键字段进行聚合统计。计算统计各文章吸粉情况的流程如图所示。

计算统计各文章吸粉情况

具体来说,主要包括以下4个步骤

  1. 获取粉丝和文章数据。建立转换工程,创建获取文件组件,获取新增粉丝表和文章详情表中的数据。
  2. 过滤、抽取数据和聚合统计。首先使用脚本和字段选择将文章标题和对应的文章ID选出,存储在字段中。同时,用完成本项目第一个目标相同的方法,对数据做聚合统计。
  3. 记录集连接和排序。使用文章ID做外键对两块数据做外连接,之后剔除文章ID字段。
  4. 装载和解读聚合关注数据。对于聚合统计好的文章吸粉数据,按照吸粉程度的大小,从高到低进行排序,再将排序后的数据装载至Excel文件中,并对结果数据进行解读。

实现过程

给出部分重点步骤实验截图

图一:总体步骤截图

总体步骤截图

图二:根据文章链接提取文章ID

根据文章链接提取文章ID

图三:生成空记录,填补ID为null的记录计数后的title空缺问题

生成空记录,填补ID为null的记录计数后的title空缺问题

图四:记录集连接

记录集连接

图五:对于文章详情表中没有找到对应ID的文章,说明该文章已经删除

对于文章详情表中没有找到对应ID的文章,说明该文章已经删除

结果分析

打开生成的Excel文件,显示的结果可以大致说明以下几点

  • 未知各位从哪篇文章开始关注博主的记录达到了621条,这是因为太久远的数据CSDN后台也没有记录,爬不到,这是数据集的问题。
  • 现有的记录当中,博主最吸粉的一篇文章就是《Python自实现DBSCAN聚类算法,支持多维数组,距离用欧式距离。》,一篇文章就吸引了410个粉丝关注博主。其后依次为《pyecharts的用法入门(三)柱状图分享基础篇之柱状图6大元素和设置方式》的156和《一种使用Python自实现KMeans++聚类算法的写法》的103,感谢各位。

这里继续使用WPS对Excel文件中的数据进行可视化处理,看得更直观一些。

excel画图

3.统计各专栏文章平均阅读|评论|点赞情况

任务分析

  1. 建立【统计各专栏文章平均阅读|评论|点赞情况】转换工程
  2. 通过文章具体详情表获取各文章的阅读|评论|点赞情况。
  3. 通过专栏管理详情表获取各个专栏分别包含哪些文章。
  4. 分组聚合各专栏文章,求出各专栏文章平均阅读|评论|点赞情况。
  5. 装载和解读结果数据

任务流程

在统计各专栏文章平均阅读|评论|点赞情况的过程中,需要获取各文章的阅读|评论|点赞情况,再根据此关键字段进行聚合统计求平均。计算统计各专栏文章平均阅读|评论|点赞情况的流程如图所示。

计算统计各专栏文章平均阅读|评论|点赞情况

具体来说,主要包括以下4个步骤

  1. 获取专栏和文章数据。建立转换工程,创建获取文件组件,获取专栏管理详情表和文章详情表中的数据。
  2. 分别对两张表内的数据进行处理。首先使用脚本和字段选择将文章ID和专栏标题选出,按照文章ID排序。在文章详情表中选择文章ID、阅读、评论和点赞数等字段,按照文章ID排序。
  3. 记录集连接和排序。使用文章ID做外键对两块数据做连接,之后剔除文章ID字段。
  4. 装载和解读聚合关注数据。根据专栏标题分组,求各组的阅读、评论和点赞平均值,再将去重、排序后的数据装载至Excel文件中,并对结果数据进行解读。

实现过程

给出部分重点步骤实验截图

图一:总体步骤截图

总体步骤截图

图二:分组平均

分组平均

结果分析

打开生成的Excel文件,显示的结果可以大致说明以下几点。

  • 直观上看,无论是观看、评论还是点赞数,《数据挖掘》专栏的平均值都远高于其他专栏。说明各位比较支持博主做数据挖掘系列的文章,博主以后会再接再厉的。
  • 与之相比,《Java基础》专栏就显得门可罗雀了,平均每篇文章的观看量还不到200,看来是博主Java方面的文章没什么亮点,今后需要继续努力。

这里继续使用WPS对Excel文件中的数据进行可视化处理,看得更直观一些。

excel画图

4.整理近一个月的总体涨粉情况

任务分析

  1. 建立【整理近一个月的总体涨粉情况】转换工程。
  2. 通过新增粉丝表中的time字段获取并标准化时间并计算各时间与4月16日之间的间隔。
  3. 分组聚合各日期,求出近30日单日涨粉情况。
  4. 装载和解读结果数据。

任务流程

整理近一个月的总体涨粉情况的流程如图所示。

整理近一个月的总体涨粉情况

具体来说,主要包括以下3个步骤

  1. 获取粉丝数据。建立转换工程,创建获取文件组件,获取新增粉丝消息表中的数据。
  2. 对表内的数据进行处理。主要涉及时间的转化、计算日期距离等(大体与第一项任务相同)以及排序和分组聚合。
  3. 装载和解读聚合数据。过滤前30条,选择字段,写入Excel,并对结果数据进行解读。

实现过程

由于步骤较多,在此不详细说明操作步骤,给出部分重点步骤实验截图

图一:总体步骤截图

总体步骤截图

图二:过滤记录

过滤记录

结果分析

打开生成的Excel文件,显示的结果可以大致说明以下几点。

  • 近一月,博主的粉丝每日新增量较为稳定,在稳定的基础上持续走高。
  • 4月14日达到顶峰(单日新增52名粉丝)。【这也是我一定要写这篇文章的原因和动力之一】

这里继续使用WPS对Excel文件中的数据进行可视化处理,看得更直观一些。

excel画图

5.综合点赞|收藏|关注的情况,按照热情程度给粉丝排名

任务分析

  1. 建立【统计各专栏文章平均阅读|评论|点赞情况】转换工程
  2. 通过赞和收藏详情表得到所有收到的赞和收藏的信息。
  3. 通过新增粉丝消息表中验证赞和收藏详情表中部分缺失的“是否是粉丝”值,并整合至总体数据中。
  4. 计算量化的”粉丝热情程度“,分组聚合各条记录的”热情程度“,各人总体的热情程度值。
  5. 装载和解读结果数据

任务流程

综合点赞|收藏|关注的情况,按照热情程度给粉丝排名的流程如图所示。

综合点赞|收藏|关注的情况,按照热情程度给粉丝排名

具体来说,主要包括以下5个步骤

  1. 获取赞和收藏详情及粉丝数据。建立转换工程,创建获取文件组件,获取新增粉丝消息表、赞和收藏详情表中的数据。
  2. 对表内的数据进行处理。使用脚本和过滤将列表中与博主文章无关的全部剔除,并按照【是否为粉丝一栏是否为null】这一标准将数据分流。
  3. 对上一步”是“的处理。看他是否存在新增粉丝列表中,具体操作为使用全连接后判断是否username和username_1都不为null,字段选择后给isFans赋值
  4. 数据的整合和聚合计算。整合3中处理完的数据与2中否的数据,之后进行热情程度的量化、去重、排序、选择等工作。
  5. 装载和解读聚合数据。选择字段,写入Excel,并对结果数据进行解读。

实现过程

给出部分重点步骤实验截图

图一:总体步骤截图

总体步骤截图

图二:筛选是否未知是否粉丝

过滤记录

图三:记录集连接

记录集连接

图四:排序合并

排序合并

结果分析

打开生成的Excel文件,显示的结果可以大致说明以下几点。

  • 除了博主本人之外,与博主互动程度最高前三名是treesorshining、m0_47256162、weixin_51030865,感谢你们对我的支持。
  • 大部分粉丝的热情程度与陌生人点赞一次也差不太多,可能博主的文章数量太少,不能吸引各位点赞收藏更多文章,博主一定会继续努力。

这里继续使用WPS对Excel文件中的数据进行可视化处理,看得更直观一些。

excel画图

四、小结

本项目通过对【按关注博主的时间分组统计粉丝数量】【计算统计各文章吸粉情况】【统计各专栏文章平均阅读|评论|点赞情况】【整理近一个月的总体涨粉情况】【综合点赞|收藏|关注的情况,【按照热情程度给粉丝排名】五项任务的介绍,描述了KETTLE技术有关组件在实际项目的运用和处理方法,使用多个组件组合应用处理实际的数据问题,展现了复杂的数据处理流程,实现了对实际项目数据的转换处理。

举报

相关推荐

0 条评论