【Python】豆瓣電影TOP250數據規律分析(Pearson相關係數、折線圖、條形圖、直方圖)

1、數據集預覽

在這裏插入圖片描述
部分數據說明:
豆瓣排名num
評分rating_num
評分人數comment_num
電影時長movie_duration

2、查看電影數據集基本數據信息

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv('電影排名.csv') #讀取數據

#1.查看電影數據集基本數據信息
print(data.describe())

在這裏插入圖片描述

3、Pearson相關係數分析數據之間的關係

#2.分析數據集中的數據項和電影排名的關係。
#輸出Pearson相關係數,並保留兩位小數
print('相關係數矩陣爲:','\n',np.round(data.iloc[1:,1:].corr(method = 'pearson'), 2))

在這裏插入圖片描述
分析:
相關係數的絕對值越大,相關性越強:相關係數越接近於1或-1,相關度越強,相關係數越接近於0,相關度越弱。
通常情況下通過以下取值範圍判斷變量的相關強度:
0.8-1.0 極強相關
0.6-0.8 強相關
0.4-0.6 中等程度相關
0.2-0.4 弱相關
0.0-0.2 極弱相關或無相關

(1)豆瓣排名num和評分rating_num之間的相關係數爲:-0.69,可見其存在強相關關係。即評分越高,排名數越小(排名越靠前)
(2)豆瓣排名num和評分人數comment_num之間的相關係數爲:-0.65,強相關,即評分人數越多,排名越靠前!
(3)豆瓣排名num和電影時長movie_duration的相關係數爲:-0.26,關係爲弱相關,可以認爲這兩者並沒什麼關係。(常識亦可知,一個電影的好壞,排名是否靠前,與其時長確實關係不大)

4、分析結果並使用圖形說明

折線圖

import matplotlib.pyplot as plt
#(1)豆瓣排名num和評分rating_num之間的關係折線分佈圖
plt.plot(data['num'],data['rating_num'],'ro-')
plt.show()

#(2)豆瓣排名num和評分人數comment_num之間的關係折線分佈圖
plt.plot(data['num'],data['comment_num'],'b*-')
plt.bar(data['num'],data['comment_num'])
plt.show()

#(3)豆瓣排名num和電影時長movie_duration的關係折線分佈圖
plt.plot(data['num'],data['movie_duration'],'gD-')
plt.show()

(1)豆瓣排名num和評分rating_num之間的關係折線圖分佈圖
在這裏插入圖片描述

(2)豆瓣排名num和評分人數comment_num之間的關係折線分佈圖
在這裏插入圖片描述
(3)豆瓣排名num和電影時長movie_duration的關係分佈折線圖
在這裏插入圖片描述

條形圖

#條形圖
#plt.bar(data['num'],data['rating_num']-8) #通過減8的方法來控制範圍
plt.ylim(8,10)
plt.bar(data['num'],data['rating_num']) 

plt.bar(data['num'],data['comment_num'],color='pink')

plt.bar(data['num'],data['movie_duration'],color='green')

(1)豆瓣排名num和評分rating_num之間條形分佈圖
直接繪製效果不明顯
在這裏插入圖片描述

設置y軸範圍後效果不錯:
在這裏插入圖片描述

(2)豆瓣排名num和評分人數comment_num之間關係條形圖
在這裏插入圖片描述

(3)豆瓣排名num和電影時長movie_duration的關係分佈直方圖
在這裏插入圖片描述

直方圖

#直方圖(反映數據分佈規律,不反映數據之間的關係)
plt.hist(data['rating_num'])

plt.hist(data['comment_num'], bins=100, normed=0, facecolor="blue", edgecolor="black", alpha=0.7)

plt.rcParams['font.sans-serif']=['SimHei']   # 用黑體顯示中文
plt.rcParams['axes.unicode_minus']=False     # 正常顯示負號
plt.xlabel("區間")
plt.ylabel("頻數/頻率")
plt.title("頻數/頻率分佈直方圖")
plt.hist(data['movie_duration'], 40, histtype='stepfilled', facecolor='r', alpha=0.65)

(1)評分分佈規律
在這裏插入圖片描述

(2)評分數目分佈規律直方圖
在這裏插入圖片描述
(3)電影時長分佈直方圖
在這裏插入圖片描述

標準化後對比分析

#4.附加實驗:標準化後,對比分析評分、評論人數、時長數據的差異
def MaxMinNormalization(x):  #0/1標準化
    x = (x - np.min(x)) / (np.max(x) - np.min(x))
    return x

d1 = MaxMinNormalization(data['rating_num'])
d2 = MaxMinNormalization(data['comment_num'])
d3 = MaxMinNormalization(data['movie_duration'])

plt.plot(data['num'],d1,'r-',d2,'b-',d3,'g-')
plt.legend(['評分rating_num','評分人數comment_num','電影時長movie_duration'])

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章