赞
踩
文章:
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(一)
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(二)
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(总)
代码:
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(代码部分)
数据集下载:抖音用户浏览行为数据集
首先,需要获取抖音用户的浏览行为的相关数据集,包括用户的观看记录、点赞记录、评论记录、分享记录等。这可以从数据库中提取数据、采集网络数据、使用API 访问数据源或与合作伙伴合作获得数据,也可以通过与抖音平台合作获得用户数据,使用API访问数据接口或其他合法的数据收集手段来实现。
# 导包
import pandas as pd
import numpy as np
# 1. 数据简单处理——读入数据
df = pd.read_csv('douyin_dataset.csv')
df.head()
del df['Unnamed: 0']#无效字段的删除[Unnamed:0]
# 数据基本信息基本信息
df.info(null_counts = True)
根据问题的需求和数据的特点,进行特征选择、提取和转换。例如,可以从用户的浏览行为数据中提取特征,如观看时长、点赞数、评论数、分享数等,或者通过文本挖掘技术提取用户的评论内容特征,可以包括对原始特征进行数值化、编码分类变量、创建新特征等操作。
# 2. 特征指标统计分析 ## 2.1 用户特征统计分析 user_df = pd.DataFrame() user_df['uid'] = df.groupby('uid')['like'].count().index.tolist() # 将所有用户的uid提取为uid列 user_df.set_index('uid', inplace=True) # 设置uid列为index,方便后续数据自动对齐 user_df['浏览量'] = df.groupby('uid')['like'].count() # 统计对应uid下的浏览量 user_df['点赞量'] = df.groupby('uid')['like'].sum() # 统计对应uid下的点赞量 user_df['观看作者数'] = df.groupby(['uid']).agg({ 'author_id':pd.Series.nunique}) # 观看作者数 user_df['观看作品数'] = df.groupby(['uid']).agg({ 'item_id':pd.Series.nunique}) # 观看作品数 user_df['观看作品平均时长'] = df.groupby(['uid'])['duration_time'].mean() # 浏览作品平均时长 user_df['观看配乐数'] = df.groupby(['uid']).agg({ 'music_id':pd.Series.nunique}) # 观看作品中配乐的数量 user_df['完整观看数'] = df.groupby('uid')['finish'].sum() # 统计对应uid下的完整观看数 # 统计对应uid用户去过的城市数量 user_df['去过的城市数'] = df.groupby(['uid']).agg({ 'user_city':pd.Series.nunique}) # 统计对应uid用户看的作品所在的城市数量 user_df['观看作品城市数'] = df.groupby(['uid']).agg({ 'item_city':pd.Series.nunique}) user_df.describe() user_df.to_csv('用户特征.csv', encoding='utf_8_sig')
## 2.2 作者特征统计分析 author_df = pd.DataFrame() author_df['author_id'] = df.groupby('author_id')['like'].count().index.tolist() author_df.set_index('author_id', inplace=True) author_df['总浏览量'] = df.groupby('author_id')['like'].count() author_df['总点赞量'] = df.groupby('author_id')['like'].sum() author_df['总观完量'] = df.groupby('author_id')['finish'].sum() author_df['总作品数'] = df.groupby('author_id').agg({ 'item_id':pd.Series.nunique}) item_time = df.groupby(['author_id', 'item_id']).mean().reset_index() author_df['作品平均时长'] = item_time.groupby('author_id')['duration_time'].mean() author_df['使用配乐数量'] = df.groupby('author_id').agg({ 'music_id':pd.Series.nunique}) author_df['发布作品日数'] = df.groupby('author_id').agg({ 'real_time':pd.Series.nunique}) # pd.to_datetime(df['date'].max()) - pd.to_datetime(df['date'].min()) # 作品时间跨度为40,共计40天 author_days = df.groupby('author_id')['date'] _ = pd.to_datetime(author_days.max()) - pd.to_datetime(author_days.min()) author_df['创作活跃度(日)'] = _.astype('timedelta64[D]').astype(int) + 1 author_df['去过的城市数'] = df.groupby(['author_id']).agg({ 'item_city':pd.Series.nunique}) author_df.describe() author_df.to_csv('作者特征.csv', encoding='utf_8_sig')
## 2.3 作品特征统计分析
item_df = pd.DataFrame()
item_df['item_id'] = df.groupby('item_id')['like'].count().index.tolist()
item_df.set_index('item_id', inplace=True)
item_df['浏览量'] = df.groupby('item_id')['like'].count()
item_df['点赞量'] = df.groupby('item_id')['like'].sum()
item_df['发布城市'] = df.groupby('item_id')['item_city'].mean()
item_df['背景音乐'] = df.groupby('item_id')['music_id'].mean()
item_df.to_csv('作品特征.csv', encoding='utf_8_sig')
import pandas as pd
import numpy as np
from pyecharts.charts import *
from pyecharts import options as opts
def line_chart(t, data):# 曲线图 chart = ( Line(init_opts = opts.InitOpts(theme='light', width='500px', height='300px')) .add_xaxis([i[0] for i in data]) .add_yaxis( '', [i[1] for i in data], is_symbol_show=False, areastyle_opts=opts.AreaStyleOpts(opacity=1, color="cyan") ) .set_global_opts( title_opts=opts.TitleOpts(title=t), xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=True), yaxis_opts=opts.AxisOpts( type_="value", axistick_opts=opts.AxisTickOpts(is_show=True), splitline_opts=opts.SplitLineOpts(is_show=True), ), ) ) return chart
def pie_chart(t, data_pair):
# 新建一个饼图
chart = (
Pie(init_opts=opts.InitOpts(theme='light', width='550px', height='300px'))
.add('', data_pair ,radius=["30%", "45%"], # 半径范围,内径和外径
label_opts=opts.LabelOpts(formatter="{b}: {d}%") # 标签设置,{d}表示显示百分比
)
.set_global_opts(
title_opts=opts.TitleOpts(
title=t
),
legend_opts=opts.LegendOpts(pos_left="0%",pos_top=
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。