如何将API返回的JSON数据转换为DataFrame进行处理?
转换REE API JSON为DataFrame的方法
你的API返回的JSON是嵌套结构,包含多个电力平衡相关的时间序列指标。要转换成可用的DataFrame,需要先拆解嵌套的数值列表,再整合数据:
步骤1:拆解嵌套数据并整理成统一格式
import requests import pandas as pd url = "https://apidatos.ree.es/es/datos/balance/balance-electrico?start_date=2019-01-01T00:00&end_date=2019-01-31T23:59&time_trunc=day" response = requests.get(url, headers={"Authorization": "Bearer "}) data = response.json() # 初始化列表存储所有指标数据 all_records = [] # 遍历每个指标条目 for metric_item in data["data"]: metric_name = metric_item["attributes"]["title"] # 提取该指标下的所有日期-数值对 for value_entry in metric_item["attributes"]["values"]: # 为每条记录添加指标名称,方便后续分组 all_records.append({ "datetime": value_entry["datetime"], "metric": metric_name, "value": value_entry["value"] }) # 转换为DataFrame df = pd.DataFrame(all_records)
步骤2:优化数据格式(可选)
将日期字符串转为时间类型,并可将长表转为宽表(日期为索引,指标为列),更便于分析:
# 转换datetime列为时间类型 df["datetime"] = pd.to_datetime(df["datetime"]) # 转成宽表格式 wide_df = df.pivot(index="datetime", columns="metric", values="value")
处理后,df是长表格式(适合按指标分组分析),wide_df是宽表格式(适合查看同一日期下各指标的数值对比)。
内容的提问来源于stack exchange,提问作者Bruno
相关产品推荐
相关产品推荐

