【助睿实验指导】实验7-1:自媒体运营分析-数据清洗与预处理

📅 2026/7/6 3:43:17 👁️ 阅读次数 📝 编程学习
【助睿实验指导】实验7-1:自媒体运营分析-数据清洗与预处理

一、实验目标

本次实验以全班同学在多平台(B站、CSDN、知乎、微信等)发布的作品互动数据为基础,借助Uniplore ETL工具完成数据清洗与预处理工作,最终生成两张规范化数据表,为后续的特征构建与可视化分析做好准备。

通过本实验的学习,你将掌握以下技能:

  • 理解数据清洗在整个分析流程中的基础地位与必要性
  • 熟练运用Uniplore ETL进行多源数据的过滤、缺失值填充、聚合统计等预处理操作
  • 掌握"分流处理"的设计思想:全平台概况统计与重点平台深度分析各自走不同的处理分支
  • 学会输出结构清晰、可直接支撑仪表盘各模块数据需求的规范数据表

二、实验环境

实验平台:Uniplore在线实验环境(https://lab.guilian.cn/)

数据处理引擎:Uniplore ETL(数据集成平台)

三、核心设计思路

3.1为什么要做数据清洗?

直接从各平台采集回来的原始数据通常存在不少"脏数据",不能直接拿来做分析。以本次实验使用的《自媒体作品数据明细.csv》为例,至少存在三个典型问题:

  • 平台冗余:数据虽然覆盖了B站、CSDN、微信、知乎、小红书等多个渠道,但微信、知乎等平台的浏览数据大面积缺失(几乎全是0),这些平台虽有作品条目却缺少核心流量指标,无法支撑有效分析
  • 无效记录:部分作品的浏览、点赞、收藏三项指标全为零,可能是采集环节出了问题,也可能是作品确实没有任何互动,无论哪种情况都对分析没有贡献
  • 字段缺失:点赞数、收藏数、分享数等字段中存在NULL值,如果不加以处理,后续任何计算都会报错或产生偏差

数据清洗的本质,就是逐一排查并修复上述问题,确保交付给下游的每一行数据都是可用的。

3.2双分支处理流程

这次实验有一个独特之处:最终的可视化仪表盘需要同时展示两类不同粒度的信息。

第一类是"全平台总览"——全班一共发布了多少内容?数据来自几个平台?全平台累计浏览量和互动量分别是多少?这些宏观数字需要用到所有平台的原始记录,即使某些平台的浏览数为零,也要计入作品总数。

第二类是"重点平台深度分析"——B站和CSDN的具体表现如何?各自的播放量/阅读量、互动率怎样?这些分析只关注B站和CSDN中浏览数大于零的有效记录。

由于两类信息对数据的要求截然不同,在ETL中需要做分流处理。一条分支直接对所有数据进行聚合统计,产出全平台汇总表(summary_all_platforms);另一条分支先做过滤、再清洗加工,产出内容分析明细表(content_analysis),作为后续实验的输入。

两张表定位清晰、职责明确:summary_all_platforms 专供仪表盘顶部的全平台KPI指标卡使用;content_analysis 则是实验7-2特征工程的原材料。

四、实验操作步骤

步骤1:创建目标表

首先在Uniplore ETL中创建两张目标表。

第一张表:全平台概况表(summary_all_platforms),用于存放各平台的聚合统计数据。其字段设计如下:

字段名

数据类型

说明

crawl_date

DATE

数据采集日期

platform

VARCHAR(20)

平台名称

content_count

INT

该平台作品数量

total_views

INT

总浏览量

total_likes

INT

总点赞数

total_favorites

INT

总收藏数

total_shares

INT

总分享数

total_coins

INT

总投币数(B站特有)

total_recommend

INT

总推荐数(微信特有)

total_likes_zhihu

INT

总喜欢数(知乎特有)

total_approvals

INT

总赞同数(知乎特有)

设计要点:这张表不做任何过滤,保留所有平台的原始数据。各平台特有的互动指标(如B站的投币、微信的推荐、知乎的喜欢/赞同)在表中各占独立字段,不做合并。因为B站的"投币"和知乎的"赞同"含义完全不同,强行加在一起反而会造成理解混乱,不如让它们各自独立展示,读者一眼就能看清每个平台有哪些互动行为。

第二张表:内容分析表(content_analysis),作为实验7-2的输入。字段结构与原始数据基本一致,但只保留B站和CSDN的有效记录:

字段名

数据类型

说明

date

DATE

采集日期

author_name

VARCHAR(100)

作者昵称

title

VARCHAR(500)

作品标题

platform

VARCHAR(20)

所属平台(B站 / CSDN)

likes

INT

点赞数

favorites

INT

收藏数

shares

INT

分享数

coins

INT

投币数(仅B站)

views

INT

播放量/阅读量

url

VARCHAR(500)

作品链接

total_interaction

INT

互动总数(后续计算)

has_best

TINYINT(1)

标题是否含"保姆级"

has_lowcode

TINYINT(1)

标题是否含"零代码"

has_practice

TINYINT(1)

标题是否含"实战"

has_tutorial

TINYINT(1)

标题是否含"教程/指南"

has_pit

TINYINT(1)

标题是否含"踩坑"

注:total_interaction、has_best、has_lowcode、has_practice、has_tutorial、has_pit 这六个字段的数据将在实验7-2中完成计算和回填。

步骤2:导入原始数据

将Uniplore ETL公共空间中提供的《自媒体作品数据明细.csv》复制到自己的文件库中,作为本次实验的数据源。该文件收录了同学们在6月8日至6月15日期间提交的作品互动数据。需要留意的是,该数据集只覆盖采集时间节点之前已发布且未被删除的作品,后续新提交或已删除的内容不在本次分析范围内。Uniplore ETL支持多种数据源接入方式,CSV文件可直接导入使用。

步骤3:全平台聚合统计

在正式开始清洗之前,先将一份原始数据分流出去。拖入"排序记录"和"分组"两个组件,按照日期和平台两个维度先排序再分组,其余所有数值字段统一取求和。最终输出到 summary_all_platforms 表中。

步骤4:过滤有效记录

在另一条分支上,使用"过滤记录"组件筛选B站和CSDN两个平台的有效数据:

  • 仅保留B站和CSDN两个平台。原始数据虽然涵盖B站、CSDN、微信、知乎、小红书等多个渠道,但微信、知乎等平台的浏览数据大面积缺失(值均为0),无法支撑有意义的分析,因此只聚焦数据相对完整的B站和CSDN
  • 删除两个平台中浏览量为零的记录,只保留真正产生了用户互动的作品

在Uniplore ETL的"过滤记录"组件中,通过 AND 和 OR 组合设置筛选条件:

(平台= 'B' AND浏览数量> 0)
OR
(
平台= 'CSDN' AND浏览数量> 0)

逻辑解释:括号内的条件组合确保了"平台"与"有效记录判定"两个条件必须同时满足方可保留,一个组件即可完成双重筛选。Uniplore ETL的过滤组件支持编写较为复杂的条件表达式,可灵活运用AND、OR组合实现精细化的数据过滤。

步骤5:填充缺失值

经检查,本数据集的数值字段没有空值,但作者名称和作品标题字段可能个别为空。为了确保后续使用不出现异常,统一将这些文本字段的空值填充为"未知"。

步骤6:字段筛选

原始数据中的 source_file 字段是采集批次的标记,在分析阶段用不上,直接剔除。投币数量(coins)字段保留,因为它是B站特有的互动指标,具有分析价值。使用"字段选择"组件,只保留以下十个字段,其余全部舍弃:

date, author_name, title, platform, likes, favorites, shares, coins, views, url

步骤7:输出目标表

将清洗完成的数据输出为 content_analysis 表,这张表将直接作为实验7-2特征工程的输入。

步骤8:执行转换流水线

检查完整的ETL转换流无误后,点击运行按钮执行全流程。可在数据探查面板中查看输出结果,验证数据清洗是否符合预期。

五、核心知识点回顾

  • 多条件组合过滤:利用AND/OR逻辑将平台过滤与有效记录判断合并到一个组件中完成
  • 缺失值处理策略:对文本字段统一填充默认值,防止后续计算出现空指针异常
  • 多日期保留原则:保留完整的时间维度而不做去重,为后续趋势分析留出空间
  • Uniplore ETL Pipeline:通过串联多个Transform步骤,构建完整的数据加工链路
  • 宽表设计理念:遵循"一次清洗、多次使用"的原则,一张表覆盖全部后续分析需求

#助睿数智 #商业数据分析 #数据分析 #ETL