iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >用Python爬取电影数据并可视化分析
  • 350
分享到

用Python爬取电影数据并可视化分析

python信息可视化开发语言 2023-08-31 21:08:21 350人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

  🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬

 3f6a7ab0347a4af1a75e6ebadee63fc1.gif

🤵‍♂️ 个人主页:@艾派森的个人主页

✍🏻作者简介:python学习
🐋 希望大家多多支持,我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注+


目录

一、获取数据

1.技术工具

2.爬取目标

3.字段信息

二、数据预处理

1.加载数据

2.异常值处理

3.字段处理

三、数据可视化

四、总结

文末福利


 

一、获取数据

1.技术工具

IDE编辑器:vscode

发送请求:requests

解析工具:xpath

def Get_Detail(Details_Url):    Detail_Url = Base_Url + Details_Url    One_Detail = requests.get(url=Detail_Url, headers=Headers)    One_Detail_html = One_Detail.content.decode('gbk')    Detail_Html = etree.HTML(One_Detail_Html)    Detail_Content = Detail_Html.xpath("//div[@id='Zoom']//text()")    Video_Name_CN,Video_Name,Video_Address,Video_Type,Video_language,Video_Date,Video_Number,Video_Time,Video_Daoyan,Video_Yanyuan_list = None,None,None,None,None,None,None,None,None,None    for index, info in enumerate(Detail_Content):        if info.startswith('◎译  名'):            Video_Name_CN = info.replace('◎译  名', '').strip()        if info.startswith('◎片  名'):            Video_Name = info.replace('◎片  名', '').strip()        if info.startswith('◎产  地'):            Video_Address = info.replace('◎产  地', '').strip()        if info.startswith('◎类  别'):            Video_Type = info.replace('◎类  别', '').strip()        if info.startswith('◎语  言'):            Video_language = info.replace('◎语  言', '').strip()        if info.startswith('◎上映日期'):            Video_Date = info.replace('◎上映日期', '').strip()        if info.startswith('◎豆瓣评分'):            Video_Number = info.replace('◎豆瓣评分', '').strip()        if info.startswith('◎片  长'):            Video_Time = info.replace('◎片  长', '').strip()        if info.startswith('◎导  演'):            Video_Daoyan = info.replace('◎导  演', '').strip()        if info.startswith('◎主  演'):            Video_Yanyuan_list = []            Video_Yanyuan = info.replace('◎主  演', '').strip()            Video_Yanyuan_list.append(Video_Yanyuan)            for x in range(index + 1, len(Detail_Content)):                actor = Detail_Content[x].strip()                if actor.startswith("◎"):                    break                Video_Yanyuan_list.append(actor)    print(Video_Name_CN,Video_Date,Video_Time)    f.flush()    try:        csvwriter.writerow((Video_Name_CN,Video_Name,Video_Address,Video_Type,Video_language,Video_Date,Video_Number,Video_Time,Video_Daoyan,Video_Yanyuan_list))    except:        pass

保存数据:csv

if __name__ == '__main__':    with open('movies.csv','a',encoding='utf-8',newline='')as f:        csvwriter = csv.writer(f)        csvwriter.writerow(('Video_Name_CN','Video_Name','Video_Address','Video_Type','Video_language','Video_Date','Video_Number','Video_Time','Video_Daoyan','Video_Yanyuan_list'))        spider(117)

2.爬取目标

        本次爬取的目标网站是阳光电影网https://www.ygdy8.net,用到技术为requests+xpath。主要获取的目标是2016年-2023年之间的电影数据。

3.字段信息

        获取的字段信息有电影译名、片名、产地、类别、语言、上映时间、豆瓣评分、片长、导演、主演等,具体说明如下:

字段名含义

Video_Name_CN

电影译名

Video_Name

电影片名

Video_Address

电影产地

Video_Type

电影类别

Video_language

电影语言

Video_Date

上映时间

Video_Number

电影评分

Video_Time

片长

Video_Daoyan

导演

Video_Yanyuan_list

主演列表

2eb1c81e86c946a9bb0f639a603507ec.png

二、数据预处理

技术工具:jupyter notebook

1.加载数据

首先使用pandas读取刚用爬虫获取的电影数据

9777abe0e1d343f683e8693af8b2d2e7.png

2.异常值处理

这里处理的异常值包括缺失值和重复值

首先查看原数据各字段的缺失情况

7eb50ac4e1514425a915b6dec4483703.png

 从结果中可以发现缺失数据还蛮多的,这里就为了方便统一删除处理,同时也对重复数据进行删除

831de5c76758493c8127b2e4c55ed5d8.png

可以发现经过处理后的数据还剩1711条。

3.字段处理

由于爬取的原始数据中各个字段信息都很乱,出现很多“/”“,”之类的,这里统一进行处理,主要使用到pandas中的apply()函数,同时由于我们分析的数2016-2023年的电影数据,除此之外的进行删除处理

# 数据预处理data['Video_Name_CN'] = data['Video_Name_CN'].apply(lambda x:x.split('/')[0]) # 处理Video_Name_CNdata['Video_Name'] = data['Video_Name'].apply(lambda x:x.split('/')[0]) # 处理Video_Namedata['Video_Address'] = data['Video_Address'].apply(lambda x:x.split('/')[0])  # 处理Video_Addressdata['Video_Address'] = data['Video_Address'].apply(lambda x:x.split(',')[0].strip())data['Video_language'] = data['Video_language'].apply(lambda x:x.split('/')[0])data['Video_language'] = data['Video_language'].apply(lambda x:x.split(',')[0])data['Video_Date'] = data['Video_Date'].apply(lambda x:x.split('(')[0].strip())data['year'] = data['Video_Date'].apply(lambda x:x.split('-')[0])data['Video_Number'] = data['Video_Number'].apply(lambda x:x.split('/')[0].strip())data['Video_Number'] = pd.to_numeric(data['Video_Number'],errors='coerce')data['Video_Time'] = data['Video_Time'].apply(lambda x:x.split('分钟')[0])data['Video_Time'] = pd.to_numeric(data['Video_Time'],errors='coerce')data['Video_Daoyan'] = data['Video_Daoyan'].apply(lambda x:x.split()[0])data.drop(index=data[data['year']=='2013'].index,inplace=True)data.drop(index=data[data['year']=='2014'].index,inplace=True)data.drop(index=data[data['year']=='2015'].index,inplace=True)data.dropna(inplace=True)data.head()

d4b371dc9cd5455abf1680f37929c04b.png

三、数据可视化

1.导入可视化库

本次可视化主要用到matplotlib、seaborn、pyecharts等第三方库

import matplotlib.pylab as pltimport seaborn as snsfrom pyecharts.charts import *from pyecharts.faker import Fakerfrom pyecharts import options as  opts from pyecharts.globals import ThemeTypeplt.rcParams['font.sans-serif'] = ['SimHei'] #解决中文显示plt.rcParams['axes.unicode_minus'] = False   #解决符号无法显示

2.分析各个国家发布的电影数量占比

# 分析各个国家发布的电影数量占比df2 = data.groupby('Video_Address').size().sort_values(ascending=False).head(10)a1 = Pie(init_opts=opts.InitOpts(theme = ThemeType.LIGHT))a1.add(series_name='电影数量',        data_pair=[list(z) for z in zip(df2.index.tolist(),df2.values.tolist())],        radius='70%',        )a1.set_series_opts(tooltip_opts=opts.TooltipOpts(trigger='item'))a1.render_notebook()

0cb43f91c069428a869464b8154f2356.png

3.发布电影数量最高Top5导演

# 发布电影数量最高Top5导演a2 = Bar(init_opts=opts.InitOpts(theme = ThemeType.DARK))a2.add_xaxis(data['Video_Daoyan'].value_counts().head().index.tolist())a2.add_yaxis('电影数量',data['Video_Daoyan'].value_counts().head().values.tolist())a2.set_series_opts(itemstyle_opts=opts.ItemStyleOpts(color='#B87333'))a2.set_series_opts(label_opts=opts.LabelOpts(position="top"))a2.render_notebook()

3729dda2f8134060be3c22b02877201d.png

4.分析电影平均评分最高的前十名国家

# 分析电影平均评分最高的前十名国家data.groupby('Video_Address').mean()['Video_Number'].sort_values(ascending=False).head(10).plot(kind='barh')plt.show()

b5c0bb8766ad4b59a956bd85eb80d771.png

5.分析哪种语言最受欢迎

# 分析哪种语言最受欢迎from pyecharts.charts import WordCloudimport collectionsresult_list = []for i in data['Video_language'].values:    word_list = str(i).split('/')    for j in word_list:        result_list.append(j)result_listword_counts = collections.Counter(result_list)# 词频统计:获取前100最高频的词word_counts_top = word_counts.most_common(100)wc = WordCloud()wc.add('',word_counts_top)wc.render_notebook()

0a6985be59194a13b35e0ebcffa99eb0.png

6.分析哪种类型电影最受欢迎

# 分析哪种类型电影最受欢迎from pyecharts.charts import WordCloudimport collectionsresult_list = []for i in data['Video_Type'].values:    word_list = str(i).split('/')    for j in word_list:        result_list.append(j)result_listword_counts = collections.Counter(result_list)# 词频统计:获取前100最高频的词word_counts_top = word_counts.most_common(100)wc = WordCloud()wc.add('',word_counts_top)wc.render_notebook()

a45b8c08cbdc42b89ed7e49665b2b3d5.png

7.分析各种类型电影的比例

# 分析各种类型电影的比例word_counts_top = word_counts.most_common(10)a3 = Pie(init_opts=opts.InitOpts(theme = ThemeType.MacARONS))a3.add(series_name='类型',        data_pair=word_counts_top,        rosetype='radius',        radius='60%',        )a3.set_global_opts(title_opts=opts.TitleOpts(title="各种类型电影的比例",                        pos_left='center',                    pos_top=50))a3.set_series_opts(tooltip_opts=opts.TooltipOpts(trigger='item',fORMatter='{a} 
{b}:{c} ({d}%)'))a3.render_notebook()

55179367949d41dabc16322715245895.png

 8.分析电影片长的分布

# 分析电影片长的分布sns.displot(data['Video_Time'],kde=True)plt.show()

198a8105d28e49f5bfad37f07c7bb327.png

 9.分析片长和评分的关系

# 分析片长和评分的关系plt.scatter(data['Video_Time'],data['Video_Number'])plt.title('片长和评分的关系',fontsize=15)plt.xlabel('片长',fontsize=15)plt.ylabel('评分',fontsize=15)plt.show()

0f8408e04743414f9a96ab8ca3a9f380.png

10.统计 2016 年到至今的产出的电影总数量

# 统计 2016 年到至今的产出的电影总数量df1 = data.groupby('year').size()line = Line()line.add_xaxis(xaxis_data=df1.index.to_list())line.add_yaxis('',y_axis=df1.values.tolist(),is_smooth = True)  line.set_global_opts(xaxis_opts=opts.AxisOpts(splitline_opts = opts.SplitLineOpts(is_show=True)))line.render_notebook()

b5c16c900c4f42cbb97da0958808dd34.png

四、总结

本次实验通过使用爬虫获取2016年-2023年的电影数据,并可视化分析的得出以下结论:

2016年-2019年电影数量逐渐增大,2019年达到最大值,从2020年开始迅速逐年下降。

发布电影数量最多的国家是中国和美国。

电影类型最多的剧情片。

电影片长呈正态分布,且片长和评分呈正相关关系。

 

文末福利

《MySQL数据库基础与实战应用》免费送出!

aba35a4fc7394d8799e66d36c467b01a.jpeg

内容简介:

        Mysql 数据库性能优越,功能强大,是深受读者欢迎的开源数据库之一。本书由浅入深、循序渐进、系统地介绍了mysql 的相关知识及其在数据库开发中的实际应用,并通过具体案例,帮助读者巩固所学知识,以便更好地开发实践。

        全书共分为13 章,内容涵盖了认识与理解数据库、安装与配置Mysql 数据库、数据库与数据表的基本操作、数据查询、索引的创建与管理、视图的创建与管理、触发器、事务、事件、存储过程与存储函数、访问控制与安全管理、数据库的备份与恢复,以及综合的实践教学项目—图书管理系统数据库设计。

        本书结合全国计算机等级考试二级MySQL 考试大纲编写,章节后面配有习题,适当融入思政元素,并配备了相应的教案与课件。本书内容丰富,讲解深入,适合初级、中级MySQL 用户,既可以作为各类高等职业技术院校与职业本科院校相关专业的课程教材,也可以作为广大MySQL 爱好者的实用参考书。

参与福利 

  • 抽奖方式:评论区随机抽取2位小伙伴免费送出!
  • 参与方式:关注博主、点赞、收藏、评论区评论“人生苦短,我用Python!”(切记要点赞+收藏,否则抽奖无效,每个人最多评论三次!
  • 活动截止时间:2023-04-13 20:00:00
  •  京东自营购买链接https://item.jd.com/13663131.html

名单公布时间:2023-04-13 21:00:00  

90aa748736f44afd9cb6046bbe9e9bf3.png

 

来源地址:https://blog.csdn.net/m0_64336780/article/details/130064636

--结束END--

本文标题: 用Python爬取电影数据并可视化分析

本文链接: https://www.lsjlt.com/news/387094.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 用Python爬取电影数据并可视化分析
      🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬...
    99+
    2023-08-31
    python 信息可视化 开发语言
  • Python实现爬取天气数据并可视化分析
    目录核心功能设计实现步骤爬取数据风向风级雷达图温湿度相关性分析24小时内每小时时段降水24小时累计降雨量今天我们分享一个小案例,获取天气数据,进行可视化分析,带你直观了解天气情况! ...
    99+
    2024-04-02
  • Python爬取天气数据及可视化分析
    正文 大家好,我是Python人工智能技术天气预报我们每天都会关注,我们可以根据未来的天气增减衣物、安排出行,每天的气温、风速风向、相对湿度、空气质量等成为关注的焦点。得到温湿度度变化曲线、空气质量图、风向雷达图等结果,为获得未来天气信息提...
    99+
    2023-05-14
    Python 天气数据 可视化分析
  • Python怎么实现爬取天气数据并可视化分析
    本篇内容主要讲解“Python怎么实现爬取天气数据并可视化分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python怎么实现爬取天气数据并可视化分析”吧!核心功能设计总体来说,我们需要先对中...
    99+
    2023-06-29
  • 数据分析案例-电影数据可视化分析
    数据介绍 数据为2011-2021电影数据 可视化分析 首先导入本次项目需要的包和数据 import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport ...
    99+
    2023-10-03
    python 数据分析
  • Python爬虫爬取疫情数据并可视化展示
    目录知识点开发环境爬虫完整代码导入模块分析网站发送请求获取数据解析数据保存数据数据可视化导入模块读取数据死亡率与治愈率各地区确诊人数与死亡人数情况知识点 爬虫基本流程 ...
    99+
    2024-04-02
  • 网络爬虫丨基于requests+mysql爬取猫眼热门电影数据做可视化分析
    文章目录 写在前面实验描述实验内容遇到问题 写在后面 写在前面 本期内容:基于requests+mysql爬取猫眼热门电影数据做可视化分析 实验需求 anaconda丨pycharmp...
    99+
    2024-01-21
    爬虫 mysql 数据库
  • Python实战实现爬取天气数据并完成可视化分析详解
    目录实现需求:爬虫代码:实现需求: 从网上(随便一个网址,我爬的网址会在评论区告诉大家,dddd)获取某一年的历史天气信息,包括每天最高气温、最低气温、天气状况、风向等,完成以下功能...
    99+
    2024-04-02
  • Python爬取当网书籍数据并数据可视化展示
    目录一、开发环境二、模块使用三、爬虫代码实现步骤1. 导入所需模块2. 发送请求, 用python代码模拟浏览器发送请求3. 解析数据, 提取我们想要数据内容4. 多页爬取5. 保存...
    99+
    2024-04-02
  • Python爬取股票交易数据并可视化展示
    目录开发环境第三方模块爬虫案例的步骤爬虫程序全部代码分析网页导入模块请求数据解析数据翻页保存数据实现效果数据可视化全部代码导入数据读取数据可视化图表效果展示 开发环境 解释器版本: ...
    99+
    2024-04-02
  • Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
    一、前言 二、爬取观影数据 https://movie.douban.com/ 在『豆瓣』平台爬取用户观影数据。 爬取用户列表 网页分析 为了获取用户,我选择了其中一部...
    99+
    2024-04-02
  • Python怎么爬取当网书籍数据并数据可视化展示
    Python怎么爬取当网书籍数据并数据可视化展示,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、开发环境Python 3.8Pycharm 2021.2 专业...
    99+
    2023-06-22
  • Python爬取雪中悍刀行弹幕分析并可视化详程
    目录哔哔一下爬虫部分代码部分效果展示数据可视化代码展示效果展示福利环节哔哔一下 雪中悍刀行兄弟们都看过了吗?感觉看了个寂寞,但又感觉还行,原谅我没看过原著小说~ 豆瓣评分5.8,说明...
    99+
    2024-04-02
  • Python爬取天气数据及可视化分析的方法是什么
    这篇文章主要讲解了“Python爬取天气数据及可视化分析的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python爬取天气数据及可视化分析的方法是什么”吧!1、数据获取请求网站链...
    99+
    2023-07-06
  • Python怎么爬取股票交易数据并可视化展示
    本篇内容介绍了“Python怎么爬取股票交易数据并可视化展示”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!开发环境解释器版本: python...
    99+
    2023-06-21
  • Python爬虫实战之爬取京东商品数据并实实现数据可视化
    一、开发工具 Python版本:3.6.4 相关模块: DecryptLogin模块; argparse模块; 以及一些python自带的模块。 二、环境搭建 安装Python并添加...
    99+
    2024-04-02
  • Python中如何爬取京东商品数据并实现数据可视化
    这篇文章将为大家详细讲解有关Python中如何爬取京东商品数据并实现数据可视化,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、开发工具Python版本:3.6.4相关模块:DecryptLogin模块;...
    99+
    2023-06-15
  • python数据分析绘图可视化
    前言: 数据分析初始阶段,通常都要进行可视化处理。数据可视化旨在直观展示信息的分析结果和构思,令某些抽象数据具象化,这些抽象数据包括数据测量单位的性质或数量。本章用的程序库matpl...
    99+
    2024-04-02
  • Python数据可视化举例分析
    这篇文章主要介绍“Python数据可视化举例分析”,在日常操作中,相信很多人在Python数据可视化举例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python数据可视化举例分析”的疑惑有所帮助!接下来...
    99+
    2023-06-16
  • Python疫情数据可视化分析
    目录前言功能函数读取文件更换列名,便于查看全球疫情趋势筛选出中国的数据利用groupby按照省统计确诊死亡治愈病例的总和确诊人数排名前15的国家这里用pyecharts库画图,绘制的...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作