自媒体运营分析-数据清洗与预处理 1 实验目标本次实验以全班同学在多个自媒体平台发布的作品互动数据为基础借助助睿ETL工具完成数据的清洗与预处理最终生成两张核心数据表为后续的特征工程和可视化展示做好准备。通过本次实验学生应能够理解数据清洗在整个数据分析流程中的基础地位和必要性运用助睿ETL完成多源数据的筛选、补全、汇总等常见预处理操作掌握“分支处理”的设计思路实现全平台整体统计与重点平台专项分析的分流处理产出两张结构规范的数据表满足仪表盘不同模块对数据的不同需求2 实验环境实验平台助睿在线实验平台https://lab.guilian.cn/本次实验采用助睿数智Uniplore作为一站式数据科学平台。该平台涵盖了从数据接入、ETL处理、机器学习建模到可视化展示的完整链路全部通过零代码方式完成既适合数据分析教学也适用于企业级数据加工场景。数据处理工具助睿ETL数据集成平台助睿ETL具备以下核心优势全元数据驱动架构平台内所有对象均通过元数据进行标准化定义贯穿数据读取、处理与写入的各个环节零代码拖拽式操作用户可通过可视化拖拽方式完成数据的抽取、转换与加载无需编写程序代码丰富的预处理组件内置筛选、填充、聚合、连接、字段选择等多种转换节点能够灵活应对不同场景下的数据清洗需求Pipeline转换机制作为数据处理的核心功能单元Pipeline由多个不同功能的Transform步骤组合而成专注于数据本身的加工与转换开源内核与高可用引擎基于开源内核构建具备高可用架构并通过标准化的插件体系实现引擎能力的灵活扩展3 整体设计思路3.1 为何需要进行数据清洗采集到的原始数据通常无法直接用于分析必须先经过清洗处理。以自媒体作品数据明细.csv为例数据中存在以下几类问题平台信息冗余数据涵盖了B站、CSDN、微信、知乎、小红书等多个平台但微信、知乎等平台的浏览数据几乎全部为零。这些平台虽然有作品记录却缺少关键的浏览指标难以进行有意义的分析。无效记录部分作品的浏览量、点赞量、收藏量均为零。这类记录可能是采集过程中出现了问题也可能是作品本身无人关注无论原因如何它们都对分析没有实际价值。字段缺失点赞、收藏、分享等字段存在空值若不进行处理后续计算时会引发错误。数据清洗的任务正是逐一解决上述问题。3.2 数据处理的整体流程本次实验有一个特别之处后续的仪表盘需要同时呈现两类信息。第一类为“全平台概况”包括全班发布的作品总数、覆盖的平台数量、总浏览量及总互动量等。这些指标需要基于所有平台的原始数据进行统计即使某些作品的浏览量为零也应计入作品总数。第二类为“重点平台深度分析”聚焦B站和CSDN两个平台分析其播放量、阅读量、互动率等具体表现。这部分分析只需要保留两个平台中浏览量大于零的有效数据。由于两类信息对数据的要求各不相同ETL流程中需要进行分支处理两张表各有明确的定位——summary_all_platforms专门服务于仪表盘顶部的全平台概况指标卡cleaned_details则作为中间结果交给下一个实验环节继续加工使用。4 实验步骤步骤1创建目标表在助睿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站的投币和知乎的赞同含义不同加在一起反而说不清楚让它们各自独立读者能清晰地看到每个平台有哪些互动行为。拖入执行一个sql脚本组件DROP TABLE IF EXISTS summary_all_platforms; CREATE TABLE IF NOT EXISTS summary_all_platforms ( id INT AUTO_INCREMENT PRIMARY KEY COMMENT 自增主键ID, crawl_date DATE NOT NULL COMMENT 采集日期, platform VARCHAR(20) NOT NULL COMMENT 平台名称, content_count INT COMMENT 作品数量, total_views INT COMMENT 总浏览数, total_likes INT COMMENT 总点赞数, total_favorites INT COMMENT 总收藏数, total_shares INT COMMENT 总分享数, total_coins INT COMMENT 总投币数仅B站, total_recommend INT COMMENT 总推荐数仅微信, total_likes_zhihu INT COMMENT 总喜欢数仅知乎, total_approvals INT COMMENT 总赞同数仅知乎 ) ENGINE InnoDB DEFAULT CHARSET utf8mb4 COMMENT 全平台概况汇总表;第二张是内容分析表content_analysis作为实验二的输入。字段与原始数据基本一致但只包含B站和CSDN的有效记录字段 | 类型 | 说明date | DATE | 采集日期author_name | VARCHAR(100) | 作者昵称title | VARCHAR(500) | 作品标题platform | VARCHAR(20) | B站 / CSDNlikes | 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) | 是否含“踩坑”其中 interaction_rate, has_best, has_lowcode, has_practice, has_tutorial, has_pit 字段的数据加工将在下一个实验中完成。DROP TABLE IF EXISTS content_analysis; CREATE TABLE IF NOT EXISTS content_analysis ( id INT AUTO_INCREMENT PRIMARY KEY COMMENT 自增主键ID, date DATE NOT NULL COMMENT 采集日期, author_name VARCHAR(100) COMMENT 作者昵称, title VARCHAR(500) NOT NULL COMMENT 作品标题, platform VARCHAR(20) NOT NULL COMMENT B站 / CSDN, likes INT COMMENT 点赞数, favorites INT COMMENT 收藏数, shares INT COMMENT 分享数, coins INT COMMENT 投币数仅B站, views INT COMMENT 播放量/阅读量, url VARCHAR(500) COMMENT 作品链接, total_interaction INT COMMENT 互动总数, has_best TINYINT(1) COMMENT 是否含“保姆级” 0否1是, has_lowcode TINYINT(1) COMMENT 是否含“零代码” 0否1是, has_practice TINYINT(1) COMMENT 是否含“实战” 0否1是, has_tutorial TINYINT(1) COMMENT 是否含“教程/指南” 0否1是, has_pit TINYINT(1) COMMENT 是否含“踩坑” 0否1是 ) ENGINE InnoDB DEFAULT CHARSET utf8mb4 COMMENT 内容分析明细表实验二输入仅B站、CSDN有效数据;步骤2导入原始数据将已提供在助睿ETL公共空间的自媒体作品数据明细.csv 导入到自己的文件库中作为数据源输入。助睿ETL支持多种数据源接入CSV文件可直接导入。本次分析使用的数据来源于助睿ETL公共空间的 自媒体作品数据明细.csv已采集了同学们在6月8日-6月15日前提交的作品互动数据。需要说明的是该数据集仅覆盖采集时间节点前已发布且未被删除的作品之后新提交或已删除的作品不在此次分析范围内。导入前请先将该文件从公共空间复制到自己的文件库中。步骤3全平台聚合统计在数据清洗之前先做一个分支。拖入“排序记录”、“分组”组件按日期 和 平台 排序、分组其余数值字段全部取求和。输出 summary_all_platforms画布中拖入“CSV文件输入”拖入排序记录组件保留需要分组的字段拖入分组组件设置分组字段设置聚合字段删除作者名字、url、source_file、title字段后其余字段全部求和拖入表输出执行转换流步骤4过滤记录在另一个分支中使用“过滤记录”组件筛选B站和CSDN的有效记录只保留 B站 和 CSDN 两个平台原始数据包含B站、CSDN、微信、知乎、小红书等多个平台。由于微信、知乎等平台的浏览数量大量缺失值为0无法支撑有意义的分析因此只保留 B站 和 CSDN 的记录。2删除两个平台中浏览量为0的记录聚焦于真正产生用户互动的作品。使用助睿ETL的“过滤记录”组件通过AND 与 OR 组合条件(平台 B站 AND 浏览数量 0 )OR(平台 CSDN AND 浏览数量 0)在“过滤记录”组件中对应的配置如图逻辑说明括号内的条件组合确保“平台”与“有效记录判定”同时满足一个组件完成双重过滤。助睿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执行转换流完整转换流如下点击运行数据探查结果5 核心知识点总结多条件过滤使用 AND/OR 组合平台过滤与有效记录判定一个组件完成双重过滤缺失值处理统一填充默认值避免计算异常多日期保留保留时间维度用于趋势分析暂不做去重助睿ETL Pipeline通过多个Transform步骤组合完成完整的数据加工流程宽表设计一次清洗、多次使用一张表支撑全部后续分析