B站科普区优质UP主挖掘分析

爬虫的代码(在这里感谢贾老师)有兴趣的可以私聊我~
数据获取方式:

公众号:YOLO的学习进阶日常
回复:B站
注意:本数据集没有粉丝数,粉丝数需要另外一个API,这里我很多小伙伴都已经写过怎么爬去粉丝数,我就不赘述了

文章目录

  • B站科普区优质UP主挖掘分析
    • 明确目的
    • 读取数据
    • RFM——IFL模型
      • F
      • I
      • L值
  • 建模
    • 评分
    • 均值划分
    • 类型划分

明确目的

首先在数据分析之前我们要知道我们拿这些来干嘛???
很简单!想去B站关注一些高质量科普类(技术)的UP来帮助我学习咯~

读取数据

我们只需要科普区的,提取关键列“科学科普”,提取我们想用来进行分析的关键字段

注意:数据集303M,爬去了很多,不止科普区的,还有其他的,我这里只是提取了部分数据分析而已

import pandas as pd
data=pd.read_csv('./tech.csv')
sci=data.loc[data['分区']=='科学科普']
sci=sci[['分区','author','coins','danmu','favorite','likes','reply','share','view','title','date']]
sci.head()

RFM——IFL模型

我们怎么获得想要的成员呢!相信很多朋友都知道RFM模型用来用户画像吧,因此我们同理使用RFM的原理,建立一个IFL模型

I:interaction_rate 反应的是平均每个视频的互动率
F:Frequence 表示的是每个视频的平均发布周期
L:like_rate 表示的是统计时间内发布视频的平均点赞率

IFL模型是对视频质量进行评估和分析

F

F是反映视频周期的,和RFM模型一样,也是反应频率的,这里就是反应更新的频率,经常脱更的我可不行!

首先,肯定是视频数要大于5个以上的啊,不然我关注她图 啥啊,图她比我青春靓丽吗

count=sci.groupby("author")['分区'].count().reset_index()
count.columns=['author','times']
com_m=pd.merge(count,sci,on='author',how='inner')
com=com_m[com_m['times']>=5]
com


然后咋们就要开始算平均的更新间隔啦~更新时间太长了,不行不行,我等不起,那就是越小越好?不不不 !如果只有0咋办,那肯定就是转发啊,不行不行这个不行。

import datetime as dt
com['date']=pd.to_datetime(com.date)
last=com.groupby("author")['date'].max()
late=com.groupby("author")['date'].min()
F=round((last-late).dt.days/com.groupby("author")['date'].count()).reset_index()
F.columns=['author','F']
F=pd.merge(com,F,on='author',how='inner')
F.describe()
F


这样看不够直观,用describe()来看看到底F是个啥样

果然,就有那种很喜欢转发的,大家看到F下的那个0了吗!找到它,删除!用啥方法找到它(索引)呢?当然是idxmin这个函数啦~

F.loc[F['F'].idxmin()]

在给他一次机会,看看这位UP其他特征怎么样

emmmmmm其他不怎么样,好啦,都是转载,这位UP很遗憾要被我删除了

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

F值求到了,接下来,看看I值的效果怎么样,看一下大家没有没有跟这个UP互动啊,互动多的话应该还是可以证明UP是个很温柔很美好的人吧嘻嘻

I

用什么指标可以反应I值呢?
我们可以看看他的回复(reply)评论之类的,看他们的总和!越多越好

danmu=F.groupby('author')['danmu'].sum()
reply=F.groupby('author')['reply'].sum()
view=F.groupby("author")['view'].sum()
count=F.groupby("author")['date'].count()
I=round((danmu+reply)/view/count*100,2).reset_index()
I.columns=['author','I']
I=pd.merge(F,I,on='author',how='inner')
I

L值

点赞率有多重要,咳咳暗示大家都给我点赞评论啊哈哈哈,点赞率可以反应大家对这个UP 视频的认可度,L值当然是越大越好

I['xixi']=(I['likes']+I['coins']*2+I['favorite']*3)/I['view']*100
L=(I.groupby("author")['xixi'].sum()/I.groupby("author")['date'].count()).reset_index()
L.columns=['author','L']
IFL=pd.merge(I,L,on='author',how='inner')
IFL=IFL[['author','I','F','L']]
IFL

建模

你以为IFL算出来就可了?那怎么衡量他们的好坏呢?当然就是,建立指标啦。
三个指标都以均值为一个界限,先评分,F值如果大于均值,那就是,emmmm脱更,给他个0不为过吧,我们要严格一点啊现在有可以选择的UP哈哈哈,大于均值的就设为1;其他两个指标就是大于均值就设置为1,小于均值就是设置为0

评分

首先给他们,画个阶段出来

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()

均值划分

IFL['I_OK']=(IFL['I_score']>IFL['I_score'].mean())*1
IFL['F_OK']=(IFL['F_score']>IFL['F_score'].mean())*1
IFL['L_OK']=(IFL['L_score']>IFL['L_score'].mean())*1
IFL

类型划分

IFL['人群数值']=(IFL['I_OK']*100)+(IFL['F_OK']*10)+(IFL['L_OK']*1)
IFL

def transform_label(x):if x==111:label='高质量UP主'elif x==101:label='高质量拖更UP主'elif x==11:label='高质量内容高深UP主'elif x==1:label='高质量内容高深托更UP主'elif x==110:label='接地气活跃UP主'elif x==10:label='活跃UP主'elif x==100:label='接地气UP主'elif x==0:label='还在成长的UP主'return label
IFL['人群类型']=IFL['人群数值'].apply(transform_label)
data=IFL[['人群类型','author']]
data=pd.merge(sci,data,on='author',how='inner')
data=data[['author','title','人群类型']]
data=data.drop_duplicates("author").reset_index()
data.to_csv("/media/yefanyefan/新加卷/AA/work/fin/UP.csv",index=False)

好啦~快去根据自己的需求分析自己想关注的UP吧~

B站科普区优质科普(技术区)UP主挖掘分析相关推荐

  1. 易基因|综述科普:单细胞测序技术下的小鼠脑部DNA甲基化图谱

    表观基因组的动态变化与哺乳动物大脑中的细胞分化和成熟有关,在调节神经元功能和动物行为方面具有重要作用.胞嘧啶DNA甲基化(5mC)是一种稳定的共价修饰,对基因调控至关重要.在哺乳动物基因组中,5mC主 ...

  2. 保定计算机软件学院是哪个区,河北软件职业技术学院在哪个区

    一.河北软件职业技术学院在哪个区 河北软件职业技术学院是在保定市南市区,具体地址在河北省保定市东风东路999号,该校是隶属于河北省教育厅,是河北省首家独立建制的以信息技术教育为主的高等职业院校. 二. ...

  3. 王者荣耀服务器微信篇,王者荣耀:微信区转QQ区能提高技术?玩家用真实经历讲述,是的...

    原标题:王者荣耀:微信区转QQ区能提高技术?玩家用真实经历讲述,是的 每个游戏的玩家基本上都会分为多个对立群体,比如喜欢秀操作的看不上脸滚键盘的:喜欢有爆炸性伤害英雄的玩家则非常鄙视爱拿持续输出英雄的 ...

  4. [征求意见]关于增加Java技术区

    有人发邮件建议博客园增加java技术区. 博客园在这里征询大家的意见, 大家是否同意增加java技术区? 博客园已经有Java分站:http://www.blogjava.net . 转载于:http ...

  5. 从网易云音乐说起,看如何打造优质的评论区

    作者:且行且看 全文共 4890 字 10 图,阅读需要 10 分钟 ---- / BEGIN / ---- 评论区是一款产品中用户和用户,用户和内容发布者,用户和平台的重要交流渠道,它对于产品的整体 ...

  6. 《SOC芯片研究框架》深度科普,发展趋势、技术特点、产业链一文看懂

    片上系统SoC(System on Chip),即在一块芯片上集成一整个信息处理系统,简单来说 SoC芯片是在中央处理器CPU的基础上扩展音视频功能和专用接口的超大规模集成电路,是智能设备的" ...

  7. B站头部UP主抱团垄断优质资源,腰部UP主的流量突破口在哪?

    本篇关键词:UP主.B站.涨粉.流量.内容创作 B站头部UP主一直是热门视频榜的常驻嘉宾,老番茄.雨哥到处跑.绵羊料理.老师好我叫何同学等. 参考UP主老师好我叫何同学,10月17日发布<[何同 ...

  8. 1、虚拟机内存管理、运行时数据区、线程共享区、Java堆、新生代、老年代、Eden区域分配、方法区、线程独占区、虚拟机栈

    1.Java虚拟机内存管理 1.1.运行时数据区[Runtime Data Area] 1.1.1.线程共享区 1.1.1.1.Java堆[heap] 1.1.1.1.1.新生代.老年代.Eden区域 ...

  9. kdj超卖_kdj超买超卖是什么意思?kdj指标里说的“超买区,超卖区”什么意思?...

    在分析股票的走势以及股票买卖点的时候,我们经常会使用一些指标来作为工具进行分析,比如KDJ指标等,最近有人问kdj超买超卖是什么意思?对此小编给大家搜集了有关KDJ指标和超买超卖指标的一些内容. kd ...

最新文章

  1. jQuery ajax 传递JSON数组到Spring Controller
  2. python画横条形图-用matplotlib画条形图(bar)
  3. oracle crm版本,ORACLE CRM ON DEMAND 19 版
  4. 程设13次作业总结--运算符重载
  5. 我是如何超越PPG的(摘自:IT经理世界;作者:李黎)
  6. 跪求解,oc内存回收问题
  7. 使用 Hexo + Next 搭建静态博客
  8. Unity中UGUI之Canvas属性解读版本二
  9. java web tomcat 实例_Java Web应用开发实例
  10. 前端开发者必备google插件
  11. [BZOJ4719][P1600][NOIP2016]天天爱跑步[LCA+dfs序+差分]
  12. JAVA语言基础——类型转换
  13. Qt调用谷歌翻译API
  14. LitJson扩展支持float类型和自定义类型
  15. python安卓脚本精灵使用教程_按键精灵安卓按键初体验—乱斗西游2自动签到
  16. python培训 首选马哥教育
  17. 牛客网 2018校招真题 吉比特 最大差值
  18. 从国际象棋与象棋的走法差异,再趣说IT人提升能力和增收方式
  19. 标签系列二:spring 中bean解释以及bean标签里面的属性
  20. 从0到1一个文件,用Python 实现 Web 框架

热门文章

  1. Mybatis框架下SQL注入审计分析
  2. 烈火如歌手游找回服务器,烈火如歌手游机缘任务触发前置条件大全 烈火如歌机缘任务攻略...
  3. 学电脑绘画有没有前景,怎么学电脑绘画
  4. 几种导入导出mysql数据库的方法(建议收藏)
  5. 幸存者偏差与创业鼓吹
  6. 天气API Http接口
  7. 亚马逊美国站店铺fbm模式,亚马逊美国站店铺fbm佣金多少?
  8. php 鲜奶配送系统,真正免费的鲜奶配送软件,牛奶配送,酸奶配送系统
  9. js关闭当前页面,chrome插件方式
  10. Linux 搜索文件和文件夹的 4 种简单方法