豆瓣電影數據分析


一、提出問題

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')

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM