个人学习-爱XX电影热播分析

import requests
from bs4 import BeautifulSoup
import pandas as pd
import re
from sklearn.linear_model import LinearRegression
import matplotlib
import seaborn as sns
import scipy.stats as sts
from scipy.optimize import leastsq
import numpy as np

#读取csv文件
df = pd.DataFrame(pd.read_csv('爱奇艺电影热播榜.csv'))
df
Unnamed: 0排名电影名实时热度电影描述
001哥斯拉大战金刚2:帝国崛起6534NaN
112扫黑·决不放弃5803“扫黑风暴”继绿藤市之后席卷奎州,偏偏在督导组进驻的节骨眼儿上,李南北和俞青这对窝囊师徒竟意...
223末路狂花钱4160人到中年一事无成的贾有为,被诊断出脑部肿瘤,只剩十天寿命,于是他卖掉了传言要拆迁的老屋,找回...
334前途海量4152隧道坍塌,5个性格身份迥异的陌生人被困,唯有的食物是一车啤酒,想活命只能喝酒的逃生之旅,惊险...
445九龙城寨之围城4078本片根据余儿原著小说《九龙城寨》改编。上世纪八十年代,恶名昭著的“三不管”地带九龙城寨中黑帮...
556朝云暮雨3685影片改编自真实故事《穿婚纱的杀人少女》,刑满释放人员老秦服刑27年后出狱,只想娶妻生子,开启...
667功夫熊猫43670神龙大侠阿宝再度归来,要被师父强行进阶修行。系列全新最强反派魅影妖后登场,神秘莫测的她可以幻...
778苗岭诡事3611民末年间的偏僻山区,几位村民深夜盗墓,被蛊夺命。陆文良和张持义都发现尸体诡异之处,两人结伴进...
889维和防暴队3588影片聚焦中国维和警察鲜为人知的生死时刻!应联合国请求、受国家派遣,余卫东、杨震、丁慧等维和警...
9910三叉戟3582二十年前叱咤风云的三个警察“老炮”,被警界荣称为“三叉戟”,如今已到了快退休的年纪,却不料误...
101011致命通话3482梦佳为躲避丈夫家暴,在新居里意外接通过去住户茹玫打来的电话。起初两人凭藉对时空来电的好奇,加...
111112热辣滚烫3415大学毕业后仅仅工作短暂的一段时间,杜乐莹便退回家中,宅家长达十年之久。她无所事事,拒绝和外界...
121213西装暴徒3415多年前,周克一袭西装独身硬闯黑帮窝点,救出兄长巴诺,最终却被捕入狱。一晃多年,出狱后的周克化...
131314第二十条3320这一年的不容易谁能懂?自打挂职到市检察院,韩明的糟心事就接二连三。儿子韩雨辰打了校领导儿子并...
141415周处除三害3221通缉犯陈桂林生命将尽,却发现自己在通缉榜上只排名第三,他决心查出前两名通缉犯的下落,并将他们...
151516除暴安良3206刑警队长常勇在维护社会治安行动的过程中,发现一伙匪徒抢劫了大量现金并藏在了本市,随着对这起抢...
161617飞驰人生23203五年,三万六千遍,张驰的蓝牙已再次连上。那个不想输的张驰留下了“巴音布鲁克永远的王”的传说,...
171718制暴3068【观影提示:十六岁以下观众禁止观看】某集团董事长成杰(包贝尔 饰)蓄意强暴其公司女员工韩梅并...
181819浴血狙击30591943年,日军对苏北、鲁中地区的抗日根据地展开扫荡,滨海军分区八路军为掐断日军补给线,决定...
191920我们一起摇太阳3015韩延导演“生命三部曲”终章,部分取材于纪实报道文章《最功利的婚姻交易,最动情的永恒约定》。故...
202021彷徨之刃3004本剧改编自东野圭吾同名小说,讲述了与女儿相依为命的父亲长峰重树,在女儿被残忍杀害后为复仇而成...
212122龙石密码2941二十世纪80年代初,西北山脉边界,有一个名叫小丰村的偏僻村落。陈永在齐依然家药材铺做伙计,闲...
222223黑社会2826香港最大黑社会帮会“和联胜”举行两年一度的办事人选举,阿乐与大D作为两大地区领导,暗地里展开...
232324黑暗森林2755联合国禁毒组织与中缅警方联合打击,以萨卡集团为首的贩毒组织,企图通过中国把毒品贩卖到全世界的...
242425硬汉狙击2747影片中张小龙和王泰等人,曾是共过患难的队友,情同手足。后来张小龙与王泰产生分歧,王泰心中生恨...
df.drop('电影名', axis=1, inplace = True)
df.drop('电影描述', axis=1, inplace = True)
df.head()
Unnamed: 0排名实时热度
0016534
1125803
2234160
3344152
4454078
#检查是否有重复值
df.duplicated()
0     False
1     False
2     False
3     False
4     False
5     False
6     False
7     False
8     False
9     False
10    False
11    False
12    False
13    False
14    False
15    False
16    False
17    False
18    False
19    False
20    False
21    False
22    False
23    False
24    False
dtype: bool
#缺失值处理
df[df.isnull().values==True]#返回无缺失值
Unnamed: 0排名实时热度
#用describe()命令显示描述性统计指标
df.describe()
Unnamed: 0排名实时热度
count25.00000025.00000025.000000
mean12.00000013.0000003581.600000
std7.3598017.359801882.184788
min0.0000001.0000002747.000000
25%6.0000007.0000003059.000000
50%12.00000013.0000003415.000000
75%18.00000019.0000003670.000000
max24.00000025.0000006534.000000
#数据分析与可视化
X = df[['排名']]
predict_model = LinearRegression()
predict_model.fit(X,df['实时热度'])
print("回归系数为:",predict_model.coef_)


#绘制排名与评分的回归图

sns.scatterplot(x='排名', y='实时热度', data=df, color='b', label='实际数据')  # 实际数据的散点图
plt.plot(X, predict_model.predict(X), color='r', label='拟合曲线')  # 拟合的曲线

plt.title('排名与实时热度的线性回归拟合')
plt.xlabel('排名')
plt.ylabel('实时热度')
plt.legend()
plt.grid(True)
plt.xlim(0, 30)  # 设置横坐标范围从 0 到 30
plt.xticks(range(1, 30))  # 设置刻度为整数 1 到 30
plt.show()

回归系数为: [-97.04538462]

在这里插入图片描述

# 绘制柱状图
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
plt.bar(df.排名, df.实时热度, label="排名与实时热度柱状图")
plt.xlabel("排名")
plt.ylabel("实时热度")
plt.title('排名与实时热度柱状图')
plt.show()

在这里插入图片描述

def scatter():
    plt.scatter(df.排名, df.实时热度, color='green', s=25, marker="o")
    plt.xlabel("排名")
    plt.ylabel("实时热度")
    plt.title("排名与实时热度散点图")
    plt.show()
scatter()

在这里插入图片描述

def line_diagram():
    x = df['排名']
    y = df['实时热度']
    plt.xlabel('排名')
    plt.ylabel('实时热度')
    plt.plot(x,y)
    plt.scatter(x,y)
    plt.title("排名与实时热度折线图")
    plt.show()
line_diagram()

在这里插入图片描述

sns.jointplot(x="排名",y='实时热度',data = df)

sns.jointplot(x="排名",y='实时热度',data = df, kind='reg')

sns.jointplot(x="排名",y='实时热度',data = df, kind='hex')

sns.jointplot(x="排名",y='实时热度',data = df, kind='kde', color='r')


plt.show()

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

def main():
    colnames = ["排名", "电影名", "实时热度", "电影描述"]
    df = pd.read_csv('爱奇艺电影热播榜.csv',skiprows=1,names=colnames)
    
    X = df.排名
    Y = df.实时热度
    r=sts.pearsonr(X,Y) #相关性r
    print('相关性r',r)
    def func(p, x):
        k, b = p
        return k * x + b
    
    def error_func(p, x, y):
        return func(p,x)-y
    
    p0 = [0,0]
    #使用leastsq()函数对数据进行拟合
    Para = leastsq(error_func, p0, args = (X, Y))
    k, b = Para[0]
    print("k=",k,"b=",b)
    
    plt.figure(figsize=(10,6))
    plt.scatter(X,Y,color="green",label=u"实时热度分布",linewidth=2)
    x=np.linspace(0,30,30)
    y=k*x+b
    plt.plot(x,y,color="red",label=u"回归方程直线",linewidth=2) 
    
    plt.title("电影排名和评分关系图")
    plt.xlabel('排名')
    plt.ylabel('实时热度')
    plt.legend() 
    plt.show()
main()
相关性r PearsonRResult(statistic=-0.8096202763305835, pvalue=9.489465268929371e-07)
k= -97.0453842677809 b= 4843.189995481152

在这里插入图片描述

#绘制一元二次回归方程
def main2():
    colnames = ["排名", "电影名", "实时热度", "电影描述"]
    df = pd.read_csv('爱奇艺电影热播榜.csv',skiprows=1,names=colnames)
    
    X = df.排名
    Y = df.实时热度
    r=sts.pearsonr(X,Y) #相关性r
    print('相关性r',r)
    def func(p, x):
        a, b, c = p
        return a * x * x + b * x + c
    
    def error_func(p, x, y):
        return func(p,x)-y
    
    p0 = [0,0,0]
    #使用leastsq()函数对数据进行拟合
    Para = leastsq(error_func, p0, args = (X, Y))
    a, b, c = Para[0]
    print("a=", a,"b=", b,"c=", c)
    
    plt.figure(figsize=(10,6))
    plt.scatter(X,Y,color="green",label=u"评分分布",linewidth=2)
    
    x = np.linspace(0,30,30)
    y = a * x * x + b * x + c
    
    plt.plot(x,y,color="red",label=u"一元二次回归方程直线",linewidth=2) 
    plt.title("电影排名和实时热度关系图")
    plt.xlabel('排名')
    plt.ylabel('实时热度')
    plt.legend() 
    plt.show()
main2()
相关性r PearsonRResult(statistic=-0.8096202763305835, pvalue=9.489465268929371e-07)
a= 7.118115681064069 b= -282.11639227668485 c= 5676.009534081745

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值