import re
from pymongo import MongoClient
import pandas as pd
import numpy as np
import pymysql
# 不同年份上映的电影数量
def movie_date_publish_count(df):
grouped = df.groupby('movie_publish_year')['movie_type'].count().reset_index()
data = grouped.to_dict(orient='records')
# 将数据转换成数组嵌套数组的格式
data = [[str(i['movie_publish_year']),i['movie_type']] for i in data]
return data
# 不同地区的电影上映数量最多的前十个地区
def movie_country_publish_top10(df):
# 原数据中可能每个电影上映在多个地区 且不同地区之间使用逗号分隔 因此将movie_area列数据以逗号进行分隔变成列表
series_country = df['movie_area'].str.split(',').tolist()
# 利用set函数的特性 当数据出现重复时 只保留一个数据
list_country = set([j for i in series_country for j in i])
# 创建0矩阵统计不同地区电影上映的数量
zero_list = pd.DataFrame(np.zeros((len(series_country),len(list_country))),columns=list_country)
for i in range(len(zero_list)):
zero_list.loc[i][series_country[i]] = 1
# 使用聚合函数对不同地区的电影进行统计
country_movie_counts = zero_list.sum().astype(np.int)
country_movie_counts = country_movie_counts.reset_index()
country_movie_counts.columns = ['movie_area','count']
# 对数据进行排序并取出数量最多的前十个地区
country_movie_counts = country_movie_counts.sort_values(by='count',ascending=False)[:10]
data = [[i['movie_area'],i['count']] for i in country_movie_counts.to_dict(orient='records')]
return data
# 统计票房前十的电影
def movie_booking_top10(df):
# 按照票房数量进行排序并取出前十的数据
df = df.sort_values(by = 'movie_booking',ascending=False)
movie_name_to_booking = df[['movie_name','movie_booking']][:10]
data = [[i['movie_name'],i['movie_booking']] for i in movie_name_to_booking.to_dict(orient='records')]
print(data)
return data
# 统计评论前十的电影
def movie_comment_top10(df):
# 按照评论数量进行排序并取出前十的数据
df = df.sort_values(by = 'movie_comments',ascending=False)
movie_name_to_booking = df[['movie_name','movie_comments']][:10]
data = [[i['movie_name'],i['movie_comments']] for i in movie_name_to_booking.to_dict(orient='records')]
print(data)
return data
# 统计不同评分区间的电影数量
def movie_score_count(df):
# 根据不同区间划分电影评分数据 区间分别为 <7.0 7.0-8.0 >8.0 三个区间
grouped1 = df[df['movie_score']<7.0]['movie_score']
grouped2 = df[(df['movie_score']>=7.0) & (df['movie_score']<=8.0)]['movie_score']
grouped3 = df[df['movie_score']>8]['movie_score']
movie_score_to_count = [{'movie_score':'<7.0','count':len(grouped1)},{'movie_score':'7.0-8.0','count':len(grouped2)},{'movie_score':'>8.0','count':len(grouped3)}]
data = [[i['movie_score'],i['count']] for i in movie_score_to_count]
return data
# 统计不同类型的电影数量最多的前十个类型
def movie_type_count(df):
# 原数据中可能每个电影有多个电影类型 且不同电影类型之间使用点号分隔 因此将movie_type列数据以点号进行分隔变成列表
series_movie_type = df['movie_type'].str.split('·').tolist()
movie_type_list = [j for i in series_movie_type for j in i]
# 利用set函数的特性 当数据出现重复时 只保留一个数据
movie_type = set(movie_type_list)
# 创建0矩阵统计不同电影类型的数量
zero_list = pd.DataFrame(np.zeros((len(df),len(movie_type))),columns=movie_type)
for i in range(len(df)):
zero_list.loc[i][series_movie_type[i]] = 1
# 使用聚合函数对不同类型的电影进行统计
movie_type_counts = zero_list.sum().astype(np.int)
movie_type_counts = movie_type_counts.reset_index()
movie_type_counts.columns = ['movie_type','count']
# 对数据进行排序并取出数量最多的前十个类型
movie_type_counts = movie_type_counts.sort_values(by='count',ascending=False)[:10]
data = [[i['movie_type'],i['count']] for i in movie_type_counts.to_dict(orient='records')]
return data
if __name__ == '__main__':
# 初始化MondoDB数据库
client = MongoClient()
collection = client['test']['cat_movie']
# 获取数据
movies = collection.find({},{'_id':0})
df = pd.DataFrame(movies)
# 打印基础信息
print(df.info())
print(df.head())
# 保留有用字段
df = df[['movie_name','movie_type','movie_area','movie_duration','movie_publish','movie_score','movie_comments','movie_booking']]
# 过滤数据
# 过滤movie_type列数据
df = df[df['movie_type'].str.contains('类型未知')==False]
# 过滤movie_area列数据
df = df[df['movie_area'].str.contains('上映国家未知')==False]
# 过滤movie_duration列数据
df = df[df['movie_duration'].str.contains('电影时长未知') == False]
# 过滤movie_publish列数据
df = df[df['movie_publish'].str.contains('上映时间未知') == False]
# 过滤movie_score列数据
df = df[df['movie_score'].str.contains('电影评分未知') == False]
# 过滤movie_comments列数据
df = df[df['movie_comments'].str.contains('评论人数未知') == False]
# 过滤movie_booking列数据
df = df[df['movie_booking'].str.contains('暂无') == False]
# 处理数据转换数据类型
# 去掉movie_duration列数据中的分钟并将数据转换成int数据类型
df['movie_duration'] = df['movie_duration'].apply(lambda x:int(re.findall(r'(\d+)分钟',x)[0]))
# 将movie_score列数据转换成float类型
df['movie_score'] = df['movie_score'].apply(lambda x:float(x))
# 将movie_comments列数据统一单位
df['movie_comments'] = df['movie_comments'].apply(lambda x:int(float(re.findall(r'(.*)万',x)[0])*10000) if len(re.findall(r'万',x))>0 else int(x))
# 将movie_booking列数据统一单位
df['movie_booking'] = df['movie_booking'].apply(lambda x: float(re.findall(r'(.*)亿', x)[0]) if len(re.findall('亿', x)) > 0 else round(float(x.split('万')[0])/10000,2))
# 将movie_publish转换成pandas时间类型并将数据转换成具体的年添加到pd中
df['movie_publish'] = df['movie_publish'].apply(lambda x:re.findall(r'(.*)中国大陆上映',x)[0] if len(re.findall(r'中国大陆上映',x))>0 else x)
df['movie_publish'] = pd.to_datetime(df['movie_publish'])
date = pd.DatetimeIndex(df['movie_publish'])
df['movie_publish_year'] = date.year
# 不同年份上映的电影数量
# data = movie_date_publish_count(df)
# 不同地区的电影上映数量最多的前十个地区
# data = movie_country_publish_top10(df)
# 统计票房前十的电影
# data = movie_booking_top10(df)
# 统计评论前十的电影
# data = movie_comment_top10(df)
# 统计不同评分区间的电影数量
# data = movie_score_count(df)
# 统计不同类型的电影数量最多的前十个类型
data = movie_type_count(df)
# 创建数据库连接
conn = pymysql.connect(host='localhost',user='root',password='123456',port=3306,database='cateye',charset='utf8')
# 获取游标对象
with conn.cursor() as cursor:
# 不同年份上映的电影数量
# sql = 'insert into db_year_movie_count(year,count) values(%s,%s)'
# 不同地区的电影上映数量最多的前十个地区
# sql = 'insert into db_area_movie_count(area,count) values(%s,%s)'
# 统计票房前十的电影
# sql = 'insert into db_booking_movie_count(name,booking) values(%s,%s)'
# 统计评论前十的电影
# sql = 'insert into db_comment_movie_count(name,comment) values(%s,%s)'
# 统计不同评分区间的电影数量
# sql = 'insert into db_score_movie_count(score,count) valu
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
高分项目课程设计开发的97分高分设计项目,内含详细文档说明,可作为高分课程设计和期末大作业的参考,含有代码注释小白也可看的懂,有能力的小伙伴也可以在此基础上进行二开,项目代码完整下载即可运行,基于Python实现猫眼电影数据爬取+数据分析+数据可视化。 高分项目课程设计开发的97分高分设计项目,内含详细文档说明,可作为高分课程设计和期末大作业的参考,含有代码注释小白也可看的懂,有能力的小伙伴也可以在此基础上进行二开,项目代码完整下载即可运行。高分项目课程设计开发的97分高分设计项目,内含详细文档说明,可作为高分课程设计和期末大作业的参考,含有代码注释小白也可看的懂,有能力的小伙伴也可以在此基础上进行二开,项目代码完整下载即可运行。高分项目课程设计开发的97分高分设计项目,内含详细文档说明,可作为高分课程设计和期末大作业的参考,含有代码注释小白也可看的懂,有能力的小伙伴也可以在此基础上进行二开,项目代码完整下载即可运行。高分项目课程设计开发的97分高分设计项目,内含详细文档说明,可作为高分课程设计和期末大作业的参考,含有代码注释小白也可看的懂,有能力的小伙伴也可以在此基础上进行二开。
资源推荐
资源详情
资源评论
























收起资源包目录




























































共 42 条
- 1
资源评论


王二空间
- 粉丝: 7788
- 资源: 2121
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 基于Go语言的股票分析及行情获取设计源码
- 基于模型预测控制的主动悬架系统优化与性能分析:从2自由度到4自由度模型的深度研究,含路面预瞄功能 ,基于模型预测控制的主动悬架系统优化与性能分析:从2自由度到4自由度模型的深度研究,含路面预瞄功能
- 基于Go语言的智能CICD一体化解决方案服务平台设计源码
- 通信原理SystemView软件下的16QAM调制与解调系统仿真实验报告(含星座图与功率谱分析),SystemView下短波16QAM调制与解调系统仿真研究:波形分析与星座图解读,通信原理 syste
- 基于springboot + vue + 百度SDK 开发的前后端分离人脸识别会议签到系统新版源码+说明.zip
- 基于Qt框架的手势识别新版程序源码+说明.zip
- 基于Java的Apollo项目开发设计源码
- 基于Rasa框架实现的智能医疗机器人.zip
- 帮助爬虫通过点选验证及滑动验证, 验证码识别(仅用于测试学习).zip
- Baidu文字识别Api封装代码.zip
- 基于SMIC 55nm工艺的锁相环学习电路设计教程:上手容易,理论结合实践指导学习,锁相环学习电路教程:Ring-VCO结构,800MHz/1GHz输出,新手友好,完整项目展示与仿真资料赠送,锁相环学
- Baidu云流式语音识别客户端 SDK.zip
- 毕业设计基于Opencv的车牌识别系统.zip
- 基于Vue框架的小狗漫画网页设计源码
- 本地识别模型下载.zip
- 通过短视频SDK、直播SDK轻松实现特效与视频剪辑.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
