当前位置: 首页 > news >正文

京东API数据清洗与结构化存储:从JSON原始数据到MySQL实战

以下是关于京东 API 数据清洗与结构化存储,从 JSON 原始数据到 MySQL 实战的详细步骤:

一、数据获取

通过京东开放平台的 API 接口,使用合适的编程语言(如 Python)向京东服务器发送请求,获取相关商品或业务数据。以 Python 为例,使用 requests 库来发送 HTTP 请求获取 JSON 格式的数据。

import requests

# 京东 API 接口地址
url = "https://api.jd.com/your_api_endpoint"

# 请求参数(根据实际情况设置)
params = {
    "key1": "value1",
    "key2": "value2"
}

# 发送 GET 请求
response = requests.get(url, params=params)

# 检查请求是否成功
if response.status_code == 200:
    data = response.json()
    print(data)
else:
    print(f"请求失败,状态码: {response.status_code}")

二、数据清洗

  1. 缺失值处理
    • 遍历 JSON 数据,检查每个字段是否存在缺失值。如果是数值类型字段,可以使用默认值(如 0)填充;如果是文本类型字段,可以使用空字符串填充。
    • 例如,对于一个包含商品信息的 JSON 数据,其中 “价格” 字段可能存在缺失值:
if "price" not in data:
    data["price"] = 0

 2.数据类型转换

  • 将 JSON 数据中的字段转换为合适的数据类型。例如,将字符串类型的 “销量” 转换为整数类型。
if "sales" in data:
    try:
        data["sales"] = int(data["sales"])
    except ValueError:
        data["sales"] = 0

3.异常值处理

  • 对于明显不合理的数据进行处理。例如,商品价格为负数是不合理的,可以将其修正为 0。
if "price" in data and data["price"] < 0:
    data["price"] = 0

 4.重复数据处理

  • 如果获取的数据中存在重复记录,需要进行去重处理。可以根据唯一标识符(如商品 ID)来判断数据是否重复。
  • 假设 data 是一个包含多个商品信息的列表,每个元素是一个字典:
unique_data = []
seen = set()
for item in data:
    item_id = item.get("id")
    if item_id and item_id not in seen:
        unique_data.append(item)
        seen.add(item_id)

三、数据结构化

根据数据的内容和业务需求,设计 MySQL 数据库的表结构。以商品数据为例,可能需要设计如下表结构:

-- 创建商品表
CREATE TABLE products (
    id INT PRIMARY KEY AUTO_INCREMENT,
    product_id VARCHAR(255) NOT NULL,
    product_name VARCHAR(255),
    price DECIMAL(10, 2),
    sales INT,
    category VARCHAR(255),
    -- 其他字段根据实际情况添加
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

 将清洗后的数据按照设计的表结构进行结构化处理,以便插入到 MySQL 数据库中。

 

import mysql.connector

# 连接 MySQL 数据库
mydb = mysql.connector.connect(
    host="localhost",
    user="your_username",
    password="your_password",
    database="your_database"
)

mycursor = mydb.cursor()

for item in unique_data:
    product_id = item.get("id")
    product_name = item.get("name")
    price = item.get("price")
    sales = item.get("sales")
    category = item.get("category")

    sql = "INSERT INTO products (product_id, product_name, price, sales, category) VALUES (%s, %s, %s, %s, %s)"
    val = (product_id, product_name, price, sales, category)
    mycursor.execute(sql, val)

mydb.commit()
mycursor.close()
mydb.close()

以上就是从京东 API 获取 JSON 原始数据,经过清洗、结构化后存储到 MySQL 数据库的完整实战过程。在实际应用中,还需要根据具体的业务需求和数据特点进行适当的调整和优化。

相关文章:

  • gin-路由handler封装思路
  • upload-labs靶场学习记录2
  • OpenCV图像拼接(2)基于羽化(feathering)技术的图像融合算法拼接类cv::detail::FeatherBlender
  • CVPR2025 | 对抗样本智能安全方向论文汇总 | 持续更新中~
  • 《C++智能指针:建议使用 make_shared 代替 shared_ptr》
  • PostgreSQL 数据库源码编译安装全流程详解 Linux 8
  • SysVinit和Systemd的系统运行级别
  • 探秘 WRF DA:多维度剖析其在气象研究中的卓越效能
  • C++具名转型的功能和用途
  • 奇怪的异形选项卡样式、弧形边框选项卡
  • Go语言中package的使用规则《二》
  • java基础之windows电脑基础命令
  • 【其他】在线安装DataEase后无法远程访问
  • k近邻图(knn-graph)和局部线性嵌入图(LLE-graph)的相似性和区别
  • Python JSON模块loads、load、dump、dumps详解
  • Sql Server 索引性能优化 分析以及分表
  • 【LeetCode】大厂面试算法真题回忆(37)--知识图谱新词挖掘
  • 大数据从入门到入魔系列————探索大数据前世今生之迷
  • Unity | 游戏数据配置
  • SpringBoot整合MQTT最详细版(亲测有效)
  • 年轻人的事业!6家上海人工智能企业畅想“模范生”新征程
  • 万科:一季度营收近380亿元,销售回款率超100%
  • 中国农业国际交流协会会长王守聪失联已逾半年,协会启动罢免
  • 五一假期如何躺赚利息?来看国债逆回购操作攻略
  • 商务部:一季度我国服务贸易较快增长,进出口总额同比增8.7%
  • 新华每日电讯:从上海街区经济看账面、市面、人面、基本面