大数据分析——电影大热榜

大数据分析——电影大热榜

一、选题的背景

随着国家的富强,人们的生活水平也得到提升。在茶余饭后现在人们都喜欢在视频软件上追剧看电影。来打法时间。“爱奇艺”是当下热门的视频软件之一广受大众喜爱。

从社会层面看,把电影制作成视图看人让观众更加容易的知道那些电影更加受欢迎,从而让人们更加方便的选择自己想看的电影。

从经济角度看,让观众知道那些电影是受欢迎的同时,使得那些电影更受到欢迎,激发电影进行二次收益。使得电影的衍生产品也更加受到欢迎。

从数据来源看,爱奇艺是一个热门的且成熟的视频网站,所以获取数据比较容易。且热门电影数据也很好获取

二、大数据分析设计方案

本数据集的数据内容包含着爱奇艺电影热门的前十电影,包含着电影名称,最高热度,评分等数据特征。采用了对比分析,统计分析等数据特征分析来诠释爱奇艺热门电影前十之间反差。本次方案显示采用爬虫的方案,爬取出热门电影前十的信息,然后应用可视化分析的方法展示。

三、数据分析步骤

1.数据源

本次分析的数据集获取来源于爱奇艺网站,将数据收集整理出热门前10的电影及相关信息以excel文件格式进行数据下载。

2.数据清洗

数据清洗一般是指处理数据集中的脏数据,比如一些无效值和缺失值、数据中有不需要的字符、数据不一致等。用爬虫爬下数据后,发现并没有重复值,缺失值,异常值的问题出现。所以仅用了

plt.rcParams['font.sans-serif']=['SimHei'](为图表的中文文本设置默认字体,以避免中文显示乱码问题);plt.rcParams['axes.unicode_minus'] = False(解决坐标值为复数时无法显示负号的问题)进行数据清理。

  1. 大数据分析过程及采用的算法

运用了第三方库Matplotlib。Matplotlib库在数据可视化中的场景中是应用最为广泛的,它也可以根据一定的数据就去画出一些数学或者是统计的图表。

使用Matplotlib库能直接用方法画的图有散点图、条形图、柱状图、饼图、错误图、中方图、功率谱等等,甚至是还可以画出地理和天文方向上面的降雨图、地形差图和山河分布图等等不同的图像。除了使用方法去绘制已经固定好的图像之外还可以去自定义的绘制想画的任意图案,也可以去绘制能够在浏览器上进行交互的图像。

  1. 数据可视化

1.此用柱状图便于用户理解大量数据以及数据相互之间的关系,更加快速直观的读取数据。x轴用以表“电影名称”,y轴用以表示“热度值”。用冷色蓝色表示“实时热度”。用暖色粉色表示“最高热度”。因为两色差度大可避免看错。

2.此用折线图来表示。x轴用以表“电影名称”,y轴用以表示“热度值”。粉线“最高热度”的变化差异不大说明几部热门电影在最高热度的表示可以不分伯仲。但是蓝线“实时热度”差异明显,说明前不久播出的万里归途广受大家热评。

3.此加入了折线图与组状图双重元素可以更加直观的反应了评分与最高热度之间的关系。x轴用以表“电影名称”,y轴用以表示“热度值”和“评分”。由此可以看出部分电影热度高但评分不一定高。热度和评分不是必然的关系。

4.此用棉棒图表示,x轴用以表“电影名称”,y轴用以表示“人数”。由此看出战狼2和哪吒最受欢迎。并有极大的差距。

5.此用箱形型图表示电影的点赞人数与电影评分。箱型图可以很多反映数据分布的特征。电影点赞人数反应有两部电影很受大众欢迎与电影形成很大的差距,其他电影点赞人数都在10万一下。电影评分反应大多数电影都分布在9.5与9.1之间但有一个电影与之相比差强人意只要8.4。

5.附完整程序源代码

1.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
#提取excel中的数据
df=pd.read_excel(r"E:\pythonProject2\电影热度.xlsx")
x=np.arange(10)
y1=df["最高热度"]
y2=df["实时热度"]
labels=df["电影名称"]
#设置柱形宽度
bar_width=0.3
#创建画布
fig=plt.figure()
ax=fig.add_subplot(111)
#创建柱形图
ax.bar(x,y1,tick_label=labels,width=bar_width,color="pink")
ax.bar(x+bar_width,y2,width=bar_width,color="#65aaee")
#设置x轴标签
ax.set_xlabel("电影名称",fontsize=18)
#设置y轴标签
ax.set_ylabel("热度值",fontsize=18)
#设置图表标题
ax.set_title("爱奇艺电影热度榜",fontsize=25)
#创建图例
ax.legend(['最高热度','实时热度'],fontsize=20)
#设置x轴刻度标签
ax.set_xticklabels(labels,fontsize=10)

#设置y轴标签

ax.set_yticklabels([1000,2000,3000,4000,5000,6000,7000,8000],fontsize=18)
#隐藏上方和右方轴脊
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
plt.show()

2.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
#提取excel中的数据
df=pd.read_excel(r"E:\pythonProject2\电影热度.xlsx")
x=np.arange(10)
y1=df["最高热度"]
y2=df["实时热度"]
labels=df["电影名称"]
#创建画布
fig=plt.figure()
ax=fig.add_subplot(111)
#创建折线图
ax.plot(x,y1,color="pink",lw=3)
ax.plot(x,y2,color="#65aaee",lw=3)
#设置x轴标签
ax.set_xlabel("电影名称",fontsize=18)
#设置y轴标签
ax.set_ylabel("热度值",fontsize=18)
#设置图表标题
ax.set_title("爱奇艺电影热度折线图",fontsize=25)
#创建图例
ax.legend(['最高热度','实时热度'],fontsize=20)
#设置x轴刻度标签
ax.set_xticklabels(labels,fontsize=10)
ax.set_xticks(x)
#设置y轴刻度标签
ax.set_yticklabels([1000,2000,3000,4000,5000,6000,7000,8000],fontsize=18)
#隐藏上方和右方轴脊
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
#设置网格线
ax.grid(b=True,axis='both',lw=0.3)
plt.show()

3.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
#提取excel中的数据
df=pd.read_excel(r"E:\pythonProject2\电影热度.xlsx")
x=np.arange(10)
y1=df["最高热度"]
y2=df["评分"]
labels=df["电影名称"]
#创建画布
fig=plt.figure()
ax=fig.add_subplot(111)
bar_width=0.4
#创建柱形图
ax.bar(x,y1,width=bar_width,color="pink")
#创建折线图
ax_right=ax.twinx()
ax_right.plot(x,y2,color="#65aaee",lw=3)
#设置x轴标签
ax.set_xlabel("电影名称",fontsize=18)
#设置y轴标签
ax.set_ylabel("热度值",fontsize=18)
ax_right.set_ylabel("评分",fontsize=18)
#设置图表标题
ax.set_title("爱奇艺电影热度评分榜",fontsize=25)
#创建图例
ax.legend(['最高热度'],fontsize=20,loc='upper left')
ax_right.legend(['评分'],fontsize=20,loc='upper right')
#设置x轴刻度标签
ax.set_xticklabels(labels,fontsize=10)
ax.set_xticks(x)
#设置y轴刻度标签
ax.set_ylim(7600,8600)
ax.set_yticklabels([7600,7800,8000,8200,8400,8600],fontsize=18)
ax_right.set_ylim(8.4,9.6)
ax_right.set_yticklabels([8.4,8.6,8.8,9.0,9.2,9.4,9.6],fontsize=18)
#隐藏上方和右方轴脊
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
plt.show()

4.

import numpy as np
import pandas as pd
import matplotlib.colors as mcolors
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
#提取excel中的数据
df=pd.read_excel(r"E:\pythonProject2\电影热度.xlsx")
x=np.arange(10)
y=df["点赞人数(万)"]
labels=df["电影名称"]
#创建画布
fig=plt.figure()
ax=fig.add_subplot(111)
#绘制棉棒图
markerline,stemline,baseline=ax.stem(x,y,linefmt='-.',markerfmt='*',use_line_collection=True)
plt.setp(stemline,lw=4,color='pink')
plt.setp(markerline,lw=1,ms=26,color='#65aaee')
plt.setp(baseline,lw=1,color='black')
#设置x轴标签
ax.set_xlabel("电影名称",fontsize=18)
#设置y轴标签
ax.set_ylabel("人数(万)",fontsize=18)
#设置图表标题
ax.set_title("爱奇艺电影点赞人数棉棒图",fontsize=25,pad=18)
#创建图例
ax.legend(['最高热度','实时热度'],fontsize=20)
#设置x轴刻度标签
ax.set_xticklabels(labels,fontsize=10)
ax.set_xticks(x)
#设置y轴刻度
ax.set_ylim(0,70)
ax.set_yticklabels([0,10,20,30,40,50,60,70],fontsize=18)
#添加无指向性注释文本
for a,b in zip(x,y):
ax.text(a,b,'%.1f'%b,ha='center',va='bottom',fontsize=16)
plt.show()

5.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
#提取excel中的数据
df=pd.read_excel(r"E:\pythonProject2\电影热度.xlsx")
y1=df["点赞人数(万)"]
y2=df["评分"]
#创建画布
fig=plt.figure()
ax1=fig.add_subplot(121)
ax2=fig.add_subplot(122)
#创建箱型图
ax1.boxplot(y1,meanline=True,widths=0.5,patch_artist=True,
boxprops=dict(facecolor="#edcae6",color="#f16eb6"),
capprops=dict(color="#080bd4"),
whiskerprops=dict(color="#080bd4"),
flierprops=dict(markeredgecolor="#d826e7"),
medianprops=dict(color="#d40864"))
ax2.boxplot(y2,meanline=True,widths=0.5,patch_artist=True,
boxprops=dict(facecolor="#94e6eb", color="#06b9cb"),
capprops=dict(color="#5808d4"),
whiskerprops=dict(color="#5808d4"),
medianprops=dict(color="#0579ed"))
#设置图表标题
ax1.set_title("爱奇艺电影点赞人数箱型图",fontsize=25,pad=18)
ax2.set_title("爱奇艺电影评分箱型图",fontsize=25,pad=18)
#设置x轴刻度标签
ax1.set_xticklabels(["点赞人数(万)"],fontsize=18)
ax2.set_xticklabels(["评分"],fontsize=18)
#设置y轴刻度标签
ax1.set_yticklabels([0,10,20,30,40,50,60,70],fontsize=18)
ax2.set_yticklabels([8.2,8.4,8.6,8.8,9.0,9.2,9.4,9.6],fontsize=18)
plt.show()

四、总结

通过这门课程我了解到爬虫,可视化等等的相关信息。在经过数据分析的同时也保证数据的清洗,数据清洗可以够确保所有数据集应保持一致并且没有任何错误,为以后数据的使用和分析提供支撑。在本次的设计过程中还察觉到自己可视化是一个有趣的技术它可以将网络的数据生动形象的体现在用户面前,让实用着可以更加了解所用实用东西。同时对算法方法的知识还是有着片面与薄弱。在后续的学习还需要加以补强。

posted @ 2022-12-24 16:22  644444  阅读(139)  评论(0)    收藏  举报