【导语】:今天我们来聊聊周杰伦的新歌《Mojito》,Python技术部分请看第三部分Show me data,用数据说话

6月12日0:00,周杰伦的最新单曲《Mojito》正式上线。对周杰伦歌迷来说,这一天简直就是过年了。因为距离周杰伦上一次发歌,已经过去了半年时间;而他的上一张专辑《周杰伦的床边故事》,已经是4年前的事情了。

这首以一种传统的古巴鸡尾酒命名的《Mojito》,前奏就充满浓浓的古巴风情和拉丁节奏,整首歌都写出在遇见爱情时令人神往的浪漫情调。尤其是令人惊艳的rap部分,不仅让人感叹我的青春回来了!

《Mojito》一经上线也是火爆全网,300多万人提前预约,一小时内销量破100万,这也直接导致 QQ 音乐崩溃。

今天我们就用数据来全方位解读一下,周杰伦的新歌《Mojito》。

1、豆瓣数据

首先我们分析整理了《Mojito》的豆瓣音乐数据,目前这首歌在豆瓣共有2万3千余人进行评价,分数为6.9分。

数据来源:豆瓣音乐短评

https://music.douban.com/subject/35093585/comments/

数据量:498条

虽然比起周董早年音乐的分数有一定差距,但是对比起近两年发布的《我是如此相信》《说好不哭》在豆瓣的6.3分和5.9分,这首mojito还是不错的。

再具体看到评分数据可以发现,给出3星的人最多,占比39.02%。其次是4星,21.84%。给出5星的占比16.49%。

我们进一步把给出1-2分的归类为负向评分,把4-5分的归为正向评分。

分别对比负向的正向的词云,我们可以看到:

在负向评价中,提到最多的就是"失望"、"难听"、"编曲"。正向评价中,大多数人都表示"好听"、"有夏天"的感觉、"喜欢"。有意思的是,无论正向负向评价都提到了充满异域风情的《Mojito》很容易让人联想到当年周董的那首《迷迭香》。

2、微博数据

接下来我们分析了周杰伦中文网在微博发布的mojito mv的评论数据。

微博:周杰伦中文网JayCn发布的《Mojito》MV

https://weibo.com/1165631310/J6cxJ67HC?filter=hot&root_comment_id=0&type=comment

数据集大小(去重之后):

  • 评论数据:9976条
  • 粉丝数据:9107条

分析发现,评论用户性别方面,女生占了绝大多数,占比78.82%。

而用户年龄方面,也是妥妥的90后的天下,占比高达74.91%。

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

可以看到大多数人都表示"好听"、"喜欢"、"很有夏天"的感觉。让人"单曲循环",特别"上头"。同时经典的周氏rap,也是整首歌的灵魂,一听就太有那味儿了!

3、教你用Python爬取QQ音乐评论数据

最后我们看到qq音乐的数据:

QQ音乐评论信息。

https://y.qq.com/n/yqq/album/0009C3rp3Kfwg0.html

数据量:20245

我们先看到结论

首先在实时评论走势图上可以看到,在歌发布的12日0时,评论人数最高,之后慢慢回落。

评论中也让人感叹"好听"、"青春回来了"。让歌迷们纷纷下单支持,毕竟上线一小时突破一百万张,让QQ 音乐软件一度崩溃,周董的影响力还是不容小觑的。

下面我们看到具体的步骤

我们使用Python分别获取了QQ音乐评论、豆瓣短评和微博相关的评论数据,进行了数据分析。此处我们展示QQ音乐评论分析部分。按照业务分析流程进行:

  1. 数据获取
  2. 数据处理
  3. 数据可视化

01 数据获取

首先打开QQ音乐,搜索Mojito。翻到评论区后,使用谷歌浏览器的检查功能,切换到Network部分,点击翻页进行网络抓包,很容易发现发现评论区的内容是被封装在json中的,如下图所示:

切换到headers处,找到请求URL地址,我们对请求地址进行精简和测试,得到评论数据请求的URL地址:

https://c.y.qq.com/base/fcgi-bin/fcg_global_comment_h5.fcg?biztype=2&topid=12924001&cmd=8pagenum=0&pagesize=25

其中参数pagenum代表页数,通过遍历即可获取所有数据,代码如下:

# 导入包
import pandas as pd
import time
import requests
import json
from fake_useragent import UserAgentdef get_qq_comment(page_num):# 存储数据df_all = pd.DataFrame()for i in range(page_num):# 打印进度print('我正在获取第{}页的信息'.format(i))# 获取URLurl = 'https://c.y.qq.com/base/fcgi-bin/fcg_global_comment_h5.fcg?biztype=2&topid=12924001&cmd=8pagenum={}&pagesize=25'.format(i)# 添加headersheaders = {'user-agent': UserAgent().random}# 发起请求try:r = requests.get(url, headers=headers)except Exception as e:print(e)continue# 解析网页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]# 点赞数praise_num = [i.get('praisenum') for i in comment_list]# 存储数据df = pd.DataFrame({'nick_name': nick_name,'content': content,'comment_time': comment_time,'praise_num': praise_num})# 追加数据df_all = df_all.append(df, ignore_index=True)# 休眠一秒time.sleep(1)return df_all# 运行函数
df = get_qq_comment(page_num=912) 

通过上述程序,共获取到截止6.13日22217条评论信息,数据集如下所示:

df.head()

02 数据读入和数据处理

读入数据集,并对获取的数据集进行清洗。

# 导入所需包
import jieba
import stylecloud
from pyecharts.charts import Pie, Bar, Map, Line, WordCloud, Page
from pyecharts import options as opts
from pyecharts.globals import SymbolType, WarningType
WarningType.ShowWarning = False# 读入数据
df = pd.read_excel('../data/QQ音乐评论数据6.13.xlsx')# 查看重复值和空值
print(df.duplicated().sum())
print(df.isnull().sum()) 

# 转换函数
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(r'[em](.*?)[/em]')
df['content'] = df.content.str.replace(pattern, '')
df.head() 

03 数据可视化分析

Mojito评论时间走势图

# 日期数量
comment_num = df.comment_time.str.split(':').str[0].value_counts().sort_index()
comment_num[:5]
2020-06-12 00    12673
2020-06-12 01     1185
2020-06-12 02      364
2020-06-12 03      146
2020-06-12 04       80
Name: comment_time, dtype: int64

# 产生数据
x_line1 = [i.replace('2020-','') for i in comment_num.index.to_list()]
y_line1 = comment_num.values.tolist()# 绘制面积图
line1 = Line(init_opts=opts.InitOpts(width='1350px', height='750px'))
line1.add_xaxis(x_line1)
line1.add_yaxis('', y_line1,markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_='max', name='最大值'),opts.MarkPointItem(type_='min', name='最小值')]))
line1.set_global_opts(title_opts=opts.TitleOpts('Mojito评论人数走势图'), xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate='30')),visualmap_opts=opts.VisualMapOpts(max_=12673))
line1.set_series_opts(label_opts=opts.LabelOpts(is_show=False), linestyle_opts=opts.LineStyleOpts(width=3))
line1.render() 

QQ音乐评论词云图

def get_cut_words(content_series):# 读入停用词表stop_words = [] with open(r"stop_words.txt", 'r', encoding='utf-8') as f:lines = f.readlines()for line in lines:stop_words.append(line.strip())# 添加关键词my_words = ['周杰伦', '一首歌', '好好听', '方文山', '30多岁']    for i in my_words:jieba.add_word(i) #     自定义停用词my_stop_words = ['歌有', '真的', '这首', '一首', '一点', '反正', '一段', '一句', '首歌', '啊啊啊', '哈哈哈', '转发', '微博', '那段', '他会']   stop_words.extend(my_stop_words)               # 分词word_num = jieba.lcut(content_series.str.cat(sep='。'), cut_all=False)# 条件筛选word_num_selected = [i for i in word_num if i not in stop_words and len(i)>=2]return word_num_selected

text1 = get_cut_words(content_series=df.content)
text1[:5]
['致敬', '久石', '人生', '旋转', '木马']

# 绘制词云图
stylecloud.gen_stylecloud(text=' '.join(text1), max_words=1000,collocations=False,font_path=r'‪C:WindowsFontsmsyh.ttc',icon_name='fas fa-music',size=624,output_name='./词云图/QQ音乐评论词云图.png')

CDA数据分析师 出品

作者:Mika

数据:真达

后期:泽龙

python六角星绘制_一小时销量破百万,Python告诉你周杰伦的《Mojito》到底有多火!...相关推荐

  1. python六角星_在Python中使用龟画出不同边长的六角星。

    希望我能解释得很好.我目前使用helper函数在python的turtle graphics窗口中绘制一个六角星.首先,我们必须创建一个绘制三角形的函数.这是我的代码:在Python中使用龟画出不同边 ...

  2. python六角星_python畫五角星和六角星程序

    1.五角星 import turtle turtle.forward(100) turtle.right(144) turtle.forward(100) turtle.right(144) turt ...

  3. 一小时销量破百万,Python告诉你周杰伦的《Mojito》到底有多火!

    ▼ 更多精彩推荐,请关注我们 ▼ 作者:Mika 数据:真达   后期:泽龙 [导语]:今天我们来聊聊周杰伦的新歌<Mojito>,Python技术部分请看第三部分.公众号后台,回复关键字 ...

  4. 六角星绘制-python实现

    代码: import turtle turtle.fillcolor('red') turtle.begin_fill() count=1 while count<=6:turtle.forwa ...

  5. wps单机无网络版_单平台销量破百万,这个国产单机系列要出网游,还要上主机...

    他们想做"国际顶级的单机游戏开发商". 文/彭子诚 作为一款国产单机游戏,<古剑奇谭三>在去年年底上市后,至今在 Steam 上依然保持着 83% 的好评率. 大量的玩 ...

  6. Python绘制六角星、多角星、小太阳、小风车《打包好的各种游戏源码,画图源码》

    绘制如下图的,多角图形.思路. (1)每个角是一个标准的等边三角形,把绘制等边三角形作为一个标准函数. (2)观察图形,可以看出,画的三角形在不断的旋转和移动,因此第一步找到三角形画法起始点的海龟头旋 ...

  7. Python如何绘制六角星

    这是第十一届蓝桥杯的一道考题,绘制一个中间是六边形的六角星. 今天我教一下大家怎么用turtle库绘制图形. import  turtle t=turtle.Pen() t.hideturtle() ...

  8. python绘制六角星外廓_Python之OpenGL笔记(32):正交投影画六角星

    一.目的 1.摄像机应用,正交投影画六角星: 二.程序运行结果 三.摄像机的设置 吴亚峰<OpenGL ES 3.x游戏开发>(上卷)内容 从日常生活的经验中可以很容易地了解到,随着摄像机 ...

  9. python绘制六角星_python画五角星和六角星程序 | 学步园

    1.五角星 import turtle turtle.forward(100) turtle.right(144) turtle.forward(100) turtle.right(144) turt ...

最新文章

  1. 解决SpringBoot多模块发布时99%的问题?SpringBoot发布的8个原则和4个问题的解决方案
  2. UNITY自带的3D object没有三角形?
  3. 客服机器人代码_企业微信群机器人如何快速集成?无需开发连接微信公众号,表单系统,钉钉,推广,CRM,客服系统和数据库...
  4. IdentityServer的基本概念与特性
  5. 2017-2018 20155309 南皓芯 信息安全基础设计第八周博客
  6. 黑马程序员-android视频播放器
  7. 打印工资条怎么做到每个人都有表头明细_使用工资条生成器,“智”作工资条...
  8. 蔡学镛力荐,本人作品《Java虚拟机精讲》上市
  9. 企业实践|分布式系统可观测性之应用业务指标监控
  10. UINO优锘:产品实施“八步法”让客户感受DCV实施的专业性
  11. 机器学习算法_Quora上的大牛们最喜欢哪种机器学习算法?
  12. namenode 格式化 -format
  13. 看得见的数据结构Android版之二分搜索树篇
  14. SAP中统驭科目理解及举例
  15. win7或win2008系统中,出现【已停止工作,联机检查解决方案并关闭该程序,关闭程序】解决方法!
  16. 把桌面路径设置到D盘
  17. 人工智能 deepface 换脸技术 学习
  18. Debian10 更换软件源 配置中文环境 安装中文输入法
  19. NOIP是什么?全国青少年信息学奥林匹克联赛各区特派员联系名单大全!
  20. 网络基础之BGP(边界网关协议)

热门文章

  1. html 中embed标签使用
  2. offset client scroll
  3. javascript+HTMl5游戏下载,开发一个都能月薪上万!舅服你
  4. 算法导轮之B树的学习
  5. Struts2学习入门
  6. 工作周报:2011-11-14至2011-11-18
  7. 在你的Fckeditor安装Google map plugin
  8. 用WMI获取远程机器操作系统的详细信息
  9. C#简单操作MongoDB
  10. 反汇编基础、OllyDbg简介和界面、基本操作、初级TraceMe练习