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


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

二、实战介绍


数据来源基于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

在这里插入图片描述

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

在这里插入图片描述

# 插入前 先清空
ct_mv_info.delete_many({
   })
# 插入文档
ct_mv_info.insert_many(dc_mv)

在这里插入图片描述

4.3 查询MongoDB的数据

ct_mv_info.find_one()

在这里插入图片描述

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 = []
        for k, rows in list_mv[index]['reviews'].iterrows():
            # 根据电影ID和当前的评论序号定义_id
            dict_info = {
   '_id' : mv_data['mv_id']
  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值