数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(代码部分)
时间:2024-05-03 14:10:46 来源:网络cs 作者:晨起 栏目:卖家故事 阅读:
阅读本书更多章节>>>>
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(代码部分)
数据集下载:抖音用户浏览行为数据集
数据预处理
首先,需要获取抖音用户的浏览行为的相关数据集,包括用户的观看记录、点赞记录、评论记录、分享记录等。这可以从数据库中提取数据、采集网络数据、使用API 访问数据源或与合作伙伴合作获得数据,也可以通过与抖音平台合作获得用户数据,使用API访问数据接口或其他合法的数据收集手段来实现。
# 导包import pandas as pdimport 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) + 1author_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 pdimport numpy as npfrom 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%"
阅读本书更多章节>>>>
本文链接:https://www.kjpai.cn/gushi/2024-05-03/164484.html,文章来源:网络cs,作者:晨起,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
下一篇:返回列表