电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

用Python實(shí)現(xiàn)網(wǎng)易云音樂(lè)的數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗和可視化分析

瀏覽:103日期:2022-07-28 18:26:52
目錄Python實(shí)現(xiàn)對(duì)網(wǎng)易云音樂(lè)的數(shù)據(jù)進(jìn)行一個(gè)數(shù)據(jù)清洗和可視化分析對(duì)音樂(lè)數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗與可視化分析對(duì)音樂(lè)數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗與可視化分析歌詞文本分析總結(jié)Python實(shí)現(xiàn)對(duì)網(wǎng)易云音樂(lè)的數(shù)據(jù)進(jìn)行一個(gè)數(shù)據(jù)清洗和可視化分析對(duì)音樂(lè)數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗與可視化分析

關(guān)于數(shù)據(jù)的清洗,實(shí)際上在上一一篇文章關(guān)于抓取數(shù)據(jù)的過(guò)程中已經(jīng)做了一部分,后面我又做了一下用戶數(shù)據(jù)的抓取

歌曲評(píng)論:

用Python實(shí)現(xiàn)網(wǎng)易云音樂(lè)的數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗和可視化分析

用Python實(shí)現(xiàn)網(wǎng)易云音樂(lè)的數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗和可視化分析

包括后臺(tái)返回的空用戶信息、重復(fù)數(shù)據(jù)的去重等。除此之外,還要進(jìn)行一些清洗:用戶年齡錯(cuò)誤、用戶城市編碼轉(zhuǎn)換等。

關(guān)于數(shù)據(jù)的去重,評(píng)論部分可以以sommentId為數(shù)據(jù)庫(kù)索引,利用數(shù)據(jù)庫(kù)來(lái)自動(dòng)去重;用戶信息部分以用戶ID為數(shù)據(jù)庫(kù)索引實(shí)現(xiàn)自動(dòng)去重。

API返回的用戶年齡一般是時(shí)間戳的形式(以毫秒計(jì))、有時(shí)候也會(huì)返回一個(gè)負(fù)值或者一個(gè)大于當(dāng)前時(shí)間的值,暫時(shí)沒(méi)有找到這兩種值代表的含義,故而一律按0來(lái)處理。

API返回的用戶信息中,城市分為province和city兩個(gè)字段,本此分析中只保存了city字段。實(shí)際上字段值是一個(gè)城市code碼,具體對(duì)照在這里下載。利用Python的數(shù)據(jù)處理庫(kù)pandas進(jìn)行數(shù)據(jù)處理,利用可視化庫(kù)pyecharts進(jìn)行數(shù)據(jù)可視化。

分別查看下面分析結(jié)果。

評(píng)論用戶年齡分布 評(píng)論關(guān)鍵詞分布 評(píng)論時(shí)間數(shù)量分布(年-月) 評(píng)論時(shí)間數(shù)量分布(年-月-日)對(duì)音樂(lè)數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗與可視化分析

import pandas as pdimport pymysqlfrom pyecharts import Bar,Pie,Line,Scatter,MapTABLE_COMMENTS = ’****’TABLE_USERS = ’****’DATABASE = ’****’conn = pymysql.connect(host=’localhost’, user=’****’, passwd=’****’, db=DATABASE, charset=’utf8mb4’)sql_users = ’SELECT id,gender,age,city FROM ’+TABLE_USERSsql_comments = ’SELECT id,time FROM ’+TABLE_COMMENTScomments = pd.read_sql(sql_comments, con=conn)users = pd.read_sql(sql_users, con=conn)# 評(píng)論時(shí)間(按天)分布分析comments_day = comments[’time’].dt.datedata = comments_day.id.groupby(comments_day[’time’]).count()line = Line(’評(píng)論時(shí)間(按天)分布’)line.use_theme(’dark’)line.add(’’,data.index.values,data.values,is_fill=True,)line.render(r’./評(píng)論時(shí)間(按天)分布.html’)# 評(píng)論時(shí)間(按小時(shí))分布分析comments_hour = comments[’time’].dt.hourdata = comments_hour.id.groupby(comments_hour[’time’]).count()line = Line(’評(píng)論時(shí)間(按小時(shí))分布’)line.use_theme(’dark’)line.add(’’,data.index.values,data.values,is_fill=True,)line.render(r’./評(píng)論時(shí)間(按小時(shí))分布.html’)# 評(píng)論時(shí)間(按周)分布分析comments_week = comments[’time’].dt.dayofweekdata = comments_week.id.groupby(comments_week[’time’]).count()line = Line(’評(píng)論時(shí)間(按周)分布’)line.use_theme(’dark’)line.add(’’,data.index.values,data.values,is_fill=True,)line.render(r’./評(píng)論時(shí)間(按周)分布.html’)# 用戶年齡分布分析age = users[users[’age’]>0]# 清洗掉年齡小于1的數(shù)據(jù)age = age.id.groupby(age[’age’]).count()# 以年齡值對(duì)數(shù)據(jù)分組Bar = Bar(’用戶年齡分布’)Bar.use_theme(’dark’)Bar.add(’’,age.index.values,age.values,is_fill=True,)Bar.render(r’./用戶年齡分布圖.html’)# 生成渲染的html文件# 用戶地區(qū)分布分析# 城市code編碼轉(zhuǎn)換def city_group(cityCode): city_map = {’11’: ’北京’,’12’: ’天津’,’31’: ’上海’,’50’: ’重慶’,’5e’: ’重慶’,’81’: ’香港’,’82’: ’澳門’,’13’: ’河北’,’14’: ’山西’,’15’: ’內(nèi)蒙古’,’21’: ’遼寧’,’22’: ’吉林’,’23’: ’黑龍江’,’32’: ’江蘇’,’33’: ’浙江’,’34’: ’安徽’,’35’: ’福建’,’36’: ’江西’,’37’: ’山東’,’41’: ’河南’,’42’: ’湖北’,’43’: ’湖南’,’44’: ’廣東’,’45’: ’廣西’,’46’: ’海南’,’51’: ’四川’,’52’: ’貴州’,’53’: ’云南’,’54’: ’西藏’,’61’: ’陜西’,’62’: ’甘肅’,’63’: ’青海’,’64’: ’寧夏’,’65’: ’新疆’,’71’: ’臺(tái)灣’,’10’: ’其他’, } return city_map[cityCode[:2]]city = users[’city’].apply(city_group)city = city.id.groupby(city[’city’]).count()map_ = Map(’用戶地區(qū)分布圖’)map_.add(’’,city.index.values,city.values,maptype=’china’,is_visualmap=True,visual_text_color=’#000’,is_label_show=True,)map_.render(r’./用戶地區(qū)分布圖.html’)

可視化結(jié)果

用Python實(shí)現(xiàn)網(wǎng)易云音樂(lè)的數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗和可視化分析

用Python實(shí)現(xiàn)網(wǎng)易云音樂(lè)的數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗和可視化分析

評(píng)論時(shí)間按周分布圖可以看出,評(píng)論數(shù)在一周當(dāng)中前面較少,后面逐漸增多,這可以解釋為往后接近周末,大家有更多時(shí)間來(lái)聽(tīng)聽(tīng)歌、刷刷歌評(píng),而一旦周末過(guò)完,評(píng)論量馬上下降(周日到周一的下降過(guò)渡),大家又回歸到工作當(dāng)中。

用Python實(shí)現(xiàn)網(wǎng)易云音樂(lè)的數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗和可視化分析

評(píng)論時(shí)間按小時(shí)分布圖可以看出,評(píng)論數(shù)在一天當(dāng)中有兩個(gè)小高峰:11點(diǎn)-13點(diǎn)和22點(diǎn)-0點(diǎn)。這可以解釋為用戶在中午午飯時(shí)間和晚上下班(課)在家時(shí)間有更多的時(shí)間來(lái)聽(tīng)歌刷評(píng)論,符合用戶的日常。至于為什么早上沒(méi)有出現(xiàn)一個(gè)小高峰,大概是早上大家都在搶時(shí)間上班(學(xué)),沒(méi)有多少時(shí)間去刷評(píng)論。

用Python實(shí)現(xiàn)網(wǎng)易云音樂(lè)的數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗和可視化分析

https://blog.csdn.net/u011371360

用戶年齡分布圖可以看出,用戶大多集中在14-30歲之間,以20歲左右居多,除去虛假年齡之外,這個(gè)年齡分布也符合網(wǎng)易云用戶的年齡段。圖中可以看出28歲有個(gè)高峰,猜測(cè)可能是包含了一些異常數(shù)據(jù),有興趣的化可以做進(jìn)一步分析。

用Python實(shí)現(xiàn)網(wǎng)易云音樂(lè)的數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗和可視化分析

用戶地區(qū)分布圖可以看出,用戶涵蓋了全國(guó)各大省份,因?yàn)橹虚g數(shù)據(jù)(坑)的缺失,并沒(méi)有展現(xiàn)出哪個(gè)省份特別突出的情況。對(duì)別的歌評(píng)(完全數(shù)據(jù))的可視化分析,可以看出明顯的地區(qū)分布差異。

此次分析只是對(duì)某一首歌曲評(píng)論時(shí)間、用戶年齡/地區(qū)分布進(jìn)行的,實(shí)際上抓取到的信息不僅僅在于此,可以做進(jìn)一步分析(比如利用評(píng)論內(nèi)容進(jìn)行文本內(nèi)容分析等),這部分,未來(lái)會(huì)進(jìn)一步分析。當(dāng)然也可以根據(jù)自己情況對(duì)不同歌曲進(jìn)行分析。

歌詞文本分析

情感分析采用Python的文本分析庫(kù)snownlp,代碼如下:

import numpy as npimport pymysqlfrom snownlp import SnowNLPfrom pyecharts import BarTABLE_COMMENTS = ’****’DATABASE = ’****’SONGNAME = ’****’def getText():conn = pymysql.connect(host=’localhost’, user=’root’, passwd=’root’, db=DATABASE, charset=’utf8’)sql = ’SELECT id,content FROM ’+TABLE_COMMENTStext = pd.read_sql(sql%(SONGNAME), con=conn)return textdef getSemi(text):text[’content’] = text[’content’].apply(lambda x:round(SnowNLP(x).sentiments, 2))semiscore = text.id.groupby(text[’content’]).count()bar = Bar(’評(píng)論情感得分’)bar.use_theme(’dark’)bar.add(’’,y_axis = semiscore.values,x_axis = semiscore.index.values,is_fill=True,)bar.render(r’情感得分分析.html’)text[’content’] = text[’content’].apply(lambda x:1 if x>0.5 else -1)semilabel = text.id.groupby(text[’content’]).count()bar = Bar(’評(píng)論情感標(biāo)簽’)bar.use_theme(’dark’)bar.add(’’,y_axis = semilabel.values,x_axis = semilabel.index.values,is_fill=True,)bar.render(r’情感標(biāo)簽分析.html’)

結(jié)果:

用Python實(shí)現(xiàn)網(wǎng)易云音樂(lè)的數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗和可視化分析

用Python實(shí)現(xiàn)網(wǎng)易云音樂(lè)的數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗和可視化分析

詞云生成采用jieba分詞庫(kù)分詞,wordcloud生成詞云,代碼如下:

from wordcloud import WordCloudimport matplotlib.pyplot as pltplt.style.use(’ggplot’)plt.rcParams[’axes.unicode_minus’] = Falsedef getWordcloud(text):text = ’’.join(str(s) for s in text[’content’] if s)word_list = jieba.cut(text, cut_all=False)stopwords = [line.strip() for line in open(r’./StopWords.txt’, ’r’).readlines()]# 導(dǎo)入停用詞clean_list = [seg for seg in word_list if seg not in stopwords] #去除停用詞clean_text = ’’.join(clean_list)# 生成詞云cloud = WordCloud( font_path = r’C:/Windows/Fonts/msyh.ttc’, background_color = ’white’, max_words = 800, max_font_size = 64)word_cloud = cloud.generate(clean_text)# 繪制詞云plt.figure(figsize=(12, 12))plt.imshow(word_cloud)plt.axis(’off’)plt.show()if __name__ == ’__main__’:text = getText()getSemi(text)getWordcloud(text)總結(jié)

本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注好吧啦網(wǎng)的更多內(nèi)容!

標(biāo)簽: 網(wǎng)易云 Python
相關(guān)文章:
主站蜘蛛池模板: 飞扬动力官网-广告公司管理软件,广告公司管理系统,喷绘写真条幅制作管理软件,广告公司ERP系统 | 全温度恒温培养摇床-大容量-立式-远红外二氧化碳培养箱|南荣百科 | 防腐木批发价格_深圳_惠州_东莞防腐木厂家_森源(深圳)防腐木有限公司 | 密度电子天平-内校-外校电子天平-沈阳龙腾电子有限公司 | 合肥制氮机_合肥空压机厂家_安徽真空泵-凯圣精机 | 车充外壳,车载充电器外壳,车载点烟器外壳,点烟器连接头,旅行充充电器外壳,手机充电器外壳,深圳市华科达塑胶五金有限公司 | 龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司_龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司 | 飞飞影视_热门电影在线观看_影视大全 | 电脑知识|软件|系统|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网 | 金属管浮子流量计_金属转子流量计厂家-淮安润中仪表科技有限公司 | 龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司_龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司 | elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 | 明渠式紫外线杀菌器-紫外线消毒器厂家-定州市优威环保 | 台式核磁共振仪,玻璃软化点测定仪,旋转高温粘度计,测温锥和测温块-上海麟文仪器 | 液压油缸-液压缸厂家价格,液压站系统-山东国立液压制造有限公司 液压油缸生产厂家-山东液压站-济南捷兴液压机电设备有限公司 | (中山|佛山|江门)环氧地坪漆,停车场地板漆,车库地板漆,聚氨酯地板漆-中山永旺地坪漆厂家 | 细沙回收机-尾矿干排脱水筛设备-泥石分离机-建筑垃圾分拣机厂家-青州冠诚重工机械有限公司 | 耐酸泵,耐酸泵厂家-淄博华舜耐腐蚀真空泵 | 智慧物联网行业一站式解决方案提供商-北京东成基业 | 退火炉,燃气退火炉,燃气热处理炉生产厂家-丹阳市丰泰工业炉有限公司 | 电线电缆厂家|沈阳电缆厂|电线厂|沈阳英联塑力线缆有限公司 | 上海网站建设-上海网站制作-上海网站设计-上海做网站公司-咏熠软件 | 全自动在线分板机_铣刀式在线分板机_曲线分板机_PCB分板机-东莞市亿协自动化设备有限公司 | 炉门刀边腹板,焦化设备配件,焦化焦炉设备_沧州瑞创机械制造有限公司 | 电脑刺绣_绣花厂家_绣花章仔_织唛厂家-[源欣刺绣]潮牌刺绣打版定制绣花加工厂家 | 河南卓美创业科技有限公司-河南卓美防雷公司-防雷接地-防雷工程-重庆避雷针-避雷器-防雷检测-避雷带-避雷针-避雷塔、机房防雷、古建筑防雷等-山西防雷公司 | 撕碎机_轮胎破碎机_粉碎机_回收生产线厂家_东莞华达机械有限公司 | 办公室家具_板式办公家具定制厂家-FMARTS福玛仕办公家具 | 耐酸泵,耐腐蚀真空泵,耐酸真空泵-淄博华舜耐腐蚀真空泵有限公司 精密模具-双色注塑模具加工-深圳铭洋宇通 | 振动筛,震动筛,圆形振动筛,振动筛价格,振动筛厂家-新乡巨宝机电 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 广东恩亿梯电源有限公司【官网】_UPS不间断电源|EPS应急电源|模块化机房|电动汽车充电桩_UPS电源厂家(恩亿梯UPS电源,UPS不间断电源,不间断电源UPS) | 网络推广公司_网络营销方案策划_企业网络推广外包平台-上海澜推网络 | 铣刨料沥青破碎机-沥青再生料设备-RAP热再生混合料破碎筛分设备 -江苏锡宝重工 | 罗氏牛血清白蛋白,罗氏己糖激酶-上海嵘崴达实业有限公司 | 影像测量仪_三坐标测量机_一键式二次元_全自动影像测量仪-广东妙机精密科技股份有限公司 | 高空重型升降平台_高空液压举升平台_高空作业平台_移动式升降机-河南华鹰机械设备有限公司 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库-首页-东莞市傲马网络科技有限公司 | 聚丙烯酰胺PAM-聚合氯化铝PAC-絮凝剂-河南博旭环保科技有限公司 巨野电机维修-水泵维修-巨野县飞宇机电维修有限公司 | 加气混凝土砌块设备,轻质砖设备,蒸养砖设备,新型墙体设备-河南省杜甫机械制造有限公司 | 湖南成人高考报名-湖南成考网 | 神超官网_焊接圆锯片_高速钢锯片_硬质合金锯片_浙江神超锯业制造有限公司 |