一、提出问题
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越大
热力图显示相关系数
可以看出电影评分与票房,标签,电影版本都是正相关关系
评分与票房散点图
可以看出评分越高,票房约高。
评分箱线图
Min:2.1,Max:9.6
评分条形图
大部分电影评分6.2到8.8
票房箱线图
Min:201,Max:1186119
票房条形图
大部分电影票房在50000到100000之间
高频率词云
电影类型前十条形图
可以看出剧情,喜剧类的电影比较多
电影地区前十条形图
在豆瓣中美国地区的电影最多
评分占比分布图
五、结论
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')