失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 一个实战案例带你走完python数据分析全流程:豆瓣电影评论的关键词云图制作

一个实战案例带你走完python数据分析全流程:豆瓣电影评论的关键词云图制作

时间:2020-01-10 01:15:11

相关推荐

一个实战案例带你走完python数据分析全流程:豆瓣电影评论的关键词云图制作

用python做数据处理流程大致可以分成以下三个部分:

一、数据的获取:一般可以有公开的数据集、网络爬虫、自己整理等方式。

二、数据的处理:包括数据的预处理、数据的查找/筛选/排序/统计等操作。

三、数据的展示:包括图、表等可视化呈现。

下面用一个电影评论的关键词云图制作为例,来演示这个数据处理的全流程。在这个例子中,我们将用到以下工具包:

import pandas as pd # 数据处理工具pandas import sqlite3 # sql数据库工具import jieba # 文本分词工具jiebaimport pyecharts as pec# 数据可视化工具pyechartsfrom pyecharts.charts import WordCloud# 导入WordCloud词云图模块from pyecharts.render import make_snapshot # 导入输出图片工具from snapshot_selenium import snapshot# 使用snapshot-selenium 渲染图片

一、数据的获取。

我们可以下载到豆瓣的数据库,这个douban_comment_data.db数据库中包含三个表:comment、movie、movie_chinese。具体详见博文通过movie_id来查询数据库获取电影名字和平均得分我们

我们使用sql语句来读取所需要的数据表存放在comment_data中。可以参考博文python对sql数据库文件的基本操作。

conn = sqlite3.connect('data/douban_comment_data.db')comment_data = pd.read_sql_query('select * from comment;',conn)

二、数据的处理

这里我们编写了一个函数get_comment_key_words(movie_id,count)来对数据库中的数据进行处理,参数包括电影的id(movie_id)和需要获得的热门关键的数量count。我们这里采用了pandas技术中的筛选技术(参考博文python中DataFrame数据的筛选)

字符串的拼接技术(参考博文使用“+”完成python中的字符串拼接),jieba分词技术(参考博文:基于jieba模块的数据分析)

等等。

def get_comment_key_words(movie_id,count):comment_list = comment_data[comment_data['MOVIEID']==movie_id]['CONTENT']comment_str = ""for comment in comment_list:comment_str += comment + '\n'seg_list = list(jieba.cut(comment_str))keywords_counts = pd.Series(seg_list)keywords_counts = keywords_counts[keywords_counts.str.len()>1]#注意这里需要先筛选再value_count()filtered_index = ~keywords_counts.str.contains(filter_condition)keywords_counts = keywords_counts[filtered_index]keywords_counts = keywords_counts.value_counts()keywords_counts = keywords_counts[:count]return keywords_counts

注意我们这里在进行过滤处理的时候,用到了FILTER_WORDS的技术,原理是把一些高频的无意义的词过滤掉。我们首先需要建立一个列表,里面存放着一系列的待过滤词组。然后使用字符串的.join()方法把这些过滤词组用或运算符“|”把他们联结起来,成为一个或表达式,然后使用.str.contains()方法获取满足这些条件的数据索引值,对其求反就可以获得过滤后的索引了。

FILTER_WORDS = ['真个','那里','不知','两个','这么','那么','怎么','如果','是','的','这个','一个','这种','时候','什么','\n','一部','这部','没有','还有','因为','只见','甚么','原来','不敢','如何','不曾','闻言','那怪','一声','出来','...','却说','片子','可以','不得','无法','这样','可能','最后','我们','东西','现在','那个','所以','一直','也许','电影','它们','不能','这里','今日',"觉得",'is','感觉']filter_condition = '|'.join(FILTER_WORDS)

filtered_index = ~keywords_counts.str.contains(filter_condition)keywords_counts = keywords_counts[filtered_index]

要注意的是,我们需要在完成过滤操作之后,再进行value_count操作(参考博文使用data.value_counts()方法对Series数组中的重复元素进行统计),然后通过切片的方法去除前count个热门词汇就完成了我们需要的数据的提取。

三、数据的可视化。

这里我们采用词云图图的方式来进行展示,原理参考博文基于pyechart的词云可视化展示。默认会生成html在浏览器中才能看到,我们采用make_snapshot技术直接生成png图片(参考博文python中使用pyecharts直接绘制png图片)

我们最后运行代码,可以在工程目录下得到png文件,打开之后,就得到了movie_id为"1292052",也就是《肖申克的救赎》这部电影的Top30热门词汇。

如果觉得《一个实战案例带你走完python数据分析全流程:豆瓣电影评论的关键词云图制作》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。