本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
作者:CDA数据分析师
PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取
python免费学习资料以及群交流解答点击即可加入
“李家有女,人称子柒。”如果说到当下最火的网红,想必很多人都会想到李子柒。
日出而作,日落而息,看似平淡无奇的日子,李子柒却总能过成一首诗、一幅画。
三月桃花熟了,采来酿桃花酒。四月枇杷成熟,酿枇杷酒…随着不同时令季节,做出不同的美食,看过李子柒视频的人,无一不对那视频里的古风田园生活向往憧憬着,同时也带给了无数人治愈的力量。
目前在B站上,李子柒共有579万的粉丝。入驻到现在仅仅发布了共125条视频,但随便翻翻视频列表,几乎每个视频都是爆款。
李子柒的视频都在拍些什么? 下面让我们看到关键的分析步骤:
我们Python获取了B站上李子柒发布的125个视频相关信息,进行了以下分析,分析流程如下:
- 数据读入
- 数据清洗
- 数据可视化
- 数据读入
首先读入分析所用的数据集,本数据集一共包含125个样本,11个字段,字段含义为:视频标题、一级分类、二级分类、发布时间、最高全站排名、总播放数、历史累计弹幕、点赞、投币、收藏和分享数。
数据预览如下:
# 导入包
import numpy as np
import pandas as pd
import re
# 读入数据
df = pd.read_excel('./data/李子柒视频数据.xlsx')
df.head()
数据清洗
此部分我们初步对以下信息进行简单的处理,其中包含:
- title:提取主题和介绍
- top_rank:提取数值
- view_num:提取数值
- dm_num: 提取数值
- dianzan: 计算数值
- toubi: 计算数值
- shoucang:计算数值
- zhuanfa:计算数值
# 定义转换函数
def transform_num(x):
str1 = str(x)
if '万' in str1:
return float(str1.strip('万'))*10000
else:
return float(str1)
# 提取数据
df['title_1'] = df.title.str.extract('【(.*?)】.*')
df['title_2'] = df.title.str.split('】').str[-1]
df['top_rank'] = df.top_rank.str.extract('最高全站日排行(\d+)名')
df['view_num'] = df.view_num.str.extract('(\d+)')
df['dm_num'] = df.dm_num.str.extract('(\d+)')
df['dianzan'] = df.dianzan.apply(lambda x: transform_num(x))
df['toubi'] = df.toubi.apply(lambda x: transform_num(x))
df['shoucang'] = df.shoucang.apply(lambda x: transform_num(x))
df['zhuanfa'] = df.zhuanfa.apply(lambda x: transform_num(x))
# 转换类型
df['view_num'] = df.view_num.astype('int')
df['dm_num'] = df.dm_num.astype('int')
df['publish_time'] = pd.to_datetime(df['publish_time'])
经过处理之后的数据如下所示:
df.head(2)
数据可视化
此处我们将进行以下部分的可视化分析,首先导入所需包,其中pyecharts用于绘制动态可视化图形,stylecloud包用于绘制词云图。关键部分代码如下:
# 导出所需包
from pyecharts.charts import Pie, Line, Tab, Map, Bar, WordCloud, Page
from pyecharts import options as opts
from pyecharts.globals import SymbolType
import stylecloud
视频各年发布数量
# 发布数量
pub_year = df.publish_time.dt.year.value_counts().sort_index()
# 条形图
bar0 = Bar(init_opts=opts.InitOpts(width='1350px', height='750px'))
bar0.add_xaxis(pub_year.index.tolist())
bar0.add_yaxis('', pub_year.values.tolist())
bar0.set_global_opts(title_opts=opts.TitleOpts(title='B站李子柒视频各年发布数量'),
visualmap_opts=opts.VisualMapOpts(max_=50),
)
bar0.render()