数据挖掘
Python数据分析实战:学习行为特征挖掘实验
数据准备
分析数据集包含12万条用户学习记录,字段包括:用户ID、学习资源ID、资源类型(笔记/报告/课程)、学习开始时间、学习时长、完成率、设备类型等。
分析步骤
核心发现
- 数据清洗与预处理:
import pandas as pd
import numpy as np
读取数据
df = pd.read_csv('learning_data_6months.csv')
数据清洗
1. 处理缺失值
df = df.dropna(subset=['user_id', 'start_time', 'duration'])
2. 转换时间格式
df['start_time'] = pd.to_datetime(df['start_time'])
df['hour'] = df['start_time'].dt.hour
df['weekday'] = df['start_time'].dt.weekday
3. 过滤异常值(学习时长<10秒或>3600秒)
df = df[(df['duration'] >= 10) & (df['duration'] <= 3600)]
- 学习时段分布分析:
import matplotlib.pyplot as plt
设置中文字体
plt.rcParams['font.sans-serif'] = ['WenQuanYi Zen Hei']
按小时统计学习次数
hour_dist = df.groupby('hour').size()
绘制学习时段分布图
plt.figure(figsize=(12, 6))
hour_dist.plot(kind='bar', color='#165DFF')
plt.title('用户学习时段分布', fontsize=14)
plt.xlabel('小时', fontsize=12)
plt.ylabel('学习次数', fontsize=12)
plt.xticks(rotation=0)
plt.grid(axis='y', alpha=0.3)
plt.savefig('learning_hour_dist.png', dpi=300, bbox_inches='tight')
plt.close()
- 学习效率特征挖掘:
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
提取特征变量
features = df[['duration', 'completion_rate', 'hour', 'weekday']]
数据标准化
scaler = StandardScaler()
features_scaled = scaler.fit_transform(features)
K-Means聚类(分为3类:高效/中等/低效)
kmeans = KMeans(n_clusters=3, random_state=42)
df['efficiency_type'] = kmeans.fit_predict(features_scaled)
分析各类别特征
cluster_analysis = df.groupby('efficiency_type').agg({
'duration': 'mean',
'completion_rate': 'mean',
'hour': 'mean',
'user_id': 'nunique'
}).round(2)
print(cluster_analysis)
- 学习时段特征:周末15:00-17:00(平均学习时长420秒,完成率85%)和工作日20:00-22:00(平均学习时长380秒,完成率82%)为高效学习时段
- 资源偏好特征:
- 设备特征:PC端学习完成率(83%)显著高于移动端(68%),尤其是「代码实践」类资源
分享至: