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

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

B站科普区优质科普(技术区)UP主挖掘分析_第1张图片

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

B站科普区优质科普(技术区)UP主挖掘分析_第2张图片
然后咋们就要开始算平均的更新间隔啦~更新时间太长了,不行不行,我等不起,那就是越小越好?不不不 !如果只有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

B站科普区优质科普(技术区)UP主挖掘分析_第3张图片
这样看不够直观,用describe()来看看到底F是个啥样
B站科普区优质科普(技术区)UP主挖掘分析_第4张图片
果然,就有那种很喜欢转发的,大家看到F下的那个0了吗!找到它,删除!用啥方法找到它(索引)呢?当然是idxmin这个函数啦~

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

在给他一次机会,看看这位UP其他特征怎么样
B站科普区优质科普(技术区)UP主挖掘分析_第5张图片
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

B站科普区优质科普(技术区)UP主挖掘分析_第6张图片

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

B站科普区优质科普(技术区)UP主挖掘分析_第7张图片

建模

你以为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()

B站科普区优质科普(技术区)UP主挖掘分析_第8张图片

均值划分

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

B站科普区优质科普(技术区)UP主挖掘分析_第9张图片

类型划分

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

B站科普区优质科普(技术区)UP主挖掘分析_第10张图片

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吧~

你可能感兴趣的:(数据分析)