当前位置: 首页 > news >正文

小程序网站开发者利建设茶网站目的

小程序网站开发者利,建设茶网站目的,wordpress阅读量造假,可以上传网站的免费空间大数据可视化项目——基于Python豆瓣电影数据可视化分析系统的设计与实现 本项目旨在通过对豆瓣电影数据进行综合分析与可视化展示#xff0c;构建一个基于Python的大数据可视化系统。通过数据爬取收集、清洗、分析豆瓣电影数据#xff0c;我们提供了一个全面的电影信息平台…大数据可视化项目——基于Python豆瓣电影数据可视化分析系统的设计与实现 本项目旨在通过对豆瓣电影数据进行综合分析与可视化展示构建一个基于Python的大数据可视化系统。通过数据爬取收集、清洗、分析豆瓣电影数据我们提供了一个全面的电影信息平台为用户提供深入了解电影产业趋势、影片评价与演员表现的工具。项目的关键步骤包括数据采集、数据清洗、数据分析与可视化展示。首先我们使用爬虫技术从豆瓣电影网站获取丰富的电影数据包括电影基本信息、评分、评论等存储到Mysql数据库。然后通过数据清洗与预处理确保数据的质量与一致性以提高后续分析的准确性。数据分析阶段主要包括对电影评分分布、不同类型电影的数量分布、评分、演员的影响力等方面的深入研究。基于Echarts进行可视化展示借助Python中的数据分析库如Pandas、NumPy和可视化库如Matplotlib、Seaborn我们能够以图表的形式清晰地展示电影数据的特征和趋势。最终我们将分析结果以交互式的可视化界面呈现用户可以通过系统自定义的查询与过滤功能深入挖掘他们感兴趣的电影信息。这个项目不仅为电影爱好者提供了一个全面的数据参考平台也为电影产业从业者提供了洞察行业动向的工具。 最后我们爬取到的字段信息电影名评分封面图详情url上映时间导演类型制作国家语言片长电影简介星星比例多少人评价预告片前五条评论五张详情图片 for i,moveInfomation in enumerate(moveisInfomation):try:resultData {}# 详情resultData[detailLink] detailUrls[i]# 导演数组resultData[directors] ,.join(moveInfomation[directors])# 评分resultData[rate] moveInfomation[rate]# 影片名resultData[title] moveInfomation[title]# 主演数组resultData[casts] ,.join(moveInfomation[casts])# 封面resultData[cover] moveInfomation[cover]# 进入详情页detailMovieRes requests.get(detailUrls[i], headersheaders)soup BeautifulSoup(detailMovieRes.text, lxml)# 上映年份resultData[year] re.findall(r[(](.*?)[)],soup.find(span, class_year).get_text())[0]types soup.find_all(span,propertyv:genre)for i,span in enumerate(types):types[i] span.get_text()# 影片类型数组resultData[types] ,.join(types)country soup.find_all(span,class_pl)[4].next_sibling.strip().split(sep/)for i,c in enumerate(country):country[i] c.strip()# 制作国家数组resultData[country] ,.join(country)lang soup.find_all(span, class_pl)[5].next_sibling.strip().split(sep/)for i, l in enumerate(lang):lang[i] l.strip()# 影片语言数组resultData[lang] ,.join(lang)upTimes soup.find_all(span,propertyv:initialReleaseDate)upTimesStr for i in upTimes:upTimesStr upTimesStr i.get_text()upTime re.findall(r\d*-\d*-\d*,upTimesStr)[0]# 上映时间resultData[time] upTimeif soup.find(span,propertyv:runtime):# 时间长度resultData[moveiTime] re.findall(r\d,soup.find(span,propertyv:runtime).get_text())[0]else:# 时间长度resultData[moveiTime] random.randint(39,61)# 评论个数resultData[comment_len] soup.find(span,propertyv:votes).get_text()starts []startAll soup.find_all(span,class_rating_per)for i in startAll:starts.append(i.get_text())# 星星比例数组resultData[starts] ,.join(starts)# 影片简介resultData[summary] soup.find(span,propertyv:summary).get_text().strip()# 五条热评comments_info soup.find_all(span, class_comment-info)comments [{} for x in range(5)]for i, comment in enumerate(comments_info):comments[i][user] comment.contents[1].get_text()comments[i][start] re.findall((\d*), comment.contents[5].attrs[class][0])[7]comments[i][time] comment.contents[7].attrs[title]contents soup.find_all(span, class_short)for i in range(5):comments[i][content] contents[i].get_text()resultData[comments] json.dumps(comments)# 五张详情图imgList []lis soup.select(.related-pic-bd img)for i in lis:imgList.append(i[src])resultData[imgList] ,.join(imgList)将结果保存到CSV文件和SQL数据库中并在完成后更新页数记录。 从豆瓣电影数据中提取演员和导演的电影数量信息以便后续的分析和可视化展示。 def getAllActorMovieNum():allData homeData.getAllData()ActorMovieNum {}for i in allData:for j in i[1]:if ActorMovieNum.get(j,-1) -1:ActorMovieNum[j] 1else:ActorMovieNum[j] ActorMovieNum[j] 1ActorMovieNum sorted(ActorMovieNum.items(), keylambda x: x[1])[-20:]x []y []for i in ActorMovieNum:x.append(i[0])y.append(i[1])return x,y定义统计导演执导电影数量的函数getAllDirectorMovieNum() def getAllDirectorMovieNum():allData homeData.getAllData()ActorMovieNum {}for i in allData:for j in i[4]:if ActorMovieNum.get(j,-1) -1:ActorMovieNum[j] 1else:ActorMovieNum[j] ActorMovieNum[j] 1ActorMovieNum sorted(ActorMovieNum.items(), keylambda x: x[1])[-20:]x []y []for i in ActorMovieNum:x.append(i[0])y.append(i[1])return x,yallData homeData.getAllData()调用homeData模块中的getAllData函数获取所有的电影数据并将其保存在allData变量中。ActorMovieNum {}创建一个空字典ActorMovieNum用于存储导演与其执导电影数量的映射。for i in allData:遍历所有电影数据其中i代表每一部电影的信息。for j in i[4]:在每部电影的信息中使用i[4]访问导演的信息然后遍历每个导演。if ActorMovieNum.get(j, -1) -1:检查字典ActorMovieNum中是否已经存在该导演的记录。如果不存在则将该导演作为键加入字典并将对应的值初始化为1。else:如果字典中已存在该导演的记录则将对应的值加1表示该导演又执导了一部电影。ActorMovieNum sorted(ActorMovieNum.items(), keylambda x: x[1])[-20:]将字典中的导演及其执导电影数量按照电影数量进行降序排序然后取排序后的前20项。排序的依据是keylambda x: x[1]即按照字典中的值进行排序。x [] 和 y []创建两个空列表用于存储导演名称和对应的执导电影数量。for i in ActorMovieNum:遍历排序后的前20项导演及其执导电影数量。x.append(i[0]) 和 y.append(i[1])将导演的名称和执导电影数量分别加入列表x和y。return x, y返回存储导演名称和执导电影数量的两个列表。 从名为homeData的模块中导入getAllData函数然后使用pandas库创建一个数据框DataFramedf。getAllData函数的返回值被传递给DataFrame的构造函数同时指定了数据框的列名。 from . import homeData: 这行代码从当前目录.表示当前目录导入homeData模块。import pandas as ps: 这行代码导入pandas库并使用ps作为别名。一般来说pandas的别名是pd但在这里使用了ps。df ps.DataFrame(homeData.getAllData(), columns[...]): 这行代码创建一个数据框df并使用homeData.getAllData()的返回值填充数据框。列名由columns参数指定列的顺序与列表中的顺序相对应。列名包括 ‘id’: 电影ID‘directors’: 导演‘rate’: 评分‘title’: 标题‘casts’: 演员‘cover’: 封面‘year’: 上映年份‘types’: 类型‘country’: 制片国家‘lang’: 语言‘time’: 时长‘moveiTime’: 电影时长‘comment_len’: 评论长度‘starts’: 星级‘summary’: 摘要‘comments’: 评论‘imgList’: 图片列表‘movieUrl’: 电影链接‘detailLink’: 详细链接 这样就创建了一个包含特定列名的数据框其中的数据来自homeData.getAllData()函数的返回结果。 from . import homeData import pandas as ps df ps.DataFrame(homeData.getAllData(),columns[id,directors,rate,title,casts,cover,year,types,country,lang,time,moveiTime,comment_len,starts,summary,comments,imgList,movieUrl,detailLink])从数据框DataFrame中的’country’列中提取地址数据。数据框中的地址数据提取出来并统计每个地址出现的次数。它首先检查’country’列中的每个元素如果元素是一个列表则将列表中的每个元素添加到一个新的列表address中。然后它创建一个字典addressDic将地址作为键出现次数作为值最后返回地址列表和对应的出现次数列表。 def getAddressData():# 获取名为 country 的列的值addresses df[country].values# 创建一个空列表来存储地址address []# 遍历 country 列的每个元素for i in addresses:# 如果元素是列表类型if isinstance(i, list):# 遍历列表中的每个元素并添加到 address 列表中for j in i:address.append(j)else:# 如果元素不是列表类型直接将其添加到 address 列表中address.append(i)# 创建一个空字典来存储地址及其出现次数addressDic {}# 遍历地址列表中的每个元素for i in address:# 如果地址字典中不存在该地址则将其添加并设置出现次数为1if addressDic.get(i, -1) -1:addressDic[i] 1else:# 如果地址字典中已存在该地址则将其出现次数加1addressDic[i] addressDic[i] 1# 返回地址列表和对应的出现次数列表return list(addressDic.keys()), list(addressDic.values())从数据框的’lang’列中提取语言数据并统计每种语言出现的次数。最终返回语言列表和对应的出现次数列表。 def getLangData():# 获取名为 lang 的列的值langs df[lang].values# 创建一个空列表来存储语言数据languages []# 遍历 lang 列的每个元素for i in langs:# 如果元素是列表类型if isinstance(i, list):# 遍历列表中的每个元素并添加到 languages 列表中for j in i:languages.append(j)else:# 如果元素不是列表类型直接将其添加到 languages 列表中languages.append(i)# 创建一个空字典来存储语言及其出现次数langsDic {}# 遍历语言列表中的每个元素for i in languages:# 如果语言字典中不存在该语言则将其添加并设置出现次数为1if langsDic.get(i, -1) -1:langsDic[i] 1else:# 如果语言字典中已存在该语言则将其出现次数加1langsDic[i] langsDic[i] 1# 返回语言列表和对应的出现次数列表return list(langsDic.keys()), list(langsDic.values()) 数据库创建四个表 修改为自己的数据库主机名和账号密码 启动项目 服务端口5000 http://127.0.0.1:5000 用户注册 http://127.0.0.1:5000/registry 用户登录 首页页面展示 还有电影数据包括电影名、评分、片场、预告片等数据。 查看电影预告片 电影搜索 电影产量分析 电影数据时长分布占比 电影评分统计分析 ​ 豆瓣评分星级饼状图、豆瓣年度评价评分柱状图 ​ 豆瓣电影中外评分分布图 数据视图切换 ​ 电影拍摄地点统计图 ​ 电影语言统计图 电影类型饼图 ​ 导演作品数量前20 ​ 数据表操作 ​ 标题词云图 ​ 简介词云图 s4XV8qh-1701860368769) ​ 演员名词云图 评论词云图 经过对一系列测试结果的有效分析本平台开发系统符合用户的要求和需求。所有的基本功能齐全可视化展示效果好服务运行稳定操作起来简单方便测试系统性能、整体设计和代码逻辑都很Nice 各位有兴趣的小伙伴 可以私信我要项目开发文档、完整项目源码和其它相关资料。 后面有时间和精力也会分享更多关于大数据领域方面的优质内容喜欢的小伙伴可以点赞关注收藏有需要的都可以私信我感谢各位的喜欢与支持
http://www.pierceye.com/news/152092/

相关文章:

  • 国内做网站技术支持 网站建设
  • 绍兴做团购的网站织梦转易优cms
  • 百度 网站 质量度扬州市工程建设招标网
  • 营销网站建设流程图优化营商环境发言稿
  • 设计网站公司有哪些怎么做网店
  • 高端的网站设计费用外贸营销型网站建设平台
  • 买源码做网站简单嘛贵阳百度seo点击软件
  • 省建设注册管理网站网站的维护和推广
  • wordpress 插件站wordpress本地mp3
  • 爱站工具包的主要功能很有设计感的企业网站
  • 地下城钓鱼网站如何做iis添加网站无法访问
  • 招聘网站大全网站开发liucheng
  • erlang做网站优势深圳集团网站建设公司好
  • 烟台公司建网站seo网站推广 沈阳
  • 没有网站做APP企业网站模板建站
  • 国内炫酷的网站首页网站开发交易平台
  • 大型网站建设公司制作网站好大夫在线免费咨询
  • 有哪些设计的很优秀的网站诸暨市住房建设局网站
  • 建设网站网站建站延吉手机网站建设开发
  • 网站建设一意见08wordpress主题
  • 做网站备案不少天网络设计包括哪些
  • 仿腾讯视频网站源码个人制作网站工具
  • 泉州网站制作建设163注册企业邮箱
  • 漳州市建设局网站6热e国产-网站正在建设中-手机版
  • 给公司做网站数据分析江门网站设计制作
  • 怎么做新网站安宁网站建设熊掌号
  • com是什么网站网络科技公司可以去吗
  • 抖音创作者服务平台上海seo培训中心
  • 自己做网站app甘肃网站域名申请公司
  • 电子商务网站开发的课程介绍2023年新闻摘抄