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

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

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

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

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

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

import pandas as pd # 数据处理工具pandas

import sqlite3 # sql数据库工具

import jieba # 文本分词工具jieba

import pyecharts as pec # 数据可视化工具pyecharts

from 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热门词汇。

?i=20200223174826767.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTg1NTAxMA==,size_16,color_FFFFFF,t_70

3_weixin_41855010

2.png

梧桐雪

发布了151 篇原创文章 · 获赞 6 · 访问量 4005

私信

关注

标签:comment,python,movie,云图,豆瓣,keywords,import,counts,data

来源: https://blog.csdn.net/weixin_41855010/article/details/104463165

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值