南风金融网 - 中原最权威行情财经门户

热门关键词:  缪学刚  www.ymwears.cn  xxx    
热门: 北大数字金融公开课内容回 对付勒索软件的利器:二级 还在为云存储掏冤枉钱?那 直播预告 | “经世微语课堂 中国个体经营户总量测算与 中国个体经营户研究系列报

Python课程期末作业选编2:网易云歌单爬虫及数据分析

来源:南风金融网 作者:南风金融网 人气: 发布时间:2020-02-10 11:20:47
_
_
_


编者注:2019年秋季学期,郭峰老师在上海财经大学为本科生开设了一门选修课程《Python语言与经济大数据分析》,以期末作业的形式完成了考核。部分学生完成的作业思路清晰,内容完整,展现出了利用Python语言这个工具独立完成一些简单工作的能力,特精选了几个作业,精简润色后,在本公众号上展示。




通过对网易云歌单的分析,抓住用户的偏好,以便进行更加精准的击中用户的痛点,增加用户黏性。




网易云音乐


听见·好时光


python分析




Table of Contents(目录)

???爬虫结果分析

?? 代码整体思路

?“打怪升级之路”——如何修复了无数个bug



_
_
_

1

_
_

爬虫结果分析

_
_
_
_
_
_
_

通过Python对网易云音乐欧美类型歌单的数据爬虫,获取了欧美类型歌单分类下的所有歌单,再通过进一步爬虫,获取了每个歌单的基本信息,通过对数据的处理和可视化分析,得到了以下的成果。

_
_
_
_


***网易云歌单介绍词云分析***


通过对每个歌单的歌单介绍的词云图分析,我们可以大致了解喜欢听欧美类型歌曲的听众的偏好。


下面是通过jieba分词并通过停用词字典去掉一些无意义词后得到的结果。


【[('Love', 15), ('Future', 14), ('Billie', 12), ('Taylor Swift', 11), ('Remix', 9), ('Disco', 9), ('Rap', 9), ('Trap', 9), ('battle', 9), ('Bass', 8), ('ft', 8), ('Melodic', 7), ('Nu', 7), ('at', 7), ?('Avicii', 6), ('Up', 6), ('house', 6), ('World', 6), ('Trance', 6), ('Lil', 6), ?('全都因为你吻了我一个晚安', 6), ('focus', 6), ('Hip Hop', 6),('Martin', 5),('Life', 5), ('Tim', 5), ('Bad', 5), ('With', 5), ('ps', 5), ('KooTo', 5), ('Pop', 5), ('Taylor', 5), ('Red', 5), ('Series', 5), ?('冰雪奇缘2', 5), ('Lil Nas', 5), ('天天向上 VS', 5), ('戴上耳机', 4)】




***歌单贡献者UP主分析***


网易云平台上的歌单绝大多数是由听众自己贡献的,是一种分享式创作,通过对歌单贡献者分析,平台可以对这些无私的分享者一定的鼓励,以打造一个“人人创作,大家受益”的良性生态圈。




***风格类型标签分析***


先对所有的标签进行分割,依次循环,建立字典;然后再进行分类计数,得到不同的标签出现的次数。




***歌单收藏数量分析***


前期分析歌单的收藏数,发现歌单之间的极差很大,直接做条形图效果很差,取对数缩小差距后,又因歌单数量太多,效果依旧不好,最终百度后决定研究数量的分布情况,最终结果与预想情况一致,歌单的收藏数量符合大数定律,呈现大致正态分布情况。




***歌单评论数分析***


网易云一直以温暖而感性的评论被评为一股清流,所以一个歌单下面评论数量的多少,大致可以反映它的受欢迎程度,反映听众听完的真实的触动,通过分析歌单评论数的多少,更能接触到听众的真实的喜好。




_
_
_

2

_
_

编写代码的整体思路

_
_
_

代码编写过程很繁杂,但是思路还是很清晰的,如下流程图所示



_
_
_

3

_
_

“打怪升级之路”——如何修复了无数个bug

_
_
_

遇到bug不可怕,就把它想象成为打怪升级,学习python的过程就变得非常有趣啦~

下面的这些都是我自已在写代码的过程中遇到的一些问题,仅供参考吧!



@战斗力不强但是数量庞大的“虾兵蟹将”



首先,最常出现一类错误,语法错误:

SyntaxError

忘记区分英文和中文符号

少掉最后一个括号,没有添加必须的引号等等

尤其作为一个初学者,我遇到过“无数次”这种错误

但是这种错误容易识别

再加上报错的具体指示

可以轻松过关



@战斗力升级但是数量减少的“初级统领”



其次,写代码过程中难免会出现的错误:

IndentationError

在使用for循环或者if、while语句等语法时

很容易出现这种错误

在多重循环中尤其需要注意缩进

否则会出错



@战斗力加强而且不易发现的“弓箭手”



当你感觉一切良好时,会突然出现的错误:

AttributeError、TypeError

(基础不牢,地动山摇,如果基础薄弱

那么这两个错误都是需要花费精力才能发现并改正的)

当出现这种错误时

需要注意对象属性的区别和对象类型之间的区别

这就要求我们牢固的掌握字符串、列表、元组、字典的各自的特点和属性



_

由于班上大都是零基础学生,郭老师在上课的过程中是非常注重基础教学的,上课认真听讲,下课好好学习,解决上面的问题还是OK的。

至于一些自己不能直接解决的问题,也是完全可以百度解决的哦!


@旗鼓相当的多名“大boss”



在进行数据分析过程中,遇到很多问题,通过参考以前讲义里的代码再加上网上查找和老师的解答,最终才解决。


##读取爬虫的得到的CSV文件##

path='C:/Python/数据与结果/期末作业/'

df = pd.read_csv(path +'playlist.csv', header=None, error_bad_lines=False, names=['url', 'title', 'play', 'user'])

结果报错:OSError: Initializing from file failed

解决办法:通过百度,在CSDN博客中找到解决办法。

f = open(path + 'playlist.csv',encoding='utf-8')

df=pd.read_csv(f,header=None,error_bad_lines=False, names=['url', 'title', 'play', 'user'])



##通过查看以前的讲义,找到实现排序的简便方法##

sort = sorted(process_word.items(), key=lambda e:e[1], reverse=True)



##图表中无法显示汉字##

解决办法:通过百度,得解。

#默认为英文,以下两行代码可以显示中文

plt.rcParams['font.sans-serif']=['SimHei']

plt.rcParams['axes.unicode_minus'] = False



##图片在作业的文档中无法显示##

解决办法:百度无果,通过咨询老师得解。

#添加代码 ? ?%matplotlib inline



##对便签进行计数##

解决办法:仿照以前讲义,先建立字典,再循环计数。

tags = []

dom2 = []

for i in df[1]:

? ?b = i.split('-')

? ?for j in b:

? ? ? ?if j not in tags: ?#依次循环,建立总的标签库

? ? ? ? ? ?tags.append(j)

? ? ? ?else:

? ? ? ? ? ?Continue

for item in tags:

? ?num = 0

? ?for i in df[1]:

? ? ? ?type2 = i.split('-')

? ? ? ?for j in range(len(type2)):

? ? ? ? ? ?if type2[j] == item:

? ? ? ? ? ? ? ?num += 1

? ? ? ? ? ?else:

? ? ? ? ? ? ? ?continue

? ?dom2.append(num)



期末作业在克服无数个bug后完成了,看到代码运行后的分析图生成也真的是成就感UP啊!

在此感谢郭峰老师一学期的辛勤教学!

_


责任编辑:南风金融网

最火资讯

首页 | 财经资讯 | 金融理财 | 价格行情

Copyright © 2012-2015 南风金融网门户站 版权所有 Power by DedeCms 豫ICP备12016580号  技术支持:南风金融网

电脑版 | 移动版