欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

豆瓣电影数据分析

最编程 2024-04-04 10:47:58
...

一、提出问题

1.豆瓣电影评分与票房有什么的关系?

2.那个类型和国家电影比较受欢迎?

3.豆瓣电影近20年评分情况是怎么样?

二、理解数据

1采集数据

本数据集描述了20豆瓣电影以及其相关信息,共包含12067条数据,共10个字段,介绍下各个字段:

Title:标题

Types:类型

Score:评分

Drector:导演

Writer作者

Actor:演员

Account:票房

Country:国家

Label标签

flim_version:电影版本

2导入数据

 

3查看数据集信息

 

 

 

 

 

 

从统计信息可以看出数字型的总数、count,数据个数(非空数据),mean,均值,std,标准差,min,最小值,25%,第1四分位数,即第25百分位数,50%,第2四分位数,即第50百分位数,75%,第3四分位数,即第75百分位数,max,最大值等信息。

三、数据清洗

1、查找缺失值

 

一共有266条数据缺失。

2处理缺失值

 

四、数据可视化呈现

 

用autoviz和dtale工具对数据进行分析

 

电影的分值越大,Label越大

热力图显示相关系数

 

可以看出电影评分与票房,标签,电影版本都是正相关关系

评分与票房散点图

 

可以看出评分越高,票房约高。

评分箱线图

 

Min2.1Max9.6

评分条形图

 

大部分电影评分6.28.8

票房箱线图

 

Min201Max1186119

票房条形图

 

 

大部分电影票房在50000100000之间

高频率词云

 

 

 

电影类型前十条形图

 

 

 

可以看出剧情,喜剧类的电影比较多

电影地区前十条形图

 

在豆瓣中美国地区的电影最多

评分占比分布图

 

 

 

五、结论

1.评分越高的电影,票房越高。

2.可以看出在豆瓣中剧情,喜剧类的电影比较受欢迎,美国地区的电影受欢迎。

3.20年大多数的电影评分都是在中等评分,高分和低分电影都比较少。

源代码:

 

import pandas as pd
import numpy as np
import random
import matplotlib.pyplot as plt
data=pd.read_csv('movie.csv',encoding='gb18030')
data.shape
pd.isnull(data).sum()
data.dropna(inplace=True)
data.shape
# 获取数据类型列的描述统计信息
data.describe()
d2=data.loc[:,'types'].value_counts()
d2=d2.head(10)
plt.rcParams["font.sans-serif"] = ["KaiTi"]
plt.rcParams["axes.unicode_minus"] = False
d2.plot.bar(figsize = (10,8),title='UP top 10')
plt.show()
d2=data.loc[:,'country'].value_counts()
d2=d2.head(10)
plt.rcParams["font.sans-serif"] = ["KaiTi"]
plt.rcParams["axes.unicode_minus"] = False
d2.plot.bar(figsize = (10,8),title='UP top 10')
plt.show()
l1=len(data[data['score'] >= 8.0])
l2=len(data[(data['score'] < 8.0) & (data['score'] >=6.0)])
l3=len(data[data['score'] < 6.0])
plt.figure(figsize=(9,13)) #调节图形大小
labels = ['高分','中等','低分'] #定义标签
sizes = [l1, l2, l3] #每块值
colors = ['green', 'yellow', 'blue'] #每块颜色定义
explode = (0,0,0) #将某一块分割出来,值越大分割出的间隙越大
# 中文乱码和坐标轴负号处理
plt.rcParams['font.sans-serif'] = ['KaiTi']
plt.rcParams['axes.unicode_minus'] = False
patches,text1,text2 = plt.pie(sizes,
                      explode=explode,
                      labels=labels,
                      colors=colors,
                      autopct = '%3.2f%%', #数值保留固定小数位
                      shadow = False, #无阴影设置
                      startangle =90, #逆时针起始角度设置
                      pctdistance = 0.6) #数值距圆心半径倍数距离
#patches饼图的返回值,texts1饼图外label的文本,texts2饼图内部的文本
# x,y轴刻度设置一致,保证饼图为圆形
plt.axis('equal')
plt.title("评分占比分布图")
plt.legend() # 右上角显示
plt.show()

import dtale
dtale.show(data,ignore_duplicate=True)

from autoviz.AutoViz_Class import AutoViz_Class
AV = AutoViz_Class()
dft = AV.AutoViz(filename =r'movie.csv')