跳转到主要内容
1.1.4 · 建议 30 分钟 · 满分 27

电商平台用户行为分析系统的数据采集与处理流程设计

背景

某电商平台希望通过用户行为数据分析,了解用户购物习惯、购买倾向等,从而优化产品推荐系统,提高用户满意度和销售额。作为数据分析师,您需要设计一套全面的业务数据采集与处理流程,确保数据在进入用户行为分析系统之前经过严格的采集、清洗和预处理。 用户行为数据集 user_behavior_data.csv 包含字段:UserID、UserName、Age、Gender(Male/Female)、Location、LastLogin、PurchaseAmount、PurchaseCategory(电子产品、服装、食品等)、ReviewScore(1-5)、LoginFrequency(每日/每周/每月)。

工作任务

  1. 数据采集:从本地文件 user_behavior_data.csv 中读取数据,加载到 DataFrame,并打印前 5 条数据。
  2. 数据清洗与预处理:处理缺失值;进行数据类型转换;删除不合理的年龄、购买金额和评价评分;对购买金额和评价评分进行标准化;保存为 cleaned_user_behavior_data.csv。
  3. 数据统计:统计每个购买类别的用户数;统计不同性别的平均购买金额;统计不同年龄段(18-25、26-35、36-45、46-55、56-65、65 以上)的用户数。

素材预览

user_behavior_data.csv
UserID,UserName,Age,Gender,Location,LastLogin,PurchaseAmount,PurchaseCategory,ReviewScore,LoginFrequency
1,User_1,62,Female,Location_1,2023-06-10,118,Clothing,3,Monthly
2,User_2,65,Female,Location_2,2023-08-14,466,Electronics,4,Weekly
...

代码填空

import pandas
import numpy as np
import matplotlib.pyplot as plt

# 1. 数据采集
# 从本地文件中读取数据  2分
data =  
print("数据采集完成,已加载到DataFrame中")

# 打印数据的前5条记录  2分
print()
# 2. 数据清洗与预处理
# 处理缺失值(删除)  2分
data = 

# 数据类型转换
data = (int)   # Age数据类型转换为int 2分
data = (float) # PurchaseAmount数据类型转换为float  2分
data = (int)   # ReviewScore数据类型转换为int 2分

# 处理异常值  2分
data = data[(.(18, 70)) & 
            (data['PurchaseAmount'] > 0) & 
            (.(1, 5))]

# 数据标准化
data['PurchaseAmount'] = (data['PurchaseAmount'] - ) /   # PurchaseAmount数据标准化 2分
data['ReviewScore'] = (data['ReviewScore'] - ) /         # ReviewScore数据标准化 2分

# 保存清洗后的数据  1分
('cleaned_user_behavior_data.csv', index=False)
print("数据清洗完成,已保存为 'cleaned_user_behavior_data.csv'")
# 3. 数据统计
# 统计每个购买类别的用户数 2分
purchase_category_counts = .
print("每个购买类别的用户数:\n", purchase_category_counts)

# 统计不同性别的平均购买金额 2分
gender_purchase_amount_mean = ()['PurchaseAmount'].mean()
print("不同性别的平均购买金额:\n", gender_purchase_amount_mean)

# 统计不同年龄段的用户数 2分
bins = [18, 26, 36, 46, 56, 66, np.inf]
labels = ['18-25', '26-35', '36-45', '46-55', '56-65', '65+']
data['AgeGroup'] = pandas.(, right=False)
age_group_counts = data['AgeGroup'].value_counts().sort_index()
print("不同年龄段的用户数:\n", age_group_counts)