微信号:djangoSpace

介绍:开发者平台

[原]python画词云图(电商评论数数据)

2016-05-13 13:29 just_do_it_123

最近采集了天猫上搜索页面关于风衣的宝贝信息以及14676条评论数据。于是就想着做个关于评论数据的词云图看看 

源码链接:http://pan.baidu.com/s/1ge3Vr83 密码:2axo

数据在微店里面(毕竟小编采集数据还是挺辛苦的哈^v^,支持下小编吧。)

先来看看效果图:


 
从上图可以看出衣服、好、质量、不错、喜欢等关键词的较大,说明这些宝贝在天猫上应该是卖的比较好的。下面记录具体的实现过程。 
[TOC]

数据预览:



Python版本3.4.4;分词库:jieba;词云图库:pytagcloud

数据预处理:数据读入、分词


import pandas as pd
from pandas import DataFrame,Series
import numpy as np
import jieba
from ciyuntu_class import ciyuntu_class
cyt = ciyuntu_class()
from pytagcloud import make_tags,create_tag_image
from random import sample
comment = pd.read_csv('电商评论数据.csv',encoding='gbk')
应为有1W多条评论数据,全部分词的话需要耗费许多时间,于是在全部评论数据中随机抽取了5000条评论数据进comment = comment.drop(['Unnamed: 0'],axis=1)
# df_comment = comment[['评价内容']].ix[0:30]
index_5000 = sample(list(comment.index),5000)
df_comment = comment[['评价内容']].ix[index_5000]
df_comment.index = range(df_comment.shape[0])

分词

# 分词df_freq = cyt.fenci(df_comment.ix[0][0])# 转换成数据框df_freq = cyt.sta_list(df_freq)
for i in range(df_comment.shape[0])[1:]:    
   print(i)
   
   try:
       
       df_freq0 = cyt.fenci(df_comment.ix[i][0])
       
       df_freq0 = cyt.sta_list(df_freq0)
       
       # 合并数据框
       
       df_freq = cyt.bind_df(df_freq,df_freq0)
   
   except:
       
       print(df_comment.ix[i][0])
       
       pass

画词云图


# 画词云图tuple_list = cyt.df2tuple_list(df_freq)
tags = make_tags(tuple_list,maxsize=80)
create_tag_image(tags,'comment_cloud.png',size=(900,600),fontname='simhei')

总结:


先是选取了1000条评论数据,画出词云图后: 
可以看出一些中性词,像:很、的、都、了、买、也,这些词不能体现出评论人的态度,但是它们的词频却比较大,对结果有干扰,于是在分词的过程中将这些词进行剔除,下面是剔除后的效果图: 
可以看出,剔除后的词云图的主题以及评论的态度信息都比较好的显示在了图中。


 
djangoSpace 更多文章 为什么要学习julia这门语言? 遗传算法的matlab实现 python VS matlab 使用R和Python计算AUC(干货) 十行以内,你写过哪些比较酷的 Matlab 代码?
猜您喜欢 redis3集群理论篇 干货+荐书 ▏为什么你的产品或界面总被吐槽? Docker容器对存储的定义(Volume 与 Volume Plugin) Swift更新至1.0版本 【机器学习InAction系列】数据清洗与特征处理综述