基于阿里云平台的大数据教学案例 —— B站弹幕数据分析

简介: 实验基于所学的大数据处理知识,结合阿里云大数据相关产品,分组完成一个大数据分析项目,数据集可以使用开源数据集或自行爬取,最终完成一个完整的实验报告:1、 能够使用阿里云大数据相关产品完成数据分析、数据建模与模型优化2、 能够基于分析结构构建可视化门户或可视化大屏,分析和呈现不少于5个3、 分析案例有实用价值并能够形成有效结论4、 能够将开源技术与阿里云产品结合,综合利用提升开发效率,降低成本5、 能够完成数据分析报告和结果展示

一、实验题目
基于所学的大数据处理知识,结合阿里云大数据相关产品,分组完成一个大数据分析项目,数据集可以使用开源数据集或自行爬取,最终完成一个完整的实验报告:
1、 能够使用阿里云大数据相关产品完成数据分析、数据建模与模型优化
2、 能够基于分析结构构建可视化门户或可视化大屏,分析和呈现不少于5个
3、 分析案例有实用价值并能够形成有效结论
4、 能够将开源技术与阿里云产品结合,综合利用提升开发效率,降低成本
5、 能够完成数据分析报告和结果展示

二、实验目的
灵活利用所学的阿里云大数据相关技术和大数据处理知识,综合完整地完成一个大数据分析项目。

三、实验难点
SQL语句有点难,机器学习预测不好调整。数据太多人工清洗有点难度。

四、实验过程(截图)
首先要观察数据集的各个属性,了解数据的梗概和特点。本次,我们研究的是B站弹幕文化,机器应用场景。
爬取数据的代码如下:

import csv
import time

import requests
from bs4 import BeautifulSoup
url = "https://api.bilibili.com/x/v1/dm/list.so?oid=132084205"
csv_headers = ['弹幕内容','发送位置','发送时间','弹幕类型','弹幕字体大小','发送者id']
# print(response.content)
# divs = soup.find_all(_class = "threadlist_title pull_left j_th_tit ")
# for div in divs:
#     print(str(div))
#     print(div.a["href"])
headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:39.0) Gecko/20100101 Firefox/39.0',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'en-US,en;q=0.5',
    'Accept-Encoding': 'gzip, deflate',
    'Connection': 'close'
}
def get_page(url):
    # threadLock.acquire()
    # start_request = True
    NETWORK_STATUS = True
    response = requests.get(url,headers=headers,verify=True,timeout=20)
    # threadLock.release()
    if response.status_code == 200:
        # start_request = False
        return response.content
    else:
        print('error')

def parse_page(html):
    soup = BeautifulSoup(html,'lxml')
    ds = soup.find_all('d')
    # print(len(ds))
    for d in ds:
        rows = []
        text = d.text
        p = str(d['p'])
        attrs = p.split(',')
        time_sec = int(attrs[0].split('.')[0])
        time_int = int(time_sec/60)
        time_float = time_sec%60
        mytime = str(time_int) + '分' + str(time_float) + '秒'
        # print(time)
        if int(attrs[1]) == 4:
            type = "底部弹幕"
        elif int(attrs[1]) == 5:
            type = "顶部弹幕"
        elif int(attrs[1]) == 6:
            type = "逆向弹幕"
        elif int(attrs[1]) == 7:
            type = "精准定位"
        elif int(attrs[1]) == 8:
            type = "高级弹幕"
        else:
            type = "普通弹幕"
        fint_size = attrs[2]
        timeArray = time.localtime(int(attrs[4]))
        date = time.strftime("%Y--%m--%d %H:%M:%S", timeArray)
        id = attrs[6]
        rows.append([text,mytime,date,type,fint_size,id])
        save_to_csv('b站弹幕(BV1He41147Rs).csv',rows)
        print(text + ' ' + mytime + ' ' + date + ' ' + type + ' ' + fint_size + ' ' + id)


def save_to_csv(csv_name,rows):
    # is_exist = False
    # if os.path.exists(csv_name):
    #     is_exist = True
    with open(csv_name, 'a',encoding='utf-8',newline='')as f:
        # if is_exist is False:
        #     f_csv = csv.writer(f)
        #     f_csv.writerow(csv_headers)
        f_csv = csv.writer(f)
        f_csv.writerows(rows)

def main():
    html = get_page(url)
    # print(html)
    parse_page(html)

if __name__ == '__main__':
    with open('b站弹幕(BV1He41147Rs).csv', 'a',encoding='utf-8-sig',newline='')as f:
        # if is_exist is False:
        #     f_csv = csv.writer(f)
        #     f_csv.writerow(csv_headers)
        f_csv = csv.writer(f)
        f_csv.writerow(csv_headers)
    main()

将相关表和数据导入DataWorks,并进行相关部署。
image.png

各种弹幕的发送时间

通过统计各类弹幕发送时间来确定哪个时间段的内容更受观众的欢迎。
image.png
各个弹幕的大小
通过统计各个弹幕发送的不同大小可以看出更多的人会选择使用移动观看,移动端观看BILIBILI已经很普遍了
image.png
各个弹幕的发送位置
可以看出更多的人发的是普通弹幕,少数人会发送更加精准的顶部弹幕和底部弹幕。
image.png
image.png
机器学习建模及预测
image.png
image.png
混淆矩阵
image.png
精准率=tp/(tp+fp)=100/(10+100)=0.909
召回率=tp/(tp+fn)=100/(100+5)=0.95
五、 结论
通过实验,我们组发现更多的人还是选择在移动端观看视频,移动观看视频已经是人们的首选了。
其次我们发现人们更喜欢新兰CP和酒厂,因为在这个时间段发送的弹幕最多,因此我们可以认为在有这两个作为封面时,可以吸引更多的人观看视频,或者以这几个人作为周边可以卖的会更好。
最后我们发现,更多的人发送的弹幕是普通弹幕,而极少数人会选在固定的时间发送顶部弹幕或者底部弹幕,证明大多数人不会去特意调整弹幕位置。

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
8月前
|
数据可视化 关系型数据库 MySQL
基于python大数据的的海洋气象数据可视化平台
针对海洋气象数据量大、维度多的挑战,设计基于ECharts的可视化平台,结合Python、Django与MySQL,实现数据高效展示与交互分析,提升科研与决策效率。
|
8月前
|
数据可视化 大数据 关系型数据库
基于python大数据技术的医疗数据分析与研究
在数字化时代,医疗数据呈爆炸式增长,涵盖患者信息、检查指标、生活方式等。大数据技术助力疾病预测、资源优化与智慧医疗发展,结合Python、MySQL与B/S架构,推动医疗系统高效实现。
|
8月前
|
机器学习/深度学习 搜索推荐 数据挖掘
数据分析真能让音乐产业更好听吗?——聊聊大数据在音乐里的那些事
数据分析真能让音乐产业更好听吗?——聊聊大数据在音乐里的那些事
349 9
|
8月前
|
传感器 人工智能 监控
拔俗多模态跨尺度大数据AI分析平台:让复杂数据“开口说话”的智能引擎
在数字化时代,多模态跨尺度大数据AI分析平台应运而生,打破数据孤岛,融合图像、文本、视频等多源信息,贯通微观与宏观尺度,实现智能诊断、预测与决策,广泛应用于医疗、制造、金融等领域,推动AI从“看懂”到“会思考”的跃迁。
661 0
|
9月前
|
人工智能 分布式计算 DataWorks
阿里云大数据AI产品月刊-2025年8月
阿里云大数据& AI 产品技术月刊【2025年 8 月】,涵盖 8 月技术速递、产品和功能发布、市场和客户应用实践等内容,帮助您快速了解阿里云大数据& AI 方面最新动态。
670 2
|
9月前
|
数据可视化 数据挖掘 大数据
基于python大数据的水文数据分析可视化系统
本研究针对水文数据分析中的整合难、分析单一和可视化不足等问题,提出构建基于Python的水文数据分析可视化系统。通过整合多源数据,结合大数据、云计算与人工智能技术,实现水文数据的高效处理、深度挖掘与直观展示,为水资源管理、防洪减灾和生态保护提供科学决策支持,具有重要的应用价值和社会意义。
|
9月前
|
存储 分布式计算 资源调度
【赵渝强老师】阿里云大数据MaxCompute的体系架构
阿里云MaxCompute是快速、全托管的EB级数据仓库解决方案,适用于离线计算场景。它由计算与存储层、逻辑层、接入层和客户端四部分组成,支持多种计算任务的统一调度与管理。
790 1
|
监控 安全 数据可视化
java基于微服务的智慧工地管理云平台SaaS源码 数据大屏端 APP移动端
围绕施工现场人、机、料、法、环、各个环节,“智慧工地”将传统建筑施工与大数据物联网无缝结合集成多个智慧应用子系统,施工数据云端整合分析,提供专业、先进、安全的智慧工地解决方案。
452 1
|
机器学习/深度学习 算法 数据可视化
基于Google Earth Engine云平台构建的多源遥感数据森林地上生物量AGB估算模型含生物量模型应用APP
基于Google Earth Engine云平台构建的多源遥感数据森林地上生物量AGB估算模型含生物量模型应用APP
949 0