一、真题
试题代码
试题名称
电商平台用户行为分析系统的数据采集与处理流程设计
场地设备要求
人工智能训练师主机:CPU(intel i5 及以上)、内存(不少于 16GB)、操作系统(windows10)、支持深度学习训练;
考核时间
30min
工作任务
某电商平台希望通过用户行为数据分析,了解用户购物习惯、购买倾向等,从而优化产品推荐系统,提高用户满意度和销售额。作为数据分析师,您需要设计一套全面的业务数据采集与处理流程,确保数据在进入用户行为分析系统之前经过严格的采集、清洗和预处理。
我们提供一个用户行为数据集(user_behavior_data.csv),包含以下字段:
UserID: 用户ID
UserName: 用户名
Age: 年龄
Gender: 性别(Male/Female)
Location: 位置
LastLogin: 上次登录时间
PurchaseAmount: 购买金额
PurchaseCategory: 购买类别(例如,电子产品、服装、食品等)
ReviewScore: 用户评价评分(1-5)
LoginFrequency: 登录频率(每日、每周、每月)
你作为人工智能训练师,根据提供的user_behavior_data.csv数据集和Python代码框架(1.1.4.ipynb),完成以下数据的采集与处理任务,确保数据的准确性和可靠性。请按照以下要求完成任务,确保结果准确并保存相应的截图。
(1)数据采集:
通过运行Python代码(1.1.4.ipynb),从本地文件user_behavior_data.csv中读取数据,并将数据加载到DataFrame中。打印前5条数据。
(2)数据清洗与预处理:
通过运行Python代码(1.1.4.ipynb)对数据进行清洗和预处理,具体要求如下:
处理缺失值:对缺失值进行填充或删除。
数据类型转换:确保每个字段的数据类型正确。
处理异常值:删除不合理的年龄、购买金额和评价评分。
数据标准化:对购买金额和评价评分进行标准化处理。
清洗后的数据保存为新文件cleaned_user_behavior_data.csv。
(3)数据统计:
通过运行Python代码(1.1.4.ipynb),完成以下数据统计任务:
统计每个购买类别的用户数。
统计不同性别的平均购买金额。
统计不同年龄段的用户数(18-25岁、26-35岁、36-45岁、46-55岁、56-65岁、65岁以上)。
将统计结果分别截图以JPG的格式保存,分别命名为“1.1.4-1”、“1.1.4-2”、“1.1.4-3”。
所有结果文件储存在桌面新建的考生文件夹中,文件夹命名为“准考证号+身份证号后六位”。
技能要求
(1)能结合人工智能技术要求和业务特征,设计整套业务数据采集流程
(2)能结合人工智能技术要求和业务特征,设计整套业务数据处理流程
质量指标
(1)完整性指标:数据集中无缺失值和重复记录。
(2)合理性指标:所有数据点符合业务规则,无异常值存在。
(3)清洗效果指标:清洗后的数据集完整、合理,且适于建模分析。
二、答案
import pandas
import numpy as np
import matplotlib.pyplot as plt
1. 数据采集
从本地文件中读取数据 2分
data = pandas.read_csv(‘user_behavior_data.csv’)
print(“数据采集完成,已加载到DataFrame中”)
打印数据的前5条记录 2分
print(data.head())
数据采集完成,已加载到DataFrame中
UserID UserName Age Gender Location LastLogin PurchaseAmount
0 1 User_1 62 Female Location_1 2023-06-10 118
1 2 User_2 65 Female Location_2 2023-08-14 466
2 3 User_3 18 Male Location_3 2023-02-17 869
3 4 User_4 21 Female Location_4 2023-03-14 486
4 5 User_5 21 Male Location_5 2023-07-26 753
PurchaseCategory ReviewScore LoginFrequency
0 Clothing 3 Monthly
1 Electronics 4 Weekly
2 Home & Garden 3 Weekly
3 Books 2 Weekly
4 Home & Garden 1 Monthly
2. 数据清洗与预处理
处理缺失值(删除) 2分
data = data.dropna()
数据类型转换
data[‘Age’] = data[‘Age’].astype(int) # Age数据类型转换为int 2分
data[‘PurchaseAmount’] = data[‘PurchaseAmount’].astype(float) # PurchaseAmount数据类型转换为float 2分
data[‘ReviewScore’] = data[‘ReviewScore’].astype(int) # ReviewScore数据类型转换为int 2分
处理异常值 2分
data = data[(data[‘Age’].between(18, 70)) &
(data[‘PurchaseAmount’] > 0) &
(data[‘ReviewScore’] .between(1, 5))]
数据标准化
data[‘PurchaseAmount’] = (data[‘PurchaseAmount’] – data[‘PurchaseAmount’].mean()) / data[‘PurchaseAmount’].std() # PurchaseAmount数据标准化 2分
data[‘ReviewScore’] = (data[‘ReviewScore’] – data[‘ReviewScore’].mean()) / data[‘ReviewScore’].std() # ReviewScore数据标准化 2分
保存清洗后的数据 1分
data.to_csv(‘cleaned_user_behavior_data.csv’, index=False)
print(“数据清洗完成,已保存为 ‘cleaned_user_behavior_data.csv’”)
数据清洗完成,已保存为 ‘cleaned_user_behavior_data.csv’
3. 数据统计
统计每个购买类别的用户数 2分
purchase_category_counts = data[‘PurchaseCategory’].value_counts()
print(“每个购买类别的用户数:
”, purchase_category_counts)
统计不同性别的平均购买金额 2分
gender_purchase_amount_mean = data.groupby(‘Gender’)[‘PurchaseAmount’].mean()
print(“不同性别的平均购买金额:
”, 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.cut(data[‘Age’], bins=bins,labels=labels,right=False)
age_group_counts = data[‘AgeGroup’].value_counts().sort_index()
print(“不同年龄段的用户数:
”, age_group_counts)