当前位置:   article > 正文

MongoDB 实战(一)基于PyMongo的电影影评分析 | 对数据结果进行可视化展示以及分析 | 评论词云 | 分时间段分析_xshell用mongodb取出数据并把数据可视化项目

xshell用mongodb取出数据并把数据可视化项目


Gitee 仓库地址: https://gitee.com/ccuni/pymongo-douban-comment-analysis

一、运行环境


  • Windows10
  • python 3.9
  • Anaconda3 + jupyter
  • mongodb 5.0.6
  • PyMongo 3.5.1
  • wordcloud-1.8.1

anaconda 安装 wordcloud的命令

conda install -c conda-forge wordcloud
  • 1

二、实战介绍


数据来源基于Python的第三方库,即requests库bs4库re库爬取豆瓣网TOP10的电影信息,以及它们的部分影评信息(100个左右)。

将爬取的信息进行预处理,封装成dict字典,借助 pymongo库 连接本机的 MongoDB,向数据库插入之前爬取的真实数据,然后分别使用MongoDB提供的map_reduce机制以及agreegate机制来聚合、分组、汇总计算数据,以MongoDB为基础,存储影视信息和评论信息,同时分析电影的综合价值。

三、获取数据


这一部分可参考Gitee仓库:https://gitee.com/ccuni/pymongo-douban-comment-analysis

四、PyMongo 实战


4.1 连接MongoDB、创建集合

from pymongo import MongoClient
from random import randint
client = MongoClient('localhost', 27017)

db = client.mv
# 创建电影信息集合
ct_mv_info = db.dc_mv_info
# 创建影评集合
ct_mv_review = db.dc_mv_review

# 查看创建结果
ct_mv_review

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

在这里插入图片描述

4.2 向 MongoDB 插入文档

这里先将DataFrame的影视信息转化为dict字典格式

dc_mv = []
index = 0 
for x in mv_data.values.tolist():
    dict_info = {
   }
    # 指定文档的_id为电影ID
    dict_info['_id'] = mv_data['mv_id'][index]
    index += 1
    # i 用于循环遍历取DF列表数据
    i = 0
    for key, v in mv_data.items():
        dict_info[key] = x[i]
        i += 1
    # 指定文档的
    dc_mv.append(dict_info)
dc_mv
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

在这里插入图片描述

# 插入前 先清空
ct_mv_info.delete_many({
   })
# 插入文档
ct_mv_info.insert_many(dc_mv)
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

4.3 查询MongoDB的数据

ct_mv_info.find_one()
  • 1

在这里插入图片描述

4.4 同样的操作插入影评

先处理信息,将原先的DataFrame的影评信息转化为可插入到MongoDB的dict字典

# list_mv[1] 输出结果 dict_keys(['reviews', 'star'])
# 查询保存的列表数据
# for x in list_mv[1].values.to_list():
#     print(x)
'''
    根据之前的存储信息获取所有电影的影评, 封装成可插入MongoDB的 dict
'''
def getAllReviews() -> list[list]:
    index = 0
    reviews = []
    for i in range(len(list_mv)):
        # 获取每一列
        rv_cols = list_mv[0]['reviews'].columns
        # 表示当前的评论标号
        i = 0
        # 记录当前电影的所有影评信息
        dc_reviews = [
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/383827
推荐阅读
相关标签
  

闽ICP备14008679号