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

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 实验基于所学的大数据处理知识,结合阿里云大数据相关产品,分组完成一个大数据分析项目,数据集可以使用开源数据集或自行爬取,最终完成一个完整的实验报告: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的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
2月前
|
SQL 存储 分布式计算
ODPS技术架构深度剖析与实战指南——从零开始掌握阿里巴巴大数据处理平台的核心要义与应用技巧
【10月更文挑战第9天】ODPS是阿里巴巴推出的大数据处理平台,支持海量数据的存储与计算,适用于数据仓库、数据挖掘等场景。其核心组件涵盖数据存储、计算引擎、任务调度、资源管理和用户界面,确保数据处理的稳定、安全与高效。通过创建项目、上传数据、编写SQL或MapReduce程序,用户可轻松完成复杂的数据处理任务。示例展示了如何使用ODPS SQL查询每个用户的最早登录时间。
123 1
|
20天前
|
存储 分布式计算 大数据
【赵渝强老师】阿里云大数据生态圈体系
阿里云大数据计算服务MaxCompute(原ODPS)提供大规模数据存储与计算,支持离线批处理。针对实时计算需求,阿里云推出Flink版。此外,阿里云还提供数据存储服务如OSS、Table Store、RDS和DRDS,以及数据分析平台DataWorks、Quick BI和机器学习平台PAI,构建全面的大数据生态系统。
62 18
|
8天前
|
人工智能 安全 Linux
|
29天前
|
SQL 数据采集 分布式计算
【赵渝强老师】基于大数据组件的平台架构
本文介绍了大数据平台的总体架构及各层的功能。大数据平台架构分为五层:数据源层、数据采集层、大数据平台层、数据仓库层和应用层。其中,大数据平台层为核心,负责数据的存储和计算,支持离线和实时数据处理。数据仓库层则基于大数据平台构建数据模型,应用层则利用这些模型实现具体的应用场景。文中还提供了Lambda和Kappa架构的视频讲解。
113 3
【赵渝强老师】基于大数据组件的平台架构
|
20天前
|
人工智能 安全 Linux
|
1月前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
28天前
|
并行计算 数据挖掘 大数据
Python数据分析实战:利用Pandas处理大数据集
Python数据分析实战:利用Pandas处理大数据集
|
2月前
|
机器学习/深度学习 监控 搜索推荐
电商平台如何精准抓住你的心?揭秘大数据背后的神秘推荐系统!
【10月更文挑战第12天】在信息爆炸时代,数据驱动决策成为企业优化决策的关键方法。本文以某大型电商平台的商品推荐系统为例,介绍其通过收集用户行为数据,经过预处理、特征工程、模型选择与训练、评估优化及部署监控等步骤,实现个性化商品推荐,提升用户体验和销售额的过程。
88 1
|
15天前
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
48 4
数据分析的 10 个最佳 Python 库
|
4月前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
88 2