国产烂片深度揭秘

  1. 导入库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from bokeh.plotting import figure,show,output_file
from bokeh.models import ColumnDataSource,HoverTool
from bokeh.layouts import gridplot
import os 
import warnings
warnings.filterwarnings('ignore')
plt.rcParams['font.family'] = 'SimHei'
  1. 读取数据,以“豆瓣评分”为标准,看看电影评分分布,及烂片情况
os.chdir('F:\\张岩\\学习\\数据分析\\项目经验\\项目11国产烂片深度揭秘\\')
df = pd.read_excel('moviedata.xlsx',sheetname = 0)
df = df[df['豆瓣评分'] > 0]

在这里插入图片描述

#对评分作图

在这里插入图片描述

#正态性检验
from scipy import stats
u = df['豆瓣评分'].mean()
std = df['豆瓣评分'].std()
print(stats.kstest(df['豆瓣评分'],'norm',(u,std)))

KstestResult(statistic=0.06149387008971552, pvalue=5.050684159790819e-08),
符合正太分布,即可计算1/4分位,作为烂片筛选的标准。

#筛选烂片
data_lp = df[df['豆瓣评分'] < s].sort_values('豆瓣评分',ascending = True)
data_lp.reset_index(inplace = True,drop = True)
data_lp_top20 = data_lp.loc[:20]

在这里插入图片描述
3. 什么题材的电影烂片最多

data1 = df[df['类型'].notnull()][['电影名称','类型','豆瓣评分']]      #筛选出需要的字段数据
data1['类型'] = data1['类型'].str.replace(' ','')

建立计算烂片数量,烂片率的模型

def data_c(data,col,lst):
    lst4 = []
    lst5 = []
    lst6 = []
    lst7 = []
    for x in lst:
        x3 = len(data[data[col].str.contains(x)])
        x4 = len(data[(data[col].str.contains(x)) & (data['豆瓣评分'] < s)])
        if x3!=0:
            per1 = x4/x3
            lst6.append(per1)
            lst4.append(x3)
            lst5.append(x4)
        else:
            lst7.append(x)
            continue        
    for i in lst7:
        lst.remove(i)
    lp = pd.DataFrame({'count':lst4,
                       'lp_count':lst5,
                       'lp_per':lst6},
                       index = lst).sort_values('lp_per',ascending = False)
    return(lp)

清洗一下列表内重复的内容,建立模型

def list_c(data,col):
    lst = []
    for i in data[col]:
        x = i.replace(' ' ,'').split('/')
        lst.extend(x)
    lst = list(set(lst))
    return(lst)

挖掘电影题材与烂片之间联系

typelist = list_c(data1,'类型')
#计算各个类型的影片烂片率
lp_type = data_c(data1,'类型',typelist)
#选取烂片率TOP20的题材
lp_type_top20 = lp_type[:20]
lp_type_top20['size'] = np.sqrt(lp_type_top20['lp_count'])*3.5

在这里插入图片描述
可以看出烂片率最高的三个电影题材分别为:情色,恐怖,惊悚

  1. 和什么国家合拍更可能产生烂片
#筛选数据
data2 = df[df['制片国家/地区'].notnull()]
data2 = data2[data2['制片国家/地区'].str.contains('中国大陆')]
data2['制片国家/地区'] = data2['制片国家/地区'].str.replace(' ','')
#统计合作方
country_lst = list_c(data2,'制片国家/地区')
#清除噪音数据
country_lst.remove('中国大陆')
country_lst.remove('香港')
country_lst.remove('台湾')
country_lst.remove('中国')
#统计与不同国家合作的影片数量,烂片率
lp_country = data_c(data2,'制片国家/地区',country_lst)
lp_country2 = lp_country[lp_country['count'] > 2]

在这里插入图片描述
结论:和英美,新加坡合作烂片率更高(这里数据量较小不具有代表性,仅做参考)

  1. 研究电影主演的数量是否和烂片有关
#筛选数据
data3 = df[['电影名称','豆瓣评分','主演']]
data3 = data3[data3['主演'].notnull()]

#计算电影的主演人数
data3['主演人数'] = data3['主演'].str.split('/').str.len()
data3['act_count'] = pd.cut(data3['主演人数'],
     bins = [1,3,5,7,10,66],right=False,
     labels = ['1-2人','3-4人','5-6人','7-9人','10以上'])
#统计不同主演人数烂片率,烂片数量
act_count_lst = ['1-2人','3-4人','5-6人','7-9人','10以上']
lp_act_count = data_c(data3,'act_count',act_count_lst)

在这里插入图片描述
基本上电影主演的人数越多,烂片率就越高

#计算以下人物烂片率,烂片数量
actlist = list_c(data3,'主演')
lp_actor = data_c(data3,'主演',actlist)
lp_actor = lp_actor[lp_actor['count']>2]

在这里插入图片描述
截取部分数据(仅供参考)

  1. 不同导演每年电影产量(统计导演的年产量以及烂片率)
#筛选数据
data4 = df[['电影名称', '豆瓣评分', '上映日期','导演']]
data4 = data4[data4['导演'].notnull()]
data4 = data4[data4['上映日期'].notnull()]

#统计电影上映年份,并筛选出2007-2017年份上映的电影
data4['year'] = data4['上映日期'].str.replace(' ','').str[:4]
data4 = data4[data4['year'].str[0] == '2']
data4['year'] = pd.to_numeric(data4['year'])
data4 = data4[data4['year'] >2006]

#统计导演人数
directorlst = list_c(data4,'导演')

#计算导演烂片数量,烂片率
lp_director = data_c(data4,'导演',directorlst)

#筛选出导演电影数量10部及以上的导演
lp_director = lp_director[lp_director['count'] > 9]

在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值