当前位置:   article > 正文

毕业设计:基于B站用户行为分析系统 哔哩哔哩 bilibili 数据可视化 Django框架(源码+文档)✅_哔哩哔哩用户数据分析

哔哩哔哩用户数据分析

博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌感兴趣的可以先收藏起来,点赞、关注不迷路✌

毕业设计:2023-2024年计算机毕业设计1000套(建议收藏)

毕业设计:2023-2024年最新最全计算机专业毕业设计选题汇总

1、项目介绍

技术栈:
Python语言、Django框架、MySQL数据库、Echarts可视化

功能模块:
(1)账号信息,用户能够在账号信息中看到自己的个人信息情况;
(2)up主分析,在该分析内容中,可以通过图表的方式分析出up主最喜爱发布的视频类型、up主最喜爱发布的视频标签、up主的粉丝数、获赞总数、总播放数、阅读数、当前这个up主发布视频的时间规律等内容,这些内容都会以图表的方式来进行展示。
(3)用户分析,在用户的分析中,可以看到对于B站用户最喜爱互动的视频类型、用户最爱与朋友分享的视频类型以及用户最爱收藏和三连的视频类型进行图表的分析展示。
(4)综合分析,在综合分析中,可以看到整个B站内的视频发布图,在发布图中还能够进行时间单位的切换,可以查看小时、星期、月份等不同的时间单位下的视频发布量展示。综合分析中还有粉丝榜、播放榜、标签榜等内容的展示,可以通过三维图的方式来进行相关的内容展示。
(5)多维分析,在多维分析中,可以让用户进行多维的内容分析,按照用户的需求来进行分析使用。

2、项目界面

(1)up主分析
当进入到up主分析的页面时,可以看到按照设计的需求,能够在up主的分析中通过柱状图和折线图的方式来进行相关的数据分析。在该页面中能够看到up主最喜爱发布的视频类型统计,有搞笑、家庭等内容分析,在当前up主发布视频的时间规律上,可以看到有以星期和发布数量形成的X轴和Y轴,并且有折线图来进行每天发布视频数量的信息数据统计,如下图所示:
在这里插入图片描述

(2) 综合分析
在综合分析中,可以看到有三个不同的统计口径,分别为按时、按周和按月三个选择,以下图为例,在按时进行统计时,在柱状图的分析中能够看到该网站内UP主视频发布的数量统计分析,在该图中可以看出7点左右是视频发布数量最多的时段。而在前二十的排名中,可以有视频标签类型的排名,可以看出娱乐的视频发布的数量最多。在平均播放量上,综艺的平均播放量最高。在总播放量上,育婴、美食的播放量相对较高。而在粉丝数量的排名上,也能够看到具体的up主的粉丝数量排名。如下图所示:
在这里插入图片描述

(3)多维分析
在多维分析中,系统会根据视频量、播放量以及粉丝量三个指标来进行维度的分析,通过以点状图的方式来进行内容的展示工作,多维分析的界面展示如下图所示:
在这里插入图片描述

(4)排名分析
在排名分析中,有五张柱状图来进行不同内容的分析,包括了up主粉丝量的排名、up主播放总量的排名、up主视频投稿数量排名、up主阅读量排名以及最有实力的up主的展示。排名分析能够将以up主为主要的分析目标来实现完整的内容分析工作。排名分析展示如下:

在这里插入图片描述

3、项目说明

近年来,互联网技术的不断发展,网络用户的人数增长的非常快,网络数据也成倍的增长,这些网络数据可以为互联网企业提供很高的商业价值,互联网企业通过数据分析能够更好的了解用户的需求,并且能够根据用户的需求来进行经营政策的决定,能够通过精准的定位实现对整个企业的价值创造服务。
本次是通过利用Python技术来进行一款系统数据分析的系统,以B站数据为数据源,通过大数据分析来对B站中的UP主账号进行数据可视化的方式。在数据可视化中,可以通过本次的系统开发来进行UP最喜欢发布的视频类型、视频标签以及对UP主的粉丝数、获赞数等进行柱状图等图形模式来进行分析。另外,本次的设计还需要通过对用户观看视频的内容等进行分析,包括喜欢互动、喜欢分享以及一键三联的视频类型。通过此次的分析,可以将粉丝榜、播放榜等进行均量和总量的图形展示。为有需要的企业提供了数据支持,为对应UP主和用户的观影行为提供了有效的数据分析参考。
关键词:大数据;数据分析;B站;视频类型分析

4、核心代码


def user_analysis(request):
    fav_type_obj = models.UsrAnl.objects.extra(select={'fav_type': "fav_type"}).values(
        "fav_type").annotate(count=Count("id")).order_by()
    fav_type_obj_type = []
    fav_type_obj_count = []
    for j in fav_type_obj:
        fav_type_obj_type.append(j['fav_type'])
        fav_type_obj_count.append(j['count'])
    fav_share_obj = models.UsrAnl.objects.extra(select={'fav_share': "fav_share"}).values(
        "fav_share").annotate(count=Count("id")).order_by()
    fav_share_obj_type = []
    fav_share_obj_count = []
    for j in fav_share_obj:
        fav_share_obj_type.append(j['fav_share'])
        fav_share_obj_count.append(j['count'])
    fav_obj = models.UsrAnl.objects.extra(select={'fav_bp': "fav_bp"}).values(
        "fav_bp").annotate(count=Count("id")).order_by()
    fav_collect = models.UsrAnl.objects.extra(select={'fav_collect': "fav_collect"}).values(
        "fav_collect").annotate(count=Count("id")).order_by()
    fav_sl = models.UsrAnl.objects.extra(select={'fav_sl': "fav_sl"}).values(
        "fav_sl").annotate(count=Count("id")).order_by()
    fav_obj_type = []
    fav_obj_count = []
    print(fav_obj,fav_sl,fav_collect)
    fav_co1 = {}
    for i in fav_collect:
        fav_co1[i['fav_collect']]=i['count']
    fav_bp1 = {}
    for i in fav_obj:
        fav_bp1[i['fav_bp']]= i['count']
    fav_sl1 = {}
    for i in fav_sl:
        fav_sl1[i['fav_sl']]= i['count']
    print(fav_co1,fav_bp1,fav_sl1)
    print(type(fav_co1))
    b = dict_union(fav_co1,fav_bp1)
    c = dict_union(b,fav_sl1)
    print(c)
    three_type = []
    three_count =[]
    for key,value in c.items():
        three_count.append(value)
        three_type.append(key)
    print(three_type,three_count)
    for j in fav_obj:
        fav_obj_type.append(j['fav_bp'])
        fav_obj_count.append(j['count'])
    return render(request, 'user_analysis.html',locals())

def dict_union(d1, d2):
    keys = d1.keys() | d2.keys()
    temp = {}
    for key in keys:
        temp[key] = sum([d.get(key, 0) for d in (d1, d2)])
    return temp

def up_analysis(request):
    current_user = models.TimeW.objects.filter(name=request.user.username).first()
    current_user_data_x = [current_user.mon, current_user.tue, current_user.web, current_user.thur, current_user.fri,
                           current_user.sat, current_user.sun]
    current_user_data_y = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']
    up_anl_obj = models.UpAnl.objects.all()
    up_anl_obj_list = [['products', '粉丝数', '获赞总数', '总播放数', '阅读数']]
    for i in up_anl_obj:
        a = [i.name, i.fan_num, i.total_fan, i.total_st, i.read_num]
        up_anl_obj_list.append(a)
    fav_type_obj = models.UpAnl.objects.extra(select={'fav_type': "fav_type"}).values(
        "fav_type").annotate(count=Count("id")).order_by()
    fav_type_obj_type = []
    fav_type_obj_count = []
    for j in fav_type_obj:
        fav_type_obj_type.append(j['fav_type'])
        fav_type_obj_count.append(j['count'])

    fav_tag_obj = models.UpAnl.objects.extra(select={'fav_tag': "fav_tag"}).values(
        "fav_tag").annotate(count=Count("id")).order_by()
    fav_tag_obj_type = []
    fav_tag_obj_count = []
    for j in fav_tag_obj:
        fav_tag_obj_type.append(j['fav_tag'])
        fav_tag_obj_count.append(j['count'])
    return render(request, 'up_analysis.html', locals())

# 弹幕词云分析
def wordcloud(request):
    results = models.UpAnl.objects.extra(select={'fav_tag': "fav_tag"}).values(
        "fav_tag").annotate(count=Count("id")).order_by()
    cloud = []
    for result in results:
        cloud.append({"name":result['fav_tag'],"value":result["count"]})
    return render(request, 'wordcloud.html', locals())


def test_analysis(request):
    results = models.UpAnl.objects.all()
    names = []
    fan_count = []
    bf_count =[]
    tg_count = []
    total_count = []
    read_count =[]
    for i in results:
        names.append(i.name)
        fan_count.append([i.name,int(i.fan_num)])
        bf_count.append([i.name,i.total_st])
        tg_count.append([i.name,i.total_vi])
        read_count.append([i.name,i.read_num])
        total_count.append([i.name,int(i.fan_num)+int(i.read_num)+int(i.total_vi)+int(i.total_st)])

    return render(request,'test_analysis.html',locals())

def three_analysis(req):
    results = models.UpAnl.objects.all()
    lists=[]
    for i in results:
        lists.append([int(i.total_vi),int(i.total_st),int(i.fan_num),i.name])
    return render(req,'three_analysis.html',locals())

def all_analysis(req):
    results = models.TotalW.objects.all()
    time_w_lists=[]
    time_w = ['星期一','星期二','星期三','星期四','星期五','星期六','星期日']
    for i in results:
        time_w_lists.append(int(i.mon))
        time_w_lists.append(int(i.tue))
        time_w_lists.append(int(i.web))
        time_w_lists.append( int(i.thur))
        time_w_lists.append(int(i.fri))
        time_w_lists.append(int(i.sat))
        time_w_lists.append(int(i.sun))

    results = models.TotalM.objects.all()
    total_m_lists = []
    total_m = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']
    for i in results:

    results = models.TotalH.objects.all()
    total_h_lists = []
    total_h = ['1:00', '2:00', '3:00', '4:00','5:00', '6:00','7:00', '8:00','9:00', '10:00','11:00', '12:00','13:00', '14:00','15:00', '16:00','17:00', '18:00','19:00', '20:00','21:00', '22:00','23:00', '24:00',]
    for i in results:
    tag_name = []
    tag_list = []
    results = models.Bq.objects.all()
    for i in results:
        tag_name.append(i.tag)
        tag_list.append(int(i.num))
    tag_avg_name = []
    tag_avg_list = []
    results = models.BqAvlStTop.objects.all()
    for i in results:
        tag_avg_name.append(i.tag)
        tag_avg_list.append(int(i.num))
    tag_total_name = []
    tag_total_list = []
    results = models.BqStTop.objects.all()
    for i in results:
        tag_total_name.append(i.tag)
        tag_total_list.append(int(i.num))
    fans_name = []
    fans_list = []
    bf_list = []
    results = models.UpAnl.objects.all()
    for i in results:
        fans_name.append(i.name)
        fans_list.append(int(i.fan_num))

    return render(req,'all_analysis.html',locals())



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/719839
推荐阅读
相关标签