社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python解读:五月天线上演唱会刷屏!这里有你的青春吗?

CDA数据分析师 • 3 年前 • 232 次点击  

 



 CDA数据分析师 出品  

作者:泽龙、Mika

数据:真达  

后期:泽龙

【导语】:今天我们来聊聊五月天这场刷屏朋友圈的线上演唱会,Python技术部分请看第四部分 公众号后台,回复关键字“五月天”获取完整数据。

Show me data,用数据说话

今天我们聊一聊 五月天

点击下方视频,先睹为快:


在五月的最后一天,五月天实现了他们2020年的“五月之约”。5月31日 一场席卷朋友圈的线上演唱会如约上演。

 

空荡的体育馆,数万根银光棒,一个乐队独自在开狂欢的party ,感觉最近真的被蛋黄长裙洗脑了,深陷Jony J 魔咒。

 


好,让我们言归正传。五月天实现了5月的约定,歌迷满足了娱乐填补内心空虚的需求,要不真的要去摆地摊了,所以这场演唱也是瞬间火遍了全网,朋友圈刷屏的都是“五月天线上演唱会”。

虽然只有短短一个小时,没有安可的喊声,但是现场的效果还是非常好的。五月天唱着青春、梦想,唱着自己的人生经历,而身处人生各个阶段、怀着各种心情的歌迷,似乎都能找到共鸣,得到激励。

 

那么五月天的线上演唱会里,有你的青春吗?下面让我们用数据说话。

 


01


豆瓣9.4分 

这场线上演唱会到底多好看?

 

首先让我们看到豆瓣上的数据:

 

截止到目前为止,五月天的这次线上演唱会共有10万余人进行了评价,目前豆瓣评分为9.4分,是非常高的成绩了。


豆瓣评分分布

进一步分析可以看到,评论中有68.4%的人给出了满分5星,其次24.2%的人给出了4星。


豆瓣评论词云图

豆瓣评论中大家都在说些什么呢?可以看到 "太短"是大家的统一呼声,这样的演唱会一个小时实在是太短了,还有歌迷感叹到 “五月天的演唱会就像我的青春,猝不及防结束了。”与此同时"青春"、"感动"、"永远"等也是常出现的高频词。


02



喜欢五月天的都是哪些人?

 

那么喜欢五月天的都是哪些人呢?最后让我们看到五月天微博的粉丝画像,我们一共收集整理的微博评论和粉丝数据在去重后,分别是4288条和4213条。


微博粉丝性别占比

首先在性别占比方面,五月天的粉丝中女歌迷是主力,占到了79.84%,男歌迷占比20.16%。


微博粉丝地区分布

在粉丝分布方面,广东省是最多的位居榜首,其次身处海外的歌迷也不少,位居第二。北京、浙江、江苏分别位居三四五名。


微博粉丝年龄分布

粉丝的年龄分布方面,不用想,90后妥妥的占到了绝大多数,占比高达71.11%。其次是00后,占比12.74,80后位居第三7.88%。粉丝中也不乏一些10后,占比4.81%。

 


03



线上开唱1小时 

3500万人在线同步观看

 

我们整理分析了QQ音乐上五月天的评论数据,去重之后得到7126条样本。下面先看到结论:

 

评论实时走势图

 

可以看到,在整体评论的实时走势图来看:关于五月天的评论留言在5月31日线上演唱会当天达到顶峰,之后逐步回落,趋于平稳。

 

整体评论词云

那么评论中大家都在说些什么呢?


看到整体评论的词云图,我们发现在当中"喜欢"、"希望"、"感动" 都是出现频率特别高的词;还有就是"青春"这个词也多次出现,的确,尤其对于90后来说,五月天就是我们这一代人的青春记忆。


同时关于本次线上演唱会也是讨论的焦点,比如"直播"、"现场"、"回放"等都被大家提及。与此同时,《知足》、《倔强》等歌也在评论中多次出现,这些也是最让人产生共鸣的歌曲。


评论中关注成员对比

 

那么五月天的成员中,大家关注度最高的是哪位成员呢?没错,在这方面,阿信是毫无悬念的第一位。其他几位成员冠佑、怪兽、石头和玛莎的关注度就差不多了,平分秋色。


阿信评论词云图

关于阿信的评论大家都在说些什么?看到词云图,最主要的就是"喜欢"、"希望"、表达歌迷对阿信的喜爱和美好祝愿的,其次还提到其他几个乐队成员,有意思的是提"前女友"的也特别多。

 

评论关注歌曲对比


五月天的金曲实在是太多太多了,哪些歌曲是最受大家关注的呢?


通过分析整理可以看到,提到最多的就是《突然好想你》了,然后就是《知足》《倔强》。除此之外,还有《我不愿让你一个人》《星空》《盛夏光年》等等,全都是耳熟能详的名曲。

 


04



教你用Python分析

QQ音乐评论数据 

 

我们使用Python分别获取了QQ音乐五月天/TME live评论数据、豆瓣短评数据和微博乐高中国的评论和粉丝数据,进行了数据分析。此处展示QQ音乐评论分析部分关键代码,整体的分析流程如下:


  1. 评论数据获取

  2. 数据预处理

  3. 数据可视化分析

 

01 数据获取

首先,我们获取五月天/TME live的评论数据,地址如下:

https://y.qq.com/n/yqq/mv/v/k0034mj6ty2.html


通过分析网页可以发现,评论的数据是通过js进行动态加载的,使用chrome浏览器简单的抓包分析,得到真实的数据传输接口,通过精简网址并修改其中的pageSize参数即可得到所有的数据。


 

代码如下:

# 导入包
import pandas as pd 
import time  
import requests
import json
from faker import Factory 

def get_qq_comment(page_num):
    """
    功能:传入页面数,获取QQ音乐评论数据。
    """

    # 存储数据
    df_all = pd.DataFrame()

    for i in range(page_num):
        # 打印进度
        print('我正在获取第{}页的信息'.format(i))

        # 获取URL
        url = 'https://c.y.qq.com/base/fcgi-bin/fcg_global_comment_h5.fcg?g_tk_new_20200303=1516279237&g_tk=470981629&loginUin=2315561922&hostUin=0&format=json&inCharset=utf8&outCharset=GB2312&notice=0&platform=yqq.json&needNewCode=0&cid=205360772&reqtype=2&biztype=5&topid=k0034mj6ty2&cmd=8&needmusiccrit=0&pagenum={}&pagesize=25&domain=qq.com&ct=24&cv=10101010'.format(i)

        # 添加headers
        headers = {
            'user-agent': Factory.create().user_agent()
        }

        # 发起请求
        r = requests.get(url, headers=headers) 

        # 解析网页
        json_data = json.loads(r.text)

        # 获取数据
        comment_list = json_data['comment']['commentlist']
        # 昵称
        nick_name = [i.get('nick'for i in comment_list]
        # 评论内容
        content =  [i.get('rootcommentcontent'for i in comment_list]
        # 评论时间
        comment_time = [i.get('time'for i in comment_list]

        # 存储数据
        df = pd.DataFrame({
            'nick_name': nick_name,
            'content': content,
            'comment_time': comment_time
        })

        # 追加数据
        df_all = df_all.append(df, ignore_index=True)

        # 休眠一秒
        time.sleep(1

    return df_all

if __name__ == '__main__':
    # 运行函数
    df = get_qq_comment(page_num=286)


通过以上程序,获取到7127条评论数据。获取数据格式如下所示:


df.head()



02 读入数据和数据预处理


此处我们主要对以上获取的数据集进行整理和清洗。工作包含:


  1. 检查重复值和空值

  2. comment_time:将时间戳转换成标准的时间格式

  3. content:替换错误值


# 导入所需包
import numpy as np
import re
import jieba

# 读入数据
df = pd.read_excel('../data/五月天QQ评论数据6.05.xlsx')

# 删除重复值
df = df.drop_duplicates()

# 转换函数
def transform_time(time_second):
    time_array = time.localtime(time_second)
    otherStyleTime = time.strftime('%Y-%m-%d %H:%M:%S', time_array) 
    return otherStyleTime

# 时间数据处理
df['comment_time'] = df['comment_time'].apply(lambda x: transform_time(x))

# content初步处理
pattern = re.compile('\[em\](.*?)\[/em\]')
df['content'] = df.content.str.replace(pattern, '')
df.head() 



03 数据可视化分析


接下来我们使用数据可视化库pyecharts进行以下的数据可视化分析,词云工具使用stylecloud库。

# 导入库
from pyecharts.charts import Pie, Bar, Map, Line, WordCloud, Page
from pyecharts import options as opts
from pyecharts.globals import SymbolType
import stylecloud


五月天QQ音乐评论日期走势图

# 日期数量
df['comment_time'] = pd.to_datetime(df['comment_time'])

day_num = df.comment_time.astype('str').str.split(':').str[0 ].value_counts().sort_index()

# 产生数据
x1_line1 = [i.split('2020-')[1for i in day_num.index.values.tolist()]
y1_line1 = day_num.values.tolist()

# 绘制面积图
line1 = Line(init_opts=opts.InitOpts(width='1350px', height='750px'))
line1.add_xaxis(x1_line1)
line1.add_yaxis('', y1_line1,
                markpoint_opts=opts.MarkPointOpts(data=[
                    opts.MarkPointItem(type_='max', name='最大值'),
                    opts.MarkPointItem(type_='min', name='最小值')
                ])) 
line1.set_global_opts(title_opts=opts.TitleOpts('五月天QQ音乐评论日期走势图'), 
                      xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate='90')),
                      visualmap_opts=opts.VisualMapOpts(max_=2000)
                     ) 
line1.set_series_opts(label_opts=opts.LabelOpts(is_show=False), 
                      linestyle_opts=opts.LineStyleOpts(width=3))
line1.render() 


QQ音乐评论中关注歌手对比

# 计数
axin = df.content.str.contains('阿信|陈信宏').sum()  
guaishou = df.content.str.contains('温尚翊|阿翊|怪兽|团长').sum()  
shitou = df.content.str.contains('石锦航|石头').sum()  
masha = df.content.str.contains('蔡升晏|玛莎').sum()  
guanyou = df.content.str.contains('刘冠佑|冠佑|刘谚明|刘浩明').sum()  

actor_list = ['阿信''怪兽''石头''玛莎''冠佑']
actor_num = [int(axin), int(guaishou), int(shitou), int(masha), int(guanyou)]

# 条形图
bar1 = Bar(init_opts=opts.InitOpts(width='1350px', height='750px'))
bar1.add_xaxis(actor_list)
bar1.add_yaxis('', actor_num)
bar1.set_global_opts(title_opts=opts.TitleOpts(title='QQ音乐评论中关注歌手对比'), 
                     visualmap_opts=opts.VisualMapOpts(max_=150),
                    ) 
bar1.render() 


QQ音乐评论中关注歌曲对比

# 歌曲名称
music_list = ['一颗苹果''盛夏光年''孙悟空' '星空''我不愿让你一个人',
'派对动物''离开地球表面''突然好想你''爱情的模样''恋爱ing',
'知足''诺亚方舟''倔强']

music_num = [int(df.content.str.contains(pattern).sum()) for pattern in music_list]

# 创建df
df_music = pd.DataFrame({
    'music_name': music_list,
    'music_num': music_num
}).sort_values('music_num'ascending=True) 

# 条形图
bar2 = Bar(init_opts=opts.InitOpts(width='1350px', height='750px'))
bar2.add_xaxis(df_music.music_name.values.tolist())
bar2.add_yaxis('', df_music.music_num.values.tolist()) 
bar2.set_global_opts(title_opts=opts.TitleOpts(title='QQ音乐评论中关注歌曲对比'), 
                     visualmap_opts=opts.VisualMapOpts(max_=307),
                    )
bar2.set_series_opts(label_opts=opts.LabelOpts(position='right'))
bar2.reversal_axis()
bar2.render() 


QQ评论整体词云图

stylecloud.gen_stylecloud(text=' '.join(text_all),  # text需要是str类型
                          max_words=1000,
                          collocations=False,
                          font_path=r'‪C:\Windows\Fonts\msyh.ttc',
                          icon_name='fas fa-comments',
                          size=768,
                          output_name='QQ音乐评论整体词云图.png'
                         )


关注CDA数据分析师公众号
回复关键字“五月天” 
获取详细数据代码

CDA数据分析师 


本文出品:CDA数据分析师(ID: cdacdacda)


📚推荐阅读 READ MORE


(点击下方图片阅读)

仅拍125个视频就成为千万级网红?李子柒的视频都在拍些什么?


 

📌CDA课程咨询


喜欢本篇内容请点个“在看”哦!❤️

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/64340
 
232 次点击