京东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}")
二、数据清洗
- 缺失值处理
- 遍历 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 数据库的完整实战过程。在实际应用中,还需要根据具体的业务需求和数据特点进行适当的调整和优化。