不管前浪还是后浪,能够浪起来的才算是好浪。

相信大家最近都被号称“浪里白条”的b站刷了不止一次屏。这次咱们先不谈价值观,主要从数据的角度,扒一扒让b站能够在浪里穿梭的资本——优质UP主。

本文在RFM模型基础上做了调整,尝试用更符合b站特性的IFL模型,找到各分区优质up主。整个过程以分析项目的形式展开,最终附上了完整源数据和代码,方便感兴趣的同学练手。

项目概览

分析目的

对2019年1月~2020年3月发布的视频进行分析,挑选出视频质量高,值得关注的up主。

数据来源

分析数据基于 bilibili 网站上的公开信息,主要爬取了以下数据维度:

2019年1月~2020年3月,科技区播放量过5w视频的分区名称、作者名称、作者id、发布时间、播放数、硬币数、弹幕数、收藏数、点赞数、分享数、评论数,共计50130行。

源数据下载链接

后台回复“b站”,获取完整数据源和代码。

数据概览

视频信息表:

coins:投硬币数

danmu:弹幕数

favorite:收藏数

likes:点赞数

replay:评论数

share:分享数

view:播放量

各字段数量:

缺失值数量:

数据清洗

  删除空值

df = df.dropna()
df.info()

共删除了19行数据,剩余50111行数据

  删除重复值

df = df.drop_duplicates()
df.info()

删除了1312行重复的数据,剩余数据量48799行

  提取所需关键词

df = df[['分区', 'author','date','coins','danmu','favorite','likes','replay','share','view']]
df.head()

构建模型

RFM模型是衡量客户价值和创利能力的重要工具和手段。通过一个客户近期购买行为、购买的总体频率以及消费金额三项指标来描述客户的价值状况。

R:最近一次消费时间(最近一次消费到参考时间的间隔)

F:消费的频率(消费了多少次)

M:消费的金额 (总消费金额)

但RFM模型并不能评价视频的质量,所以在这里针对up主的视频信息构建了IFL模型,以评估视频的质量。

I(Interaction_rate):

I值反映的是平均每个视频的互动率,互动率越高,表明其视频更能产生用户的共鸣,使其有话题感。

F(Frequence):

F值表示的是每个视频的平均发布周期,每个视频之间的发布周期越短,说明内容生产者创作视频的时间也就越短,创作时间太长,不是忠实粉丝的用户可能将其遗忘。

L(Like_rate):

L值表示的是统计时间内发布视频的平均点赞率,越大表示视频质量越稳定,用户对up主的认可度也就越高。

提取需要的信息

根据不同的分区进行IFL打分,这里以科普区为例

sc = df.loc[df['分区']=='科学科普']
so = df.loc[df['分区']=='社科人文']
ma = df.loc[df['分区']=='机械']
tec = df.loc[df['分区']=='野生技术协会']
mi = df.loc[df['分区']=='星海'] # 一般发布军事内容
car = df.loc[df['分区']=='汽车']
sc.info()

关键词构造

F值:首先,先筛选出发布视频大于5的up主,视频播放量在5W以上的视频数少于5,说明可能是有些视频标题取得好播放量才高,而不是视频质量稳定的up主。

# 计算发布视频的次数
count = sc.groupby('author')['date'].count().reset_index()
count.columns =['author','times']
# 剔除掉发布视频少于5的up主
com_m = count[count['times']>5]
#com_m = pd.merge(count,I,on='author',how='inner')
com_m.info()

筛选完只剩下208个up主的视频数在5个以上:

last = sc.groupby('author')['date'].max()
late = sc.groupby('author')['date'].min()
# 最晚发布日期与最早之间的天数/发布次数,保留整数,用date重新命名列
F =round((last-late).dt.days/sc.groupby('author')['date'].count()).reset_index()
F.columns =['author', 'F']
F = pd.merge(com_m, F,on='author', how='inner')
F.describe()

通过describe()方法发现,最晚发布日期与最早发布日期为0的现象,猜测是在同一天内发布了大量的视频。

# 查找的一天内发布视频数大于5的人
F.loc[F['F'].idxmin()]

其视频皆为转载,将其剔除统计范围内。

F = F.loc[F['F']>0]
F.describe()

I值

# 构建I值
danmu = sc.groupby('author')['danmu'].sum()
replay = sc.groupby('author')['replay'].sum()
view = sc.groupby('author')['view'].sum()
count = sc.groupby('author')['date'].count()
I =round((danmu+replay)/view/count*100,2).reset_index() #
I.columns=['author','I']
F_I = pd.merge(F,I,on='author',how='inner')
F_I.head()

L值

# 计算出点赞率计算出所有视频的点赞率
sc['L'] =(sc['likes']+sc['coins']*2+sc['favorite']*3)/sc['view']*100
sc.head()

# 构建L值
L =(sc.groupby('author')['L'].sum()/sc.groupby('author')['date'].count()).reset_index()
L.columns =['author', 'L']
IFL = pd.merge(F_I, L, on='author',how='inner')
IFL = IFL[['author', 'I','F','L']]
IFL.head()

维度打分

维度确认的核心是分值确定,按照设定的标准,我们给每个消费者的I/F/L值打分,分值的大小取决于我们的偏好,即我们越喜欢的行为,打的分数就越高:

  • I值,I代表了up主视频的平均评论率,这个值越大,就说明其视频越能使用户有话题,当I值越大时,分值越大。

  • F值表示视频的平均发布周期,我们当然想要经常看到,所以这个值越大时,分值越小。

  • L值表示发布视频的平均点赞率,S值越大时,质量越稳定,分值也就越大。I/S值根据四分位数打分,F值根据更新周期打分。

IFL.describe()

I值打分:

L值打分:

F值根据发布周期打分:

分值计算

# bins参数代表我们按照什么区间进行分组
# labels和bins切分的数组前后呼应,给每个分组打标签
# right表示了右侧区间是开还是闭,即包不包括右边的数值,如果设置成False,就代表[0,30)
IFL['I_SCORE'] = pd.cut(IFL['I'], bins=[0,0.03,0.06,0.11,1000],
                        labels=[1,2,3,4], right=False).astype(float)
IFL['F_SCORE'] = pd.cut(IFL['F'], bins=[0,7,15,30,90,1000],
                        labels=[5,4,3,2,1], right=False).astype(float)
IFL['L_SCORE'] = pd.cut(IFL['L'], bins=[0,5.39,9.07,15.58,1000],
                        labels=[1,2,3,4], right=False).astype(float)
IFL.head()

判断用户的分值是否大于平均值:

# 1为大于均值 0为小于均值
IFL['I是否大于平均值'] =(IFL['I_SCORE'] > IFL['I_SCORE'].mean()) *1
IFL['F是否大于平均值'] =(IFL['F_SCORE'] > IFL['F_SCORE'].mean()) *1
IFL['L是否大于平均值'] =(IFL['L_SCORE'] > IFL['L_SCORE'].mean()) *1
IFL.head()

客户分层

RFM经典的分层会按照R/F/M每一项指标是否高于平均值,把用户划分为8类,我们根据根据案例中的情况进行划分,具体像下面表格这样:

引入人群数值的辅助列,把之前判断的I\F\S是否大于均值的三个值串联起来:

IFL['人群数值'] =(IFL['I是否大于平均值'] *100) +(IFL['F是否大于平均值'] *10) +(IFL['L是否大于平均值'] *1)
IFL.head()

构建判断函数,通过判断人群数值的值,来返回对应标签:

将标签分类函数应用到人群数值列:

IFL['人群类型'] = IFL['人群数值'].apply(transform_label)

IFL.head()

各类用户占比

cat = IFL['人群类型'].value_counts().reset_index()
cat['人数占比'] = cat['人群类型'] / cat['人群类型'].sum()
cat

各分区up主排行top15

  科学科普分区

high = IFL.loc[IFL['人群类型']=='高价值up主']
rank = high[['author','L','I','F']].sort_values('L',ascending=False)
rank.to_excel('rank.xlsx', sheet_name='科学科普',encoding='utf-8')

  社科人文分区

  机械分区

机械分区高价值up主只有5位,因为机械分区在科技区是个小分区,发布视频的up主仅有54位。

  野生技术协会分区

  星海

  汽车

零基础学 Python,请往看下嘛

 只需7天时间,跨进Python编程大门,已有3800+加入

【基础】0基础入门python,24小时有人快速解答问题;
【提高】40多个项目实战,老手可以从真实场景中学习python;
【直播】不定期直播项目案例讲解,手把手教你如何分析项目;
【分享】优质python学习资料分享,让你在最短时间获得有价值的学习资源;圈友优质资料或学习分享,会不时给予赞赏支持,希望每个优质圈友既能赚回加入费用,也能快速成长,并享受分享与帮助他人的乐趣。
【人脉】收获一群志同道合的朋友,并且都是python从业者
【价格】本着布道思想,只需 69元 加入一个能保证学习效果的良心圈子。

【赠予】价值109元 0基础入门在线课程,免费送给圈友们,供巩固

加强版RFM模型,轻松扒出B站优质up主!相关推荐

  1. 我用加强版RFM模型,轻松扒出B站优质up主!(含数据+实战代码)

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 红军不怕远征难,万水千山只等闲. ...

  2. 如何用 RFM 模型扒出 B 站优质 UP 主?| 附实战代码

    作者 | 远辰 责编 | 郭芮 不管前浪还是后浪,能够浪起来的才算是好浪. 相信大家最近都被号称"浪里白条"的b站刷了不止一次屏.这次咱们先不谈价值观,主要从数据的角度,扒一扒让b ...

  3. python分析b站_实战 | Python模型分析B站优质up主

    作者 | 远辰 来源 | 数据不吹牛 不管前浪还是后浪,能够浪起来的才算是好浪. 相信大家最近都被号称"浪里白条"的b站刷了不止一次屏.这次咱们先不谈价值观,主要从数据的角度,扒一 ...

  4. Python模型分析B站优质up主!这些人的视频能学到不少东西!

    不管前浪还是后浪 ,能够浪起来的才算是好浪. 相信大家最近都被号称"浪里白条"的b站刷了不止一次屏.这次咱们先不谈价值观,主要从数据的角度,扒一扒让b站能够在浪里穿梭的资本--优质 ...

  5. 用Python扒出B站那些“惊为天人”的阿婆主!

    戳蓝字"CSDN云计算"关注我们哦! 作者 | 徐麟 责编 | 阿秃 前言 近期B站的跨年晚会因其独特的创意席卷各大视频网站,给公司带来了极大的正面影响,股价也同时大涨,想必大家都 ...

  6. 快速找出高价值用户,3分钟学会RFM模型分析

    在众多的客户关系管理分析模式中,应用最广泛的就是RFM模型,它可以通过一个客户的近期购买行为.购买的频率以及花了多少钱三项指标来描述客户的价值情况. RFM模型用户分群是介于千人千面的个性化运营和未加 ...

  7. python 估值模型_利用RFM模型建模,并通过聚类分析、分类,分别算出8中不同的价值会员...

    RFM-Clustering 利用RFM模型建模,并通过聚类分析.分类,分别算出8中不同的价值会员 RFM模型构建会员价值标签 R:最近一次消费(Recency) F:消费频率(Frequency) ...

  8. SPSS用KMEANS(K均值)、两阶段聚类、RFM模型在P2P网络金融研究借款人、出款人行为数据规律...

    全文下载链接:http://tecdat.cn/?p=27831 随着P2P网络金融平台的交易量的激增,其交易数据不能得到充分有效地利用.将聚类分析引入到P2P网络金融平台的管理之中,利用聚类分析技术 ...

  9. 基于RFM模型的用户价值分析——PythonTableau

    一.模型介绍 RFM模型是衡量客户价值和客户创利能力的重要工具和手段. R(Recency)--最近日期或最新日期:即客户最近一次消费日期距分析日的时间间隔.最近一次消费的时间间隔是维系顾客的一个重要 ...

最新文章

  1. 转:浅谈Linux的内存管理机制
  2. 通过IP获取地址,限制某些地址访问(GeoIp)
  3. 【Android 逆向】函数拦截原理 ( 通过修改 GOT 全局偏移表拦截函数 | 通过在实际被调用的函数中添加跳转代码实现函数拦截 )
  4. 显示Flash时控制其的宽度与高度
  5. find all pairs of elements in a balanced BST that sum to a certain number
  6. 第十三章:Python の 网络编程进阶(二)
  7. 【Spring】JSP 九大内置对象、作用域复习
  8. WordPress,SAP Kyma和微信三者的集成
  9. uiautomation遍历windows所有窗口_万字长文!滑动窗口看这篇就够了!
  10. 大学计算机二级培训蹭课,本人在复旦大学蹭课总结的一点小小的经验
  11. oracle清理告警日志,Oracle 跟踪/告警/监听日志的清理脚本
  12. 【Java用法】java 8两个List集合取交集、并集、差集、去重并集
  13. 拓端tecdat|R语言非线性回归beta系数估算股票市场的风险分析亚马逊AMZN股票和构建投资组合
  14. C# 启动EXE 关闭EXE ProcessStartInfo
  15. 小猪佩奇粉红猪 成年人重新拾起英文笔记
  16. 「经济理财」跟简七学理财之理财训练营(下)
  17. CCC3.0 蓝牙OOB配对
  18. django问题研讨:由master=true引发的奇怪现象
  19. PC 新时代即将到来,Windows 11 将迎来首次重大更新:终于要支持 Android 应用了
  20. 二级备考:ppt自学知识笔记--基础操作1:ppt界面介绍

热门文章

  1. centos7 搭建深度学习环境
  2. Centos 8 常用指令汇总
  3. 我的世界如何增加小游戏服务器,我的世界服务器小游戏怎么玩 骨灰玩家手把手教学...
  4. 我们有n根的木棍。现在从这些木棍中切割出来m条长度相同的木棍,问这m根木棍最长有多长?
  5. Python读写串口编程
  6. 大疆网上测评题库_大疆科技题目
  7. macbook pro下安装三系统
  8. python列表or字符串切片步长为负数的情况分析
  9. 【Puzzle】基于 Vue 和 Webpack4 的可插拔式微前端架构
  10. 最大正方形面积/数量(单调栈)