教育平台线上课程数据分析

通过对教育平台线上课程的数据分析,发现用户主要集中在广东、贵州、湖北和湖南等地,用户登录高峰在工作日的上午10点和非工作日的下午3点、晚上8点。用户在4月份登录量达到峰值,免费试学阶段转化率为30%,付费上课阶段ARPPU高于ARPU,说明课程流量大但转化率有待提升。课程结课率普遍偏低,需加强用户粘性。流失用户比例高达60%,其中未参加课程的用户学习时长少于10分钟的占大多数。协同过滤算法用于课程智能推荐,提高用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

教育平台的线上课程数据分析

一、项目背景

在线教育一般指基于互联网的线上学习行为,与传统的线下教育机构、培训班、学校相比,在线教育在时间空间上有很多优势。
近年来,随着互联网与通信技术的高速发展,各种在线教育平台和学习应用纷纷涌现,各种网课、慕课、直播课等层出不穷。尤其是 2020 年春季学期,受新冠疫情影响,在教育部**“停课不停学”** 的要求下,网络平台成为“互联网+教育”成果的重要展示阵地
因此, 如何根据教育平台的线上用户信息和学习信息,通过数据分析为教育平台和用户提供精准的课程推荐服务就成为线上教育的热点问题。本项目从数据集给出字段出发,围绕用户登录注册→开始试听课程,免费试学→试听后开始付费学习→结束课程学习→推荐其他课程的完整业务流程,深入到各个阶段,通过数据分析为产品部门、运营部门提供可落地的建议,赋能业务增长。

二、分析目标

  • 用户登录注册阶段:
    分析平台用户活跃情况,地域分布以及登录时间统计;
  • 免费试学阶段:
    用户学习行为路径进行漏斗分析,计算各阶段转化率
    分析拉新效果,计算拉新购课转化率;
  • 付费上课学习阶段:
    用户付费行为分析,计算月度ARPUARPPU
    分析用户学习时长,查看学习时长分布;
  • 课程结束阶段:
    计算每门课程结课率,查看课程完成情况;
    计算课程受欢迎程度,找到最受欢迎的课程TOP10
  • 构建RFM模型,实现用户精细化运营
  • 分析用户流失情况,计算流失率
  • 课程推荐阶段:
    协同过滤算法进行线上课程智能推荐
    在这里插入图片描述

三、数据探索与预处理

3.1 字段解释

在这里插入图片描述
用户信息表

users_data = pd.read_csv('./users.csv',encoding='gbk')
users_data.head()

在这里插入图片描述
学习信息表

study_information_data = pd.read_csv('./study_information.csv',encoding='gbk')
study_information_data.head()

在这里插入图片描述
登录信息表

login_data = pd.read_csv('./login.csv',encoding='gbk')
login_data.head()

在这里插入图片描述

3.2 缺失值处理

  • 用户信息表
# 查看数据的简要信息
users_data.info()

在这里插入图片描述

user_id字段和school字段均有缺失值,缺失用户占比少,故直接舍弃;school字段也有缺失值,但是该字段意义不大,故不做处理

users_data.isnull().sum()  #查看缺失值个数
#统计缺失值占比
print(users_data['user_id'].isnull().sum()/users_data.shape[0])

在这里插入图片描述

#缺失用户占比少,故直接舍弃;school字段也有缺失值,但是该字段意义不大,故不做处理
users_data.dropna(subset=['user_id'],axis= 0 ,inplace = True)
users_data.shape  #处理后数据大小
# (43916, 7)
  • 学习信息表
study_information_data.info()

在这里插入图片描述

price价格字段有缺失值,但缺失数据比较少,直接用0值进行填充

# 用0值进行填充
study_information_data['price'].fillna(0,inplace= True)
  • 登录信息表
login_data.info()

在这里插入图片描述

登录信息表无缺失值

3.3 重复值处理

#用户信息表
users_data.duplicated().sum()
#删去重复值
users_data.drop_duplicates('user_id',inplace= True) 
# 学习详情表
study_information_data.duplicated().sum()

结果为0

#登录详情表
login_data.duplicated().sum()

结果为0

3.4 异常值处理

users_data数据中 recently_logged 字段存在异常值“–-”,该数据可能为缺失值,也可能是用户注册后不再进行登录,结合后续分析与study_information表格进行联结,对“–”进行分类处理。
对于在 study_information 中出现的选课信息的用户,采用其选课的最后时间来替换“–”;剩余的“–”异常值用注册时间来替换。

users_data[users_data['recently_logged']=='--'].info()

在这里插入图片描述

有5375个异常数据

#将course_join_time列进行日期转换
pd.to_datetime(study_information_data['course_join_time'])

#找到每个用户加入课程的最近时间
users_recently_select = study_information_data.groupby('user_id')['course_join_time'].max()

# 将加入课程最近时间与主表连接
users_study_information =  pd.merge(users_data,users_recently_select,on='user_id',how='left')

# 新增course_join_time应与recently_join_time同类型
users_study_information['course_join_time'] = users_study_information['course_join_time'].astype(str)

#将'--'填充为最近加入课程的时间
users_study_information['recently_logged'] = users_study_information[['recently_logged','course_join_time']].apply(
    lambda row:row['course_join_time'] if row['recently_logged']=='--' else row['recently_logged'],axis=1)

#检查是否填充成功
users_study_information[users_study_information['recently_logged']=='--'].count()

在这里插入图片描述

四、 用户登录阶段

4.1 用户地域分布分析

对用户的登录信息,尤其是地理位置信息的分析,能够帮助我们了解使用我们产品的用户集中分布在哪些省份、哪些城市,为运营部门指定推广计划,进行广告精准投放指明方向。

# 构建省份变量
province = ['新疆','西藏', '青海', '甘肃', '四川','云南','宁夏','内蒙古','黑龙江','吉林','辽宁','河北','北京','天津','陕西','山西','山东','河南','重庆','湖北','安徽','江苏','上海','贵州','广西', '湖南', '江西', '浙江', '福建','广东', '海南','台湾','澳门', '香港']

def get_provice(x):
    '''
    提取省份数据
    param x:用户登录地址
    '''
    for i in province:
        if i in x:
            return i
#调用函数提取省份
login_data['province'] = login_data['login_place'].apply(get_provice)
login_data['province'].head()

在这里插入图片描述

#查看省份缺失数据占原始数据的比重
len1 = login_data['province'].isnull().sum()
len2 = login_data.shape[0]
print('省份缺失数据占原始数据的比重:',len1/len2)

在这里插入图片描述

# 构建城市变量
def get_city(x):
    '''
    提取城市数据
    param x:用户登录地址
    '''
    # 两个特殊的三个字符的省份
    if (x[2:5]=='黑龙江') or (x[2:5]=='内蒙古'):
            return x[5:]
    else:
        return x[4:]
login_data['city'] = login_data['login_place'].apply(get_city)
login_data['city']

在这里插入图片描述

#将直辖市与行政区的省份名与城市名进行替换
ind = login_data['province'].str.contains('北京|上海|重庆|天津|澳门|香港')
login_data.loc[ind,'city'] = login_data.loc[ind,'province']
#查看城市空数
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值