目录

一.赛题与数据

赛题背景

赛题数据

赛题任务

二.python实现

画图结果

 源代码以及相关文件下载地址:


一.赛题与数据

        

赛题背景

赛题以网络舆情分析为背景,要求选手根据用户的评论来对品牌的议题进行数据分析与可视化。通过这道赛题来引导常用的数据可视化图表,以及数据分析方法,对感兴趣的内容进行探索性数据分析。

赛题数据

数据源: earphone_sentiment.csv,为10000+条行业用户关于耳机的评论
使用天池实验室打比赛即可直接在notebook中挂载数据源,详见操作指南>>

字段名称类型描述说明
content_idInt数据ID/
contentString文本内容/
subjectString主题提取或依据上下文归纳出来的主题
sentiment_valueInt情感分析分析出的情感
sentiment_wordString情感词情感词

赛题任务

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")

画图结果

 

 

 

 源代码以及相关文件下载地址:

        https://gitee.com/bullu/bullu/tree/master/

Logo

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

更多推荐