数据分析与可视化是当今数据分析的发展方向,大数据时代,数据资源具有海量特征,数据分析和可视化主要通过Python数据分析来实现。
基于Python的数据分析可视化和技术实现是目前Python数据分析的主要目的,Python可以为数据分析可视化提供思路,在体现数据价值方面发挥着重要作用。因此,在研究数据分析、可视化的过程中,我们可以看到Python具有重要的应用价值。
影视数据分析应用统计分析方法对收集来的大量数据进行分析,提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。这一过程也是质量管理体系的支持过程。影视数据分析可帮助人们做出观看影视的选择及投入更合适的影视,尤其对视频管理平台有很好的帮助。影视数据分析是建立在数基础,20世纪早期就已确立,但直到计算机的出现才使得实际操作成为可能,并使得数据分析得以推广。同时,在数据获取、处理和分析过程中考虑数据安全、技术经济、工程伦理、行业规范等要素。
本设计内容涉及的数据一部分来自Reelgood.com网站,其中包括四种流媒体平台上可用电影的综合列表;另一部分来自IMDB数据集。要求应用pands对下列问题进行数据分析:
本系统主要分为四个部分,分别为爬虫抓取、数据处理分析可视化、GUI界面展示、启动运行,分别对应getData.py、pyec.py、GUI.py、main.py四个文件。并且包含data文件夹用于存储系统所需或产生的数据文件。
系统结构如图所示:
getData.py该文件主要功能是抓取和读取电影数据,共包含8个函数,代码如下:
recently()这一函数主要是抓取最近上映票房排名前十名的电影信息。
res=requests.post(url,headers=header,data=post_BoxOffice_Day_data).textjson_data=json.loads(res)data0=json_data['data']['table0']data1=json_data['data']['table1']以上代码块是运行爬虫并将其解析为json形式,方便后面对数据进行取出。
movie_rank=[]movie_details_MovieName=[]movie_details_BoxOffice=[]movie_details_ShowCount=[]movie_details_AudienceCount=[]movie_details_Attendance=[]movie_percent_BoxOfficePercent=[]movie_percent_ShowCountPercent=[]movie_percent_AudienceCountPercent=[]以上代码是部分定义的所需的数据字段。
foriinrange(10):movie_rank.append(data0[i]['Irank'])movie_details_MovieName.append(data0[i]['MovieName'])movie_details_BoxOffice.append(data0[i]['BoxOffice'])movie_details_ShowCount.append(data0[i]['ShowCount'])movie_details_AudienceCount.append(data0[i]['AudienceCount'])movie_details_Attendance.append(data0[i]['Attendance'])以上是从json数据中取数据的过程。
showing()这一函数主要抓取最近正在上映的所有电影的基本信息。history()这一函数主要是读取历史电影数据并返回列表格式
defhistory():data=pd.read_csv("data/moviesBoxOffice.csv",encoding='gbk')data=np.array(data[:100]).tolist()returndata利用pandas库读取csv文件,numpy对DataFrame形式数据转换为list格式的过程。
predict_data()这一函数主要是读取历史电影数据进行建模,建模完成后,读取需要预测的在映电影数据,对其进行票房预测并返回。hotMovies()这一函数主要是抓取当前在映票房前五的电影七天内的票房数据。
Tablets()这一函数主要是对近期在映电影的排片数据进行抓取并返回。
GUI.py该文件主要是为系统构建GUI界面,共有15个函数,具体代码如下:create_tree_showing该函数主要是为正在上映的电影数据创建数据表格。代码块先是确定数据表头,然后创建表格并设置其父窗体,表格一次性显示数据行数,是否显示表头等参数,然后分别设置表格数据列及每列的宽度。代码块设置表头文本信息,再设置该信息表的垂直滚动条。
create_tree_tablets该函数主要是为在映电影的排片数据创建数据表格。create_tree_history该函数主要是为历史电影数据创建数据表格。
create_tree_predict该函数主要是为在映电影票房预测结果数据创建数据表格。clear_tree该函数主要功能是在切换展示数据表格时,对已展示表格数据进行清除。该函数有一个tree参数,首先对tree进行销毁,再对该表格的垂直滚动条进行销毁。
showing该函数对应按钮’在映电影’,用于实现获取在映电影数据功能。history该函数对应按钮’历史电影’,用于实现获取历史电影数据功能。
predict该函数对应按钮’在映电影票房预测’,用于实现对在映电影票房预测并展示。tablets该函数对应按钮’拍片分析’,用于实现获取排片分析数据功能。
center_window该函数是创建整个GUI窗体的函数。clicking该函数对应’在映电影分析’按钮,用于跳转在映电影分析网页。先调用getData.py下的recently函数获取在映电影数据,再调用pyec.py文件下的Showing函数进行统计图表制作,最后跳转到数据图表网页。
clicked该函数对应’历史数据分析’按钮,用于跳转电影票房分析网页。industry该函数对应’数据大盘’按钮,用于跳转数据大盘网页。
ui_process该函数主要是对GUI窗体控件等进行布局。创建根窗体,设置GUI的名称,大小,整体高亮颜色,对内部子窗体进行了初始化并且在子窗体的左上角添加了一张logo图片。在子窗体设置了各个功能对应的按钮。设置了整体窗体的布局,以及各个子窗体控件的设置,设置了窗体列参数及运行了整个窗体。
main.py该函数是整个系统的GUI入口,调用并运行了GUI。
fromGUIimportuiobif__name__=='__main__':ui=uiob()ui.ui_process()
pyec.py该文件主要是对getData.py文件获取到的数据进行可视化操作,共有3个函数,代码功能详解如下:
History()该函数主要是对历史电影数据进行可视化,具体代码如下:
csv_file='data/moviesBoxOffice.csv'#设置csv文件的路径data=pd.read_csv(csv_file,encoding='gbk')#使用pandas读取csv文件中的数据data_type=data['影片主分类'].value_counts()#统计影片主分类的各类别数量data_BoxOffice=data['总票房(万)'][:10]#获取前10部电影的总票房数据该代码块主要是读取历史电影票房数据为画图做前期准备工作。
Showing()该函数主要是对正在上映的电影进行数据分析,包含在映电影的票房、场次、人次、上座率五个柱形统计图,影片票房占比、场次占比、人次占比三个饼状统计图,影片地域分布票房、场次、人次三个层叠柱形图。
下面是该系统的主要功能及技术指标:
数据获取和预处理:
使用pandas读取数据文件;拆分不同的属性信息,形成列表、元组、字典或集合;删除空列或行;观察数据并清洗错误数据;-使用pandas对数据整理,方便之后的分析和可视化。
数据分析:
使用numpy和pandas对数据预处理后的数据进行分析,设计七种以上的数据分析场景。
数据可视化:
利用Matplotlib和seaborn分别对每种分析场景可视化。
数据涉及的数据项:-ID-Title-Year-Age-IMDb-RottenTomatoes-Netflix-Hulu-PrimeVideo-Disney+-Type-Directors-Genres-Country-Language-Runtime
使用到的库包括:numpy、pandas、matplotlib、seaborn等。开发工具选用jupyternotebook或pythonIDE等Python开发工具。