一、提出問題
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')