共计 1734 个字符,预计需要花费 5 分钟才能阅读完成。
Amazon 数据集简介
Amazon 数据集是亚马逊公司公开的一组电商相关数据,包含产品信息、用户评价、销售记录等丰富内容。这些数据对于研究推荐系统、用户行为分析、市场趋势预测等领域非常有价值。

- 数据类型:主要包括产品元数据(标题、描述、类别)、用户评论(评分、文本)、销售排名等
- 数据规模:从几千条到数百万条不等
- 常见应用:情感分析、产品推荐、价格预测、用户画像构建
数据获取方法
公开数据集下载
亚马逊官方提供了多个公开数据集,最常用的是:
- 访问 Amazon 产品数据 页面
- 选择需要的类别(如电子产品、图书等)
- 下载对应的 JSON 或 CSV 文件
通过 API 获取
对于需要实时数据的场景,可以使用 Amazon Product Advertising API:
- 注册 AWS 账户并获取 API 密钥
- 安装官方 SDK:
pip install python-amazon-product-api - 配置认证信息
from amazonproduct import API
api = API(locale='us')
# 搜索电子产品
result = api.item_search('Electronics', Keywords='smartphone')
数据预处理与清洗
原始数据通常需要经过以下处理步骤:
- 缺失值处理:
- 删除缺失过多的列
- 对数值型数据用均值 / 中位数填充
-
对文本数据用 ”Unknown” 或空字符串填充
-
文本清洗:
- 去除 HTML 标签
- 统一大小写
-
处理特殊字符
-
数据转换:
- 将时间戳转为 datetime 对象
- 对分类变量进行编码
import pandas as pd
import re
# 示例:清洗评论数据
def clean_text(text):
text = re.sub(r'<[^>]+>', '', text) # 去除 HTML
text = re.sub(r'\s+', ' ', text) # 合并空白
return text.strip()
df['cleaned_review'] = df['reviewText'].apply(clean_text)
基础数据分析示例
以下是一个完整的分析流程示例,使用 Python 的 pandas 和 matplotlib:
import pandas as pd
import matplotlib.pyplot as plt
# 1. 加载数据
df = pd.read_json('Electronics_5.json', lines=True)
# 2. 基础统计
print(df.describe())
print(df['overall'].value_counts())
# 3. 评分分布可视化
plt.figure(figsize=(8,4))
df['overall'].value_counts().sort_index().plot(kind='bar')
plt.title('Product Rating Distribution')
plt.xlabel('Rating')
plt.ylabel('Count')
plt.show()
# 4. 评论长度分析
df['review_length'] = df['reviewText'].str.len()
print(df.groupby('overall')['review_length'].mean())
常见问题与解决方案
- 问题 1 :JSON 文件读取报错
-
解决方案:使用
lines=True参数逐行读取 -
问题 2 :内存不足
-
解决方案:分块读取 (
chunksize参数)或使用 Dask 库 -
问题 3 :API 限速
-
解决方案:添加适当的延迟(如
time.sleep(1)) -
问题 4 :文本编码问题
- 解决方案:指定
encoding='utf-8'或尝试其他编码
性能优化建议
- 数据采样:开发阶段使用小样本(如 1% 数据)
- 使用高效数据类型:
- 将字符串转为 category 类型
- 使用
int8/int16替代默认整数类型 - 向量化操作:避免循环,使用 pandas 内置方法
- 并行处理:对大数据使用 multiprocessing
进阶练习建议
尝试分析以下问题并分享你的发现:
- 高评分和低评分产品的评论长度是否有显著差异?
- 某些产品的评分是否随时间呈现趋势性变化?
- 不同产品类别的平均评分对比
你可以将分析结果发布到技术社区,与其他人交流学习心得。数据分析是一个不断实践的过程,多尝试不同的分析角度会有意想不到的收获。
正文完
