如何使用 Python 对采集到的京东商品详情数据进行分析?

知名用户180079054734个月前未分类254
你想知道如何用 Python 对采集到的京东商品详情数据做分析,我会用「简洁步骤 + 核心方法 + 实用案例」的形式,从数据预处理→多维度分析→可视化输出 展开,聚焦新手易上手、实用性强的分析思路,覆盖价格、销量、库存等核心维度。

一、核心前提

  1. 数据准备:采集到的京东商品数据(建议整理为 CSV/JSON 格式,包含字段:商品 ID、标题、品牌、价格、销量、库存状态、店铺名称等);

  2. 依赖安装:只需 2 个核心库,新手友好:

pip install pandas matplotlib  # pandas处理数据,matplotlib可视化

二、核心分析流程(4 步)

步骤 1:数据预处理(基础且关键)

目的:清洗脏数据、统一格式,避免分析出错。
import pandas as pd

# 1. 读取采集的数据(以CSV为例,JSON可先用pd.read_json()读取)
df = pd.read_csv("jd_item_data.csv", encoding="utf-8-sig")

# 2. 基础清洗:删除空行、去重、统一字段格式
df = df.dropna(subset=["商品ID", "价格"])  # 删除核心字段为空的行
df = df.drop_duplicates(subset=["商品ID"])  # 按商品ID去重
df["价格"] = df["价格"].astype(float)  # 价格转为浮点数(便于计算)

# 3. 处理非标准字段(如销量"10万+"转为数值)
def parse_sales(sales_str):
    if pd.isna(sales_str) or sales_str == "暂无数据":
        return 0
    sales_str = str(sales_str).replace("+", "").replace("万", "0000")
    try:
        return int(float(sales_str))
    except:
        return 0

df["销量数值"] = df["销量"].apply(parse_sales)  # 新增销量数值列,便于分析

步骤 2:核心维度分析(实用且高频)

基于预处理后的数据,做 4 个核心维度分析,覆盖竞品 / 选品核心需求:
# ========== 1. 价格分析 ==========
print("=== 价格分析 ===")
print(f"平均价格:{df['价格'].mean():.2f}元")
print(f"价格中位数:{df['价格'].median():.2f}元")
print(f"价格最低:{df.loc[df['价格'].idxmin(), '商品名称']}({df['价格'].min()}元)")
print(f"价格最高:{df.loc[df['价格'].idxmax(), '商品名称']}({df['价格'].max()}元)")

# ========== 2. 品牌分析(按品牌分组) ==========
print("\n=== 品牌分析 ===")
brand_group = df.groupby("品牌")
# 各品牌商品数量
brand_count = brand_group["商品ID"].count().sort_values(ascending=False)
print("各品牌商品数量:\n", brand_count)
# 各品牌平均价格
brand_avg_price = brand_group["价格"].mean().sort_values(ascending=False)
print("各品牌平均价格:\n", brand_avg_price)

# ========== 3. 销量分析 ==========
print("\n=== 销量分析 ===")
# 销量TOP5商品
top5_sales = df.sort_values("销量数值", ascending=False).head(5)[["商品名称", "品牌", "销量数值"]]
print("销量TOP5商品:\n", top5_sales)
# 有货/无货商品数量
stock_count = df["库存状态"].value_counts()
print("库存状态分布:\n", stock_count)

# ========== 4. 价格-销量相关性分析 ==========
print("\n=== 价格-销量相关性 ===")
# 计算价格与销量的相关系数(-1~1,负数表示价格越低销量越高)
corr = df["价格"].corr(df["销量数值"])
print(f"价格与销量相关系数:{corr:.2f}")
if corr < -0.3:
    print("结论:价格越低,销量越高(强负相关)")
elif corr > 0.3:
    print("结论:价格越高,销量越高(强正相关)")
else:
    print("结论:价格与销量无明显相关性")

步骤 3:可视化分析(直观易懂)

把分析结果转为图表,比纯文字更易解读:
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"]  # 解决中文显示问题
plt.rcParams["axes.unicode_minus"] = False

# 1. 品牌价格对比(柱状图)
plt.figure(figsize=(10, 6))
brand_avg_price.plot(kind="bar", color="skyblue")
plt.title("各品牌平均价格对比")
plt.xlabel("品牌")
plt.ylabel("平均价格(元)")
plt.xticks(rotation=45)
plt.tight_layout()
plt.savefig("品牌价格对比.png", dpi=300)

# 2. 销量TOP5商品(横向柱状图)
plt.figure(figsize=(10, 6))
top5_sales.plot(kind="barh", x="商品名称", y="销量数值", color="orange")
plt.title("销量TOP5商品")
plt.xlabel("销量")
plt.ylabel("商品名称")
plt.tight_layout()
plt.savefig("销量TOP5.png", dpi=300)

# 3. 价格分布(直方图)
plt.figure(figsize=(10, 6))
plt.hist(df["价格"], bins=10, color="green", alpha=0.7)
plt.title("商品价格分布")
plt.xlabel("价格(元)")
plt.ylabel("商品数量")
plt.tight_layout()
plt.savefig("价格分布.png", dpi=300)

步骤 4:生成分析报告(汇总结果)

把分析结论整理为结构化报告,便于落地使用:
# 生成文字版分析报告
report = f"""
# 京东商品详情数据分析报告
## 数据概况
- 分析商品总数:{len(df)}个
- 涉及品牌数:{df['品牌'].nunique()}个
- 价格区间:{df['价格'].min()}元 ~ {df['价格'].max()}元
- 平均价格:{df['价格'].mean():.2f}元

## 核心结论
1. 价格分析:{df.loc[df['价格'].idxmin(), '品牌']}品牌价格最低({df['价格'].min()}元),{df.loc[df['价格'].idxmax(), '品牌']}品牌价格最高({df['价格'].max()}元);
2. 销量分析:销量最高的商品为{df.loc[df['销量数值'].idxmax(), '商品名称']}({df['销量数值'].max()}件);
3. 库存分析:有货商品{stock_count.get('有货', 0)}个,无货商品{stock_count.get('无货', 0)}个;
4. 相关性:价格与销量相关系数为{corr:.2f},{('价格越低销量越高' if corr < -0.3 else '价格越高销量越高' if corr > 0.3 else '无明显相关性')}。
"""

# 保存报告到文件
with open("商品分析报告.md", "w", encoding="utf-8") as f:
    f.write(report)
print("✅ 分析报告已保存为 商品分析报告.md")

三、核心注意点(避坑)

  1. 数据格式统一:价格、销量等字段必须转为数值类型才能计算,否则会出现「字符串比较错误」;

  2. 缺失值处理:用dropna()删除核心字段为空的数据,或用fillna()填充(如销量缺失填 0);

  3. 中文显示:必须设置plt.rcParams解决 matplotlib 中文乱码,否则图表会显示方块;

  4. 分析维度扩展:可新增「好评率分析」「店铺销量排行」「价格波动分析(历史数据)」等,只需基于现有代码新增分组 / 计算逻辑。

总结

  1. 核心逻辑:先通过 pandas 清洗数据(统一格式、处理脏数据)→ 再做分组 / 统计分析(价格、销量、品牌)→ 用 matplotlib 可视化 → 最后汇总为结构化报告;

  2. 关键操作:价格 / 销量的类型转换、品牌分组统计、相关性计算是核心;

  3. 实用性:这套流程适配新手,覆盖选品 / 竞品分析的核心需求,可直接套用在自己采集的数据上。


相关文章

淘宝 API 上货 / 商品搬家 业务场景实现 + JSON 返回示例

(简单直白、程序员直接可用)一、业务场景说明淘宝 API 上货 / 搬家 = 自动把商品从其他平台(1688、拼多多、抖音、淘宝其他店铺)搬到淘宝店不用人工复制标题、图片、详情、SKU,全自动上架。能...

确保京东商品详情API返回数据准确性和及时性的方法

前言核心:通过规范调用、数据校验、合理缓存和实时监控,双管齐下保障数据准确、及时,适配电商数据分析、库存监控等核心业务场景。一、确保数据准确性(核心4点)规范API调用,避免参数错误:调用jd.ite...

日本乐天商品详情API接口在海外仓系统中的应用与对接

日本乐天商品详情 API 在海外仓系统中的应用与对接日本乐天商品详情 API(IchibaItem/Item)是海外仓系统对接乐天平台的核心数据入口,能够为库存管理、订单履约、选品备货、成本核算四大核...

1688商品详情API返回的JSON数据

1688商品详情API返回的JSON数据结构复杂且信息丰富,通常包含以下核心字段和层级:一、顶层结构json{  "request_id": &quo...

如何获取京东商品详情API的AppKey、AppSecret、AccessToken?

获取京东商品详情 API 的 AppKey、AppSecret、AccessToken 分三大步:注册开发者 → 创建应用 → 申请权限 → 获取 Token。下面是完整、可落地的官方流程(2026...

如何保障电商商品详情数据采集的API接口系列的性能稳定?

保障电商商品详情数据采集 API 接口系列的性能稳定,需围绕「高并发承载、低延迟响应、故障隔离、容错兜底」四大核心目标,从「架构设计、技术优化、运维监控」三维度构建全链路保障体系。以下是可落地的系统性...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。