返噗掖 发表于 2025-6-2 23:27:51

【SQL 周周练】爬取短视频发现数据缺失,如何用 SQL 填充

大家好,我是“蒋点数分”,多年以来一直从事数据分析工作。从今天开始,与大家持续分享关于数据分析的学习内容。
本文是第 5 篇,也是【SQL 周周练】系列的第 4 篇。该系列是挑选或自创具有一些难度的 SQL 题目,一周至少更新一篇。后续创作的内容,初步规划的方向包括:
后续内容规划

1.利用 Streamlit 实现 Hive 元数据展示、SQL 编辑器、 结合Docker 沙箱实现数据分析 Agent
2.时间序列异常识别、异动归因算法
3.留存率拟合、预测、建模
4.学习 AB 实验、复杂实验设计等
5.自动化机器学习、自动化特征工程
6.因果推断学习
7. ……
欢迎关注,一起学习。
第 4 期题目

题目来源:自创题目,曾经在工作中遇到过该问题
一、题目介绍

公司市场部找到一些达人在抖音、快手等平台进行短视频营销,需要监测视频的点赞量。公司内有一位专职的爬虫工程师,他的项目也很多。因此很难对该项目爬虫数据提供高质量的维护,会出现一些字段缺失的情况。
我们将问题简化,有一张表记录了爬虫抓取的短视频点赞量数据,其中部分日期的点赞量是缺失的。请你利用 SQL 将这些数据补齐,即“插值”。
列名数据类型注释video_idstring短视频iddtstring日期likes_numint点赞量(用来对比结果,不要直接用)show_likes_numint展示点赞量(用来补全数据)用 SQL 实现几种比较简单的插值方法,复杂的方法可以利用 Hive 中的 transform 函数调用 Python 脚本来实现(后面哪期会根据这个点水一篇文章)
本文实现的简单补全方法有:
1.前向填充,使用前面最近的一个非空值来填充
2.后向填充,使用后面最近的一个非空值来填充
3.相邻的平均数填充,使用前后最近的非空值,取两个数的平均数填充
4.相邻的分位数填充,使用前后最近的非空值,缺失值根据分位数来填充
额外说明:这四种方法都依赖于缺失值邻近的前后非空值,需要存在这样的非空值。
如果该非空值不存在,比如短视频第一天发布就没有爬取到点赞量 —— 这样没有办法,找到它之前的非空点赞量。我本文的处理方法是将它“视为”前一天发布,或者说增加一个前一条点赞量为零的数据(还有其他的处理方法,我这里只提出一种)。
这条增加的数据不需要显式存在,只不过是在数据处理时兜底的逻辑等效于它。而如果短视频缺少的是最后几天的数据,比如某一天开始后面一直缺失数据,这样就将最后一个有数据的点赞量“顺延”下去。这 4 种填充方法,都用这样的逻辑兜底。
二、题目思路


想要答题的同学,可以先思考答案
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 【SQL 周周练】爬取短视频发现数据缺失,如何用 SQL 填充