Appearance
1. 导入库
python
import pandas
import numpy as np
import matplotlib.pyplot as plt- pandas用于数据处理和分析(这里没有使用常见的缩写pd)
- numpy用于数值计算,简写为
np - matplotlib.pyplot用于数据可视化,简写为
plt(虽然代码中未实际使用绘图功能)
2. 数据采集
python
data = pandas.read_csv('user_behavior_data.csv')- 使用pandas的
read_csv函数读取名为user_behavior_data.csv的用户行为数据文件 - 将数据存储在名为
data的DataFrame中
python
print("数据采集完成,已加载到DataFrame中")- 打印数据加载完成的信息
python
print(data.head())- 使用
head()方法打印DataFrame的前5行数据 - 用于快速查看数据结构和内容
3. 数据清洗与预处理
python
data = data.dropna()- 使用
dropna()方法删除包含缺失值(NaN)的行 - 直接修改原DataFrame
python
data['Age'] = data['Age'].astype(int)- 将Age列的数据类型转换为整数型(int)
- 确保年龄数据为整数
python
data['PurchaseAmount'] = data['PurchaseAmount'].astype(float)- 将PurchaseAmount列的数据类型转换为浮点型(float)
- 确保购买金额可以有小数
python
data['ReviewScore'] = data['ReviewScore'].astype(int)- 将ReviewScore列的数据类型转换为整数型(int)
- 确保评分数据为整数
python
data = data[(data['Age'].between(18, 70)) & (data['PurchaseAmount'] > 0) & (data['ReviewScore'].between(1, 5))]- 筛选保留合理范围内的数据:
- 年龄在18-70岁之间
- 购买金额大于0
- 评分在1-5分之间
- 使用布尔索引过滤不合理数据
python
data['PurchaseAmount'] = (data['PurchaseAmount'] - data['PurchaseAmount'].mean()) / data['PurchaseAmount'].std()- 对PurchaseAmount列进行标准化(Z-score标准化)
- 公式:(原始值 - 平均值)/ 标准差
- 使数据均值为0,标准差为1
python
data['ReviewScore'] = (data['ReviewScore'] - data['ReviewScore'].mean()) / data['ReviewScore'].std()- 对ReviewScore列进行同样的标准化处理
python
data.to_csv('cleaned_user_behavior_data.csv', index=False)- 将清洗后的数据保存到新的CSV文件
cleaned_user_behavior_data.csv index=False表示不保存行索引
python
print("数据清洗完成,已保存为'cleaned_user_behavior_data.csv'")- 打印数据清洗完成的信息
4. 数据统计
python
purchase_category_counts = data['PurchaseCategory'].value_counts()- 统计PurchaseCategory列中各购买类别的用户数量
value_counts()返回各分类的计数- 结果存储在
purchase_category_counts变量中
python
print("每个购买类别的用户数:\n", purchase_category_counts)- 打印购买类别统计结果
python
gender_purchase_amount_mean = data.groupby('Gender')['PurchaseAmount'].mean()- 按Gender列分组
- 计算每组中PurchaseAmount的平均值
- 结果存储在
gender_purchase_amount_mean变量中
python
print("不同性别的平均购买金额:\n", gender_purchase_amount_mean)- 打印不同性别的平均购买金额
python
bins = [18, 26, 36, 46, 56, 66, np.inf]
labels = ['18-25', '26-35', '36-45', '46-55', '56-65', '65+']- 定义年龄区间的边界点
- 定义对应的年龄组标签
python
data['AgeGroup'] = pandas.cut(data['Age'], bins=bins, labels=labels, right=False)- 使用
cut()方法将年龄划分到指定区间 bins参数指定区间边界labels参数指定区间标签right=False表示使用左闭右开区间- 结果存储在新列
AgeGroup中
python
age_group_counts = data['AgeGroup'].value_counts().sort_index()- 统计各年龄组的用户数量
value_counts()计算各组的数量sort_index()按索引(年龄组标签)排序- 结果存储在
age_group_counts变量中
python
print("不同年龄段的用户数:\n", age_group_counts)- 打印各年龄段的用户数量统计结果