1.前言:运用数据处理和可视化库,实现数据多维度分析与可视化呈现,如视频类型占比、热门词汇词云图、播放量与评论量关系等,为用户提供直观数据分析结果,助于深入了解 B 站热门视频特征和用户喜好。
2.技术坏境:Python+mysql+Pycharm软件+pyecharts实现了对b站热门视频大数据的可视化分析。

3.总结:还有很多的不足,加油!

本设计成功实现基于 Python 的 B 站数据分析大屏。通过数据采集、存储、分析和可视化流程,深入挖掘热门视频数据价值。系统功能完善,能为用户提供有价值的数据洞察。B站热门视频与播放、评论、收藏、投币、分享、点赞几个因素都具有很强的相关性。我觉得我的可视化还可以做如下改善和优化:拓展数据分析维度,如用户行为分析、视频时长与播放量关系,评价的情感分析。改进可视化效果和交互体验,增加更多动态效果和用户自定义功能。

# 视频类型占比饼图函数
def make_pie(title_info, num):
    pie_chart = (
        Pie(init_opts=opts.InitOpts(theme=theme_config))
        .add(
            "",
            [list(z) for z in zip(title_info, num)],
            center=["35%", "50%"],
        )
        .set_global_opts(
            title_opts=opts.TitleOpts(title="视频 top20 类型占比情况分布"),
            legend_opts=opts.LegendOpts(type_="scroll", pos_left="65%", orient="vertical"),
        )
        .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{c}"))
    )
    return pie_chart  # 返回饼图对象

def make_bar(names, counts):
    c = (
        Bar(init_opts=opts.InitOpts(theme=theme_config))  # 正确使用主题
        # 导入 x 轴数据
        .add_xaxis(names)
        # 导入 y 轴数据
        .add_yaxis("播放量对应的评论量", counts)
        .set_global_opts(
            # 设置标题 倾倒
            xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
            # 标题内容
            title_opts=opts.TitleOpts(title="b 站播放数据", subtitle="bili 当前 top10 评论"),
        )
    )
    return c

def make_qiu(top1_coin_value, top2_coin_value, top3_coin_value):
    Liquid()
    # 假设我们显示硬币数最多的前三个数据点
    pic3 = (
        Liquid(init_opts=opts.InitOpts(theme=theme_config))
        .add("硬币数", [top1_coin_value / 100000.0], center=['20%', '50%'], is_outline_show=True,
             outline_border_distance=10,
             shape='diamond')
        .set_global_opts(
            title_opts=opts.TitleOpts(title=f"Top2 硬币数: {top1_coin_value}", pos_top='15%', pos_left='5%'))
    )

    pic4 = (
        Liquid(init_opts=opts.InitOpts(theme=theme_config))
        .add("硬币数", [top2_coin_value / 1000000.0], center=['50%', '50%'], is_outline_show=True,
             outline_border_distance=10,
             shape='circle')
        .set_global_opts(
            title_opts=opts.TitleOpts(title=f"Top1 对应的硬币数: {top2_coin_value}", pos_top='15%', pos_left='35%'))
    )

    pic5 = (
        Liquid(init_opts=opts.InitOpts(theme=theme_config))
        .add("硬币数", [top3_coin_value / 10000.0], center=['80%', '50%'], is_outline_show=True,
             outline_border_distance=10,
             shape='roundRect')
        .set_global_opts(
            title_opts=opts.TitleOpts(title=f"Top3 对应的硬币数: {top3_coin_value}", pos_top='15%', pos_left='65%'))
    )

    grid = Grid(init_opts=opts.InitOpts(bg_color="#797A92")).add(pic3, grid_opts=opts.GridOpts(pos_bottom="60%")).add(
        pic4, grid_opts=opts.GridOpts(
            pos_bottom="30%")).add(pic5, grid_opts=opts.GridOpts())
    return grid

# 条形图
def make_bar1(view, like, share):
    attr = list(range(1, len(view) + 1))  # 假设使用数字作为 x 轴标签
    v1 = view
    v2 = like
    v3 = share

    bar = Bar(init_opts=opts.InitOpts(theme=theme_config))
    # 使用新的方法添加 x 轴和 y 轴数据
    bar.add_xaxis(attr)
    bar.add_yaxis("播放量", v1)
    bar.overlap(
        Bar().add_xaxis(attr).add_yaxis("点赞量", v2, category_gap="50%"),  # 通过 overlap 添加多个 y 轴数据,并设置类别间距
    )
    bar.overlap(
        Bar().add_xaxis(attr).add_yaxis("分享量", v3, category_gap="50%"),  # 同上
    )
    return bar
Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐