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