如何解析Python API提取的数据并转换为Pandas DataFrame?
将API提取的数据转换为Pandas DataFrame
你的代码已经完成了从API获取字节数据的步骤,接下来可以通过以下步骤将数据转换为实用的Pandas DataFrame:
1. 解析字节数据为JSON结构
该API返回的是JSON格式数据,需要先把读取到的字节数据解码为字符串,再解析成Python字典:
import json # 解码字节数据为UTF-8字符串并解析为JSON对象 data = json.loads(s.decode('utf-8'))
2. 定位有效数据字段
香港统计处的这类API,实际数据通常嵌套在dataset字段下的子节点中。你可以先打印数据结构确认路径:
# 查看顶层键 print(data.keys()) # 进一步查看dataset内部结构 print(data['dataset'].keys())
3. 转换为DataFrame
确认有效数据路径后,直接用Pandas转换。针对这个特定API,数据存放在data['dataset']['data']中:
import pandas as pd df = pd.DataFrame(data['dataset']['data'])
完整整合代码
把所有步骤整合后的完整代码如下:
import urllib.request import json import pandas as pd url_path = "https://www.censtatd.gov.hk/api/get.php?id=660-69001&lang=en¶m=N4KABGBEDGBukC4yghSBJAcgEUWA2uKmgJYB2AJgPoCKAQgErpUDK6kANEcZOdfU1a4uxUpSoAWAKyduqXuIkA2WaKh9JAdlWiF-RswkBOKlIAMpgIymATDZ08Nxh-I0DmAdQAqLsfsEAgj4iuhpSNpa+6uJSAMz2IY4xMomuMSqpflQAUlF6VEqRmdHUUkZFcllKEpY2BTWxeRrVEvUmSoUFSo3F+e5UAGIBTeL9ASwj1EpSXQmVJbQGVAAyk1QAsmuYa-1eAPI7SwDCB3IAukQAviGQAM7wSCjyBniEapAMAIYA7lSWFAAHKgkCgADyoZEg5yuNwBAFMAE4kAD2FDwTzQtwALp8EVi8JAbGYzOZIjCiLw0UhIB0zABaJRGYkVNAAG0+ZAA5gS4ZCQJcgA" with urllib.request.urlopen(url_path) as url: s = url.read() # 解析JSON data = json.loads(s.decode('utf-8')) # 转换为DataFrame df = pd.DataFrame(data['dataset']['data']) # 查看数据前5行 print(df.head())
额外优化提示
如果数据存在多层嵌套,可以用pd.json_normalize()扁平化结构:
df = pd.json_normalize(data['dataset']['data'])
内容的提问来源于stack exchange,提问作者prashanth manohar
相关产品推荐
相关产品推荐

