【基于hadoop的竞赛网站日志数据分析与可视化(上)】讲解了如何用hadoop对数据进行初步处理,本篇主要讲解用python对结果数据进行可视化分析。
5 数据可视化与分析
5.1 不同日期访问次数可视化
5.1.1 代码设计
用pd.read_csv读取文本文件,指定分隔符sep='\t'(适配制表符分隔的格式),手动命名列(names=['date', 'visit_count'])。先清理日期字符串的空白(避免解析异常),再用pd.to_datetime转化为时间格式(errors='coerce'把解析失败的设为NaN),最后删除无效行。
用groupby('date')把分散的访问量"按天归集",求和得到每日总访问量;再用折线图(加标记点)呈现时间维度的变化趋势(方便观察波动、峰值)。通过标签、排版优化让图表更"易用";用describe()输出统计指标(如平均访问量、最大最小值),补充可视化之外的量化结论。

图5-1-1 不同日期访问次数可视化代码
5.1.2 运行结果与分析
由图5-1-2-1和图5-1-2-2,标准差高达4,176,表明数据分布极不均匀,中位数(704)远低于平均值(1,739),说明数据右偏严重,75分位数为1,436,但最大值高达41,518,存在极端异常值,这种分布表明少数用户贡献了绝大部分访问
流量整体趋势属于"瓶颈期+爆发期"接替,2020年12月出现异常高峰(接近40,000次访问),2021年初访问量有所回落但仍高于2020年夏季水平,建议对这个时间短的数据进行进一步分析。

图5-1-2-1 输出结果

图5-1-2-2 可视化结果
5.3 四个月各用户访问次数可视化
5.3.1 代码设计
①数据处理
先用split(',', 1)精准切分"页面 ID"和"时间+次数",再对第二部分用split('\t')拆出时间与次数------这是针对"非标准分隔符"的定制化解法,确保混乱格式能被解析。
通过count <= 0过滤无效浏览量,用pd.to_datetime(..., errors='coerce')+pd.isna筛掉畸形时间。最终打包成 DataFrame,让下游分析能直接调用。

图5-3-1-1 数据处理代码1

图5-3-1-2 数据处理代码2
②访问频率分布
先groupby('user_id')['visits'].sum()算出每个用户的总访问量。再用user_visits['visits'] < 200把极端值"砍一刀",让直方图聚焦大多数用户的分布(毕竟运营中 80% 精力要服务普通用户)。
用histplot(..., kde=True)同时呈现"次数分布"和"密度趋势",一眼就能看出 "用户访问次数集中在哪个区间、分布是否均匀"。

图5-3-1-1 访问频率分布代码
③顶级活跃用户分析
抓出头部:nlargest(20, 'visits')筛出访问量 Top20 用户;barplot用彩色柱状图把他们的"贡献值"可视化,解决"谁是核心用户"的问题。
追踪行为:提取这些用户 ID 后,all_data[all_data['user_id'].isin(top_user_ids)]精准抓取其行为数据;再按日期排序,用plt.plot画出每日访问曲线,把"用户是谁"延伸到 "用户做了什么",挖掘他们的访问规律,为"如何留住/复制这些用户"提供依据。

图5-3-1-2 顶级活跃用户分析代码
5.3.2 运行结果与分析
由频率分布可视化结果(图5-3-2-1)我们可以得出以下结论。
①用户访问行为的"长尾分布"特征
集中低访问区间:大部分用户(柱状图左侧高柱)的总访问次数集中在 0-25 次 区间,说明平台的基础用户群体以"轻度访问"为主,这是互联网产品常见的 "长尾分布"特征------少数用户贡献高频访问,多数用户访问频次低。
长尾衰减趋势:随着总访问次数增加(横轴向右),用户数量快速减少(柱状图高度骤降),且频率曲线(蓝色线条)呈指数级衰减,意味着 高频访问用户(如>50 次)占比极低,属于平台的 "核心活跃用户"。
②平台用户分层与运营重点
基础用户(0-25 次):占比最大,是平台流量基本盘。需通过优化体验(如简化操作、首页内容推荐)留住这部分用户,避免流失;可设计"新手任务"、"签到奖励" 等引导其增加访问。
潜力用户(25-50 次):用户数量明显减少,但仍有一定规模。这部分用户有向高频转化的潜力,可通过"进阶任务"、"专属内容推送"(如竞赛冲刺攻略)提升活跃度。
核心用户(>50 次):数量极少,但贡献了大量访问。需重点维护(如专属客服、高级权益),他们是平台口碑传播、内容消费的关键群体。

图5-3-2-1 用户访问频率分布可视化
由顶级活跃用户可视化分析结果(图5-3-2-2、图5-3-2-3)可得出以下结论。
①访问波动与活跃度
高活跃用户识别:部分用户(如用户 9430、用户 93223 )在较长时间内保持较高访问次数,是平台超级活跃用户,对平台粘性强、参与度高。
波动型用户:多数用户访问次数随时间明显波动(如用户 93497 前期高访问,后期骤降),说明其活跃度受外部因素(如竞赛节奏、个人时间)影响大。
②时间周期与行为规律
短期集中访问:图中多条曲线在特定时间点(如 2020-11-03、2021-01-26 )出现峰值,可能对应平台关键节点(如竞赛活动、内容更新),触发核心用户集中访问。
长期衰减趋势:多数用户后期访问次数下降,需关注平台长期留存策略,避免核心用户流失

图5-3-2-2 访问次数最多的前20名用户数据可视化

图5-3-2-3 顶级用户每日访问次数时间序列可视化
5.4 四个月各页面访问次数可视化
5.4.1 代码设计
在上一小节数据处理的代码上增加以下核心代码,进行对四个月各页面访问次数的可视化。
首先用groupby做"数据归集",把零散的浏览行为收拢到"页面"这个业务实体;sort_values 则是"筛选重点",避免无差别分析------毕竟运营中 80% 价值往往来自 Top 页面。接着用柱状图把"页面-总览量"的抽象关系,转化为直观的长短对比,一眼锁定"哪些页面最核心"。
进一步把时间切分到"周维度",但关键是用 pd.Categorical 规范星期顺序------这是"对抗数据无序性"的细节设计(否则默认按字母排序,图表会失去业务意义),然后用柱状图对比不同页面的"周活跃模式"。
用箱线图展示"数据分布的离散程度"------中位数(箱体中线)体现"典型浏览量",箱体高度体现"日常波动范围",离群点体现"异常流量(活动/爬虫等)"。回答"页面流量稳定吗?"------如果页面的箱线图"上须"极长,说明偶尔有爆发式访问,需排查是运营亮点(可复制)还是异常(需监控)。

图5-4-1 各页面访问数据可视化核心代码
5.4.2 运行结果与分析
由热门页面总浏览次数对比图(图5-4-2-1)可知,页面 ID 为 1693、1688 的总浏览次数远超其他页面,是流量核心,直接体现 "哪些页面最受关注(总量维度)"。

图5-4-2-1 热门页面总浏览次数对比图
由热门页面浏览量分布箱线图(图5-4-2-2)可得到以下信息。
①整体分布特征
差异悬殊:不同页面浏览量差距极大,部分页面(如1488、1544等)浏览量集中在极低区间,而1688、1693等页面浏览量显著更高,反映出页面受关注程度分化明显。
异常值(离群点):1688、1693等页面存在明显长须和离群点,说明这些页面偶尔会出现远高于日常的浏览峰值,可能受活动、突发流量等影响。
②重点页面分析(以1688、1693为例)
1688 页面箱体跨度大(从接近 0 到 20000+),说明浏览量波动剧烈,日常浏览量分布广;中位数(箱体中间线)约 10000,代表"典型浏览量水平",长上须和高离群点,佐证存在爆发式流量;1693 页面箱体高度与 1688 接近,但上须更长、离群点更高(近 40000),峰值流量更极端,中位数略低于 1688,说明"典型浏览量"稍弱,但爆发潜力更强。
③低流量页面特征(如 1488、1544 等 )
箱体极扁、须极短,甚至几乎与 x 轴重合,说明这些页面浏览量极低且稳定,几乎无波动,属于"冷门页面",需评估其价值或优化必要性。

图5-4-2-2 热门页面浏览量分布箱线图
根据图5-4-2-3和图5-4-2-4,我们可以得到以下信息。
①核心趋势:"流量断层分化+逐月衰减"
蓝色(1488)、绿色(1628)两条线 "初期高流量、后期暴跌",这类页面大概率是"短期活动页/热点页"(比如2020年11-12月的营销活动页,活动结束后流量自然回落)。其他颜色线条"全程低流量",属于"长尾页面"(可能是内容冷门、入口隐蔽,或缺乏运营投入)。
②核心规律"少数页面垄断周内流量"
棕色(1628)在 Monday(周一) 流量峰值,推测是 "工作日强相关页面"(如办公工具、工作资讯类,周一用户集中使用);蓝色(1693)在Tuesday(周二)流量断层领先,可能是"周二特定场景页"(如行业报告发布、会员日活动,吸引用户集中访问);其他页面"周内流量极低且分散"缺乏明确的用户访问规律,或用户需求弱。

图5-4-2-3 热门页面浏览量遂月份变化可视化

图5-4-2-4 热门页面的周浏览模式可视化
需要数据集和完整代码的私我