数据分析达人赛1:用户情感可视化
·
目录
一.赛题与数据
赛题背景
赛题以网络舆情分析为背景,要求选手根据用户的评论来对品牌的议题进行数据分析与可视化。通过这道赛题来引导常用的数据可视化图表,以及数据分析方法,对感兴趣的内容进行探索性数据分析。
赛题数据
数据源: earphone_sentiment.csv,为10000+条行业用户关于耳机的评论
使用天池实验室打比赛即可直接在notebook中挂载数据源,详见操作指南>>
| 字段名称 | 类型 | 描述 | 说明 |
|---|---|---|---|
| content_id | Int | 数据ID | / |
| content | String | 文本内容 | / |
| subject | String | 主题 | 提取或依据上下文归纳出来的主题 |
| sentiment_value | Int | 情感分析 | 分析出的情感 |
| sentiment_word | String | 情感词 | 情感词 |
赛题任务
1)词云可视化(评论中的关键词,不同情感的词云)
2)柱状图(不同主题,不同情感,不同情感词)
3)相关性系数热力图(不同主题,不同情感,不同情感词)
在天池实验室中用notebook完成下面至少一种可视化分析任务,并分享到比赛论坛(越多越好,还可以进行其他的可视化探索,发挥你的想象力)
二.python实现
#!pip install jieba
#!pip install wordcloud
#导入必备包
import pandas as pd
import numpy as np
import jieba
import matplotlib.pyplot as plt
from wordcloud import WordCloud
#导入数据
data=pd.read_csv('./earphone_sentiment.csv')
data

#观察数据
"""
1.观察是否具有缺失值
2.观察是否具有重复值
3.观察缺失数据和重复值对代码实现影响如何
4.对上述问题进行处理
"""
#输出缺失值数量
print("缺失值数量:\n",data.isnull().sum())
print('-'*50)
#输出重复值数量
print("重复值数量:\n",data.duplicated().sum())

#查看情感值与情感词以及主题分类
print('sentiment_value:',set(data.sentiment_value))
print('sentiment_word:',set(data.sentiment_word))
print('subject:',set(data.subject))

#对contents列进行处理
#调用停用词
stop_words=[]
cut_content=data.loc[:,'content']
with open(r'./chinesestopword.txt','r') as f:
for line in f:
stop_words.append(line.strip('\n'))
for i in range(len(data)):
cutword = [x for x in jieba.cut_for_search(data.content[i]) if len(x)>1] #分词并去除长度为1的词
cutword = [k for k in cutword if k not in stop_words] #去除停用词
data.content[i]=cutword
#分类
all_word='/'.join(np.concatenate(data.content))
pos_word='/'.join(np.concatenate(data.loc[data['sentiment_value']==1,'content'].reset_index(drop=True)))
min_words ='/'.join(np.concatenate(data.loc[data['sentiment_value']==0,'content'].reset_index(drop=True)))
neg_word='/'.join(np.concatenate(data.loc[data['sentiment_value']==-1,'content'].reset_index(drop=True)))
词云函数
def wordcloud_(data,s):
wc = WordCloud(stopwords={'耳机','感觉','楼主','声音','解码','耳放','耳朵'},max_words=100,width=2000,height=1200,background_color='white',font_path='./simhei.ttf')
wc=wc.generate(data)
plt.imshow(wc)
plt.axis("off")
plt.title(s)
plt.show()
这里是在画图之后发现有些词没有引用到停用词字典里,所以又补了一些。
我是在天池实验室里运行的代码,所以这里simhei.ttf的字体需要自己下载,如果在本机上有字体,直接引用就好。
wordcloud_(all_word,"all")
wordcloud_(min_words,"min")
wordcloud_(pos_word,"positive")
wordcloud_(neg_word,"negitive")
画图结果

源代码以及相关文件下载地址:
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)