文章目录

  • 数据分析
  • 数据预处理
  • 上映年份分布
  • 评分分布情况
  • 排名与评分分布情况
  • 评论人数TOP10
  • 导演排名
  • 电影类型图


数据分析

获取数据后,就可以对自己感兴趣的内容进行分析了

数据预处理

from matplotlib import pyplot as plt
import pandas as pd



df = pd.read_excel("Top250.xlsx",index_col=False)
df.head()
  • 上映年份格式不统一
year = []
for i in df["上映年份"]:
    i = i[0:4]
    year.append(i)
df["上映年份"] = year
df["上映年份"].value_counts()
x1 = list(df["上映年份"].value_counts().sort_index().index)
y1 = list(df["上映年份"].value_counts().sort_index().values)
y1 = [str(i) for i in y1]

上映年份分布

最后的.render('.html')会创建一个html的文件,图表就在其中,如果你在jupyter下运行的代码,可以改为.render_notebook()

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker
c1 = (
    Bar()
    .add_xaxis(x1)
    .add_yaxis("影片数量", y1)
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Top250年份分布"),
        datazoom_opts=opts.DataZoomOpts(),
    )
    .render("上映年份.html")
)
c1

Python电影票房爬虫 基于python电影票房分析_词云

  • 这里可以看出电影TOP250里,电影的上映年份,多分布于80年代以后。其中有好几年是在10部及以上的。
  • 从年份的分布情况看,大部分高分电影都上映在 1987 年之后,并且随着时间逐渐增加,而近两年的高分电影的数量相对比较少。

评分分布情况

plt.figure(figsize=(10,6))
plt.hist(list(df["评分"]),bins=8,facecolor="blue", edgecolor="black", alpha=0.7)
plt.show()

Python电影票房爬虫 基于python电影票房分析_词云_02

  1. 从上图分析,随着评分升高,排名也基本靠前,评分主要集中在 8.4~9.2 之间。同时可以通过 pandas 计算平均数,众数和相关系数,平均分为 8.83 分,众数为 8.7 分,而相关系数为 -0.6882,评分与排名强相关。
  2. 大多分布于「8.5」到「9.2」之间。最低「8.3」,最高「9.6」

排名与评分分布情况

plt.figure(figsize=(10,5), dpi=100)
plt.scatter(df.index,df['评分'])
plt.show()

Python电影票房爬虫 基于python电影票房分析_Python电影票房爬虫_03


总的来说,排名越靠前,评价人数越多,并且分数也越高。

评论人数TOP10

c2 = (
    Bar()
    .add_xaxis(df1["电影名称"].to_list())
    .add_yaxis("评论数", df1["评价分数"].to_list(),color=Faker.rand_color())
    .reversal_axis()
    .set_series_opts(label_opts=opts.LabelOpts(position="right"))
    .set_global_opts(title_opts=opts.TitleOpts(title="电影评论Top10"))
    .render("评论人数TOP10.html")
)
c2

Python电影票房爬虫 基于python电影票房分析_数据分析_04


让我们来看看人气最高的有哪些影片,你又看过几部呢?

导演排名

Python电影票房爬虫 基于python电影票房分析_Python电影票房爬虫_05


可以看到这些导演很🐂呀


电影类型图

from collections import Counter
colors = ' '.join([i for i in df[ '类型']]).strip().split()
c = dict(Counter(colors))
f = zip(c.keys(), c.values())
words = sorted(f)
print(c)

Python电影票房爬虫 基于python电影票房分析_Python电影票房爬虫_06


发现有个错误值,1978(中国大陆),删除即可

d = c.pop('1978(中国大陆)')
my_df = pd.DataFrame(c,index=['数量']).T.sort_values(by='数量',ascending=False)
my_df

数量

剧情

184

喜剧

55

爱情

55

冒险

44

犯罪

43

奇幻

39

动画

34

惊悚

34

动作

33

悬疑

31

科幻

22

家庭

22

战争

16

传记

15

古装

9

历史

8

同性

8

音乐

7

歌舞

5

儿童

5

武侠

4

纪录片

4

西部

3

灾难

2

情色

2

恐怖

2

运动

1

题外话:对于删除字典的值有以下方法

方法一 pop(key[,default])

d = {'a':1,'b':2,'c':3}
# 删除key值为'a'的元素,并赋值给变量e1
e1 = d.pop('a')
print(e1)
# 如果key不存在,则可以设置返回值
e2 = d.pop('m','404')
print(e2)
# 如果key不存在,不设置返回值就报错
e3 = d.pop('m')

方法二 del[d[key]]

d = {'a':1,'b':2,'c':3}
# 删除给定key的元素
del d['a']
print(d)
# 删除不存在的元素
del d['m']

clear一次性删除所有字典元素

d = {'a':1,'b':2,'c':3}
print(d)
# 删除所有元素,允许d为{}
d.clear()
print(d)

题外话结束,分割

统计展示,

Python电影票房爬虫 基于python电影票房分析_数据分析_07

绘制词云图

c3 = (
    WordCloud()
    .add(
        "",
        words,
        word_size_range=[20, 100],
        textstyle_opts=opts.TextStyleOpts(font_family="cursive"),
    )
    .set_global_opts(title_opts=opts.TitleOpts(title="WordCloud-自定义文字样式"))
    .render("电影类型词云图.html")
)
c3
##

就可以清楚的看到,Top250的电影的类别

Python电影票房爬虫 基于python电影票房分析_词云_08

到这里就结束了,如果对你有帮助,欢迎点赞关注评论,你的点赞对我很重要