实验7-1:自媒体运营分析-数据清洗与预处理 实验报告
一、实验目的
本实验基于全班同学在多平台发布的作品互动数据,使用助睿ETL完成数据清洗与预处理,输出两张核心数据表,为后续特征工程与可视化分析奠定基础。
通过本实验,应掌握以下内容:
- 理解数据清洗在数据分析流程中的基础性与必要性
- 使用助睿ETL完成多源数据的过滤、填充、聚合等预处理操作
- 掌握分支处理的设计思路:全平台概况统计与重点平台深度分析分流
- 输出两张规范数据表,支撑仪表盘不同模块的数据需求
二、实验环境
项目 | 说明 |
实验平台 | 助睿在线实验平台(https://lab.guilian.cn/) |
数据处理工具 | 助睿ETL(数据集成平台) |
课程名称 | 商业数据分析 |
三、实验步骤
3.1步骤1:创建目标表
在助睿ETL中创建两张目标表,分别用于存储全平台汇总数据和重点平台明细数据。
(1)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 | 总赞同数(仅知乎) |
(2)content_analysis(内容分析表)
该表作为实验二的输入,字段与原始数据基本一致,但只包含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) | 是否含踩坑 |
3.2步骤2:导入原始数据
将助睿ETL公共空间的「自媒体作品数据明细.csv」导入到自己的文件库中,作为数据源输入。该数据集包含同学们在6月8日-6月15日提交的作品互动数据,涵盖B站、CSDN、微信、知乎、小红书等多个平台。
3.3步骤3:全平台聚合统计(分支1)
这是第一个数据分支,用于生成全平台概况数据:
- 拖入「CSV文件输入」组件,选择导入的自媒体作品数据明细.csv
- 拖入「排序记录」组件,按日期和平台排序
- 拖入「分组」(聚合)组件:
- 分组字段:日期、平台
- 聚合方式:所有数值字段全部取求和
- 作品数量使用COUNT计数
- 输出到 summary_all_platforms 表
3.4步骤4:过滤记录(分支2)
这是第二个数据分支,用于筛选有效数据做深度分析。使用「过滤记录」组件,设置以下条件组合:
sql |
过滤逻辑说明:
- 只保留B站和CSDN两个平台(微信、知乎等平台浏览量大量缺失,无法支撑有效分析)
- 删除两个平台中浏览量为0的记录,聚焦真正产生用户互动的作品
3.5步骤5:填充缺失值
在过滤后的分支中,拖入「替换NULL值」组件:
- 值替换为:未知
- 填充空字符串:勾选
- 对作者名称、作品标题等可能存在空值的字段统一填充为未知
3.6步骤6:字段选择
拖入「字段选择」组件,只保留分析需要的字段,其余全部剔除:
保留字段:date, author_name, title, platform, likes, favorites, shares, coins, views, url
注意事项:
- 剔除source_file等采集批次标记字段(分析用不到)
- 保留coins(投币数量)作为B站特有的互动指标
- 日期字段需重命名为date(与目标表字段名一致)
3.7步骤7:输出目标表
拖入「表输出」组件,将处理后的数据输出到 content_analysis 表。
3.8步骤8:执行转换流
完整的转换流结构如下,点击运行执行:
CSV文件输入 |
四、遇到的问题及解决
4.1问题1:聚合字段找不到
错误信息:Aggregate subject field [content_count] couldn't be found!
问题原因:在聚合组件中错误地选择了content_count作为聚合字段,但原始CSV数据中根本没有这个字段。content_count是目标表的输出字段名,不是输入字段。
解决方法:
- 作品数量应该通过对任意非空字段(如title)做COUNT计数得到
- 将输出别名设置为content_count
- 其他数值字段(浏览量、点赞数等)使用SUM求和
4.2问题2:字符串字段无法求和
错误信息:couldn't convert String to number
问题原因:对title等字符串类型字段使用了SUM聚合方式,字符串无法进行数值求和运算。
解决方法:
- 字符串字段只能用于COUNT(计数)聚合,不能用于SUM(求和)
- 统计作品数量时,选择COUNT方式而非SUM
4.3问题3:字段名不匹配
错误信息:Unknown column 'crawl_date' in 'field list'
问题原因:数据流中的日期字段名是crawl_date,但目标表content_analysis中的日期字段名是date,字段名不匹配导致插入失败。
解决方法:在「字段选择」组件中,将日期字段重命名为date,确保输出字段名与目标表字段名完全一致。
4.4问题4:数据类型不匹配
错误信息:There was a data type error: the data type does not correspond to value meta [Date]
问题原因:CSV文件输入时,日期字段被识别为字符串类型,但目标表中该字段是Date类型,写入时类型不匹配。
解决方法:在「字段选择」组件中,将date字段的数据类型从String改为Date,并指定正确的日期格式(如yyyy-MM-dd)。
五、实验总结
5.1实验成果
本次实验成功完成了自媒体运营数据的清洗与预处理工作,输出了两张核心数据表:
- summary_all_platforms:全平台概况数据表,包含各平台每日的作品数量、总浏览、总点赞等汇总指标
- content_analysis:重点平台内容分析表,筛选出B站和CSDN的有效作品记录,为后续特征工程和深度分析奠定基础
5.2核心知识点
- 多条件过滤:使用AND/OR组合平台过滤与有效记录判定,一个组件完成双重过滤
- 缺失值处理:统一填充默认值未知,避免计算异常
- 分支处理设计:一份原始数据分两条支路处理,分别满足全平台概况和深度分析两种需求
- 宽表设计:一次清洗、多次使用,一张表支撑全部后续分析
- 字段类型转换:数据处理过程中需注意字段类型和名称的一致性,避免写入数据库时报错
5.3心得体会
通过本次实验,我深刻理解了数据清洗在数据分析流程中的重要性。原始数据往往存在各种问题,如平台冗余、无效记录、字段缺失等,如果不经过清洗直接使用,会严重影响后续分析结果的准确性。
同时,分支处理的设计思路也让我受益匪浅——针对不同的分析需求,对同一份原始数据采用不同的清洗策略,这样既能保证全平台统计的完整性,又能确保重点平台分析的有效性。这种设计思想在实际工作中具有很强的实用价值。
此外,实验过程中遇到的各种报错也让我积累了宝贵的排错经验,学会了如何根据错误日志定位问题、分析原因并找到解决方案。这些问题解决能力对于数据工程师来说是非常重要的基本功。