计算原理

一般情况下,番剧的单集播放量会随着集数的增加而减少,一步番剧播放量减少越剧烈,则说明该番观众中途弃坑人数较多,番剧可能剧情乏味或中途崩坏。我采集了B追番人数在前150名的番剧的播放数据,将集数扩大后与单集播放量进行最小二乘法拟合,以得到直线的斜率为依据进行排名。排行榜视频传到了B站:http://www.bilibili.com/video/av13742689/。 由于B站部分番剧采用分P分集的方式,无法获取到具体数据,故在本榜单中略去。

完整榜单








































































































































































































































































































































































































































































































































番剧名弹幕总数观众损失指数
甲铁城的卡巴内瑞1042966-2.258323648
GAMERS电玩咖!1691330.144540753
三年E班19510080.462847114
Fate/stay night [Unlimited Bla..19657160.626720716
斩·赤红之瞳!16079200.741229817
双星之阴阳师22972760.831016728
命运石之门7301350.875223121
Re:从零开始的异世界生活69076320.961437343
小魔女学园3839441.050238504
终结的炽天使14870691.118167605
四月是你的谎言13033111.177939641
Charlotte26648301.219308438
齐木楠雄的灾难6385531.268257247
OVERLORD10931621.515096923
野良神22134601.550257659
重装武器11022331.666549249
日常10623601.673067295
超时空要塞Δ6100141.72636779
传颂之物 虚伪的假面9287161.747128157
3月的狮子1463761.79793033
食戟之灵21609051.802290751
博人传 火影忍者新时代8843111.949803763
自由之翼264642.224237707
TRICKSTER 少年侦探团1734272.224413676
我的青春恋爱物语果然有问题。9301852.248424329
幻界战线8922282.401250763
终结的炽天使9102052.436868124
学战都市Asterisk10184392.451519477
樱花任务1927302.496338531
伪恋8176202.705141542
路人超能100(灵能百分百)11723822.779356326
干物妹!小埋33731422.910871665
弹丸论破3 The End of 希望峰学园6988072.967848909
Re:CREATORS8291893.070127201
甘城光辉游乐园4869273.112907413
Fate/stay night [Unlimited Bla..14693583.122084955
日常系的异能战斗4190473.145179423
星期一的丰满750373.221649311
噬神者6717523.315299411
迷糊餐厅1603003.328996671
月色真美8980543.355742336
落第骑士英雄谭18105283.415607209
Love Live! Sunshine!!13483963.432030523
变态王子与不笑猫6332613.449631042
弹丸论破3 The End of 希望峰学园7687243.469733282
银仙5281423.495181835
驱魔少年3033713.596220884
路人女主的养成方法19084463.597648879
六花的勇者9657993.65088434
K18883353.659182418
一周的朋友。4222993.678132515
Rewrite6491033.726841885
埃罗芒阿老师29104903.754721348
对魔导学园35试验小队6486913.789620394
这个美术社大有问题!13983563.807777201
终物语3519783.818677737
NEW GAME!9814683.864370619
热诚传说X11515223.906996542
请问您今天要来点兔子吗8358873.913232858
TRINITY SEVEN 七人魔法使3158363.923909271
小林家的龙女仆16154093.980325447
问题儿童都来自异世界3091033.986187118
黑白来看守所1622744.017919302
我被绑架到贵族女校当庶民样本19347304.030563818
学园孤岛14388374.036371447
黑白来看守所3611274.156150414
从零开始的魔法书4846694.167026311
百武装战记15599804.167667996
线上游戏的老婆不可能是女生21989434.186430272
超自然9人组1787774.233473694
时钟机关之星2079214.25875271
在下坂本,有何贵干52609794.28715556
爱丽丝和藏六1566704.3169219
刀剑乱舞-花丸-6727634.356210612
迷家12009984.39426238
月歌3737544.399806235
苍之彼方的四重奏6736624.428013961
小桃小栗Love Love物语5270464.443557446
SUPER LOVERS2451854.460685361
就算是哥哥有爱就没问题了对吧5537014.463771515
夏目友人帐7472134.473388087
ACCA13区监察课1023424.504372808
恋爱暴君4721364.651204747
王室教师海涅2869104.659983016
三年E班Q947464.677076817
怪怪守护神2481974.678423565
我太受欢迎了该怎么办9867384.704850976
秋叶原之旅 THE ANIMATION1697574.722279333
樱子小姐的脚下埋着尸体8475544.868618686
少女编号4043644.87169268
我,要成为双马尾。7871514.885292437
腐男子高校生活1564034.89976437
雏子的笔记1964444.989178298
初恋怪兽5527744.991610092
GANGSTA.3531054.992524075
One Room811305.045102635
粗点心战争10896075.192970417
风夏6277205.197259351
SEIREN4072195.311204776
天真与闪电2990895.443797509
Hand Shakers2362625.449409968
Taboo Tattoo-禁忌咒纹-5245716.009652647

采集计算代码

使用方法:保存为py脚本,在B站得到番番剧ID后执行python demo.py 番剧ID,得到的数据会存放在CSV文件中。如果报错或得到的数据极小,那么该番局可能采用了分P分集方式,无法获得最终结果。

# -*- coding: UTF-8 -*-
import requests
import sys
import json
import csv
import codecs
reload(sys)
sys.setdefaultencoding('utf-8')
r = requests.get('https://bangumi.bilibili.com/jsonp/seasoninfo/'+str(sys.argv[1])+'.ver?callback=seasonListCallback&jsonp=jsonp&_=1503473663364')
j= r.text[19:-2]
js=json.loads(j)
av_list=[]
view_list=[]
def get_view(av):
    r = requests.get('http://api.bilibili.com/archive_stat/stat?aid='+str(av))
    r_js=json.loads(r.text)
    return int(r_js['data']['view'])
for id in js['result']['episodes']:
    av_list.append(id['av_id'])
    view_list.append(get_view(id['av_id']))
#get x average
x_num=float(len(av_list))
i=1
x_average=0
for ii in av_list:
    x_average = x_average+(i/x_num)
    i=i+1
x_average=x_average*view_list[-1]
#get y average
y_average=0
for ii in view_list:
    y_average = y_average+(ii/x_num)
# get b aboves
count=0.0
i=1
for ii in view_list:
    count = count+ii*i*view_list[-1]
    i=i+1
b_above = count-(x_num*x_average*y_average)
#get b_down
b_down=0.0
i=1
for ii in av_list:
    b_down=b_down+i*view_list[-1]*i*view_list[-1]
    i=i+1
b_down = b_down - x_num*x_average*x_average
#get rank
rank = b_above/b_down
with open('2.csv', 'ab+') as csvfile:
    spamwriter = csv.writer(csvfile)
    csvfile.write(codecs.BOM_UTF8)
    spamwriter.writerow([js['result']['bangumi_title'], js['result']['danmaku_count'], rank*100])
print js['result']['bangumi_title']+"   "+str(rank*100)