You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python处理API-Football返回JSON数据:转换为DataFrame、数据提取与导出求助

Python处理API-Football返回JSON数据:转换为DataFrame、数据提取与导出求助

嘿,作为Python新手遇到这种从API拿数据后转成可分析格式的问题太正常了,我来一步步带你搞定!

第一步:把JSON字符串转成Python可操作的字典

你现在拿到的response.text是纯字符串格式的JSON,其实requests库自带了更便捷的方法直接转成Python字典,不用自己手动解析:

import requests
import pandas as pd  # 必须导入pandas,这是处理表格数据的核心工具

# 保留你的原有请求代码
url = "https://api-football-v1.p.rapidapi.com/v2/leagues"
headers = {
    'x-rapidapi-host': "api-football-v1.p.rapidapi.com",
    'x-rapidapi-key': "YOUR-API-KEY"  # 记得替换成你自己的真实API密钥
}
# 简化请求写法,用requests.get就足够了
response = requests.get(url, headers=headers)

# 把响应直接转成Python字典
data_dict = response.json()

API-Football的返回结构通常是外层有api字段,里面包含results(数据总数)和leagues(具体的联赛数据列表)。你可以先打印data_dict.keys()或者print(data_dict['api'])来确认数据的层级结构,找到你需要的核心数据所在的位置。

第二步:将字典列表转换成DataFrame

找到包含联赛数据的列表后,直接用pandas的DataFrame()方法就能生成直观的表格:

# 假设核心数据在data_dict['api']['leagues']里,先确认一下哦
leagues_df = pd.DataFrame(data_dict['api']['leagues'])

# 打印前5行看看转换效果
print(leagues_df.head())

现在你就拥有了一个标准的DataFrame,可以像操作Excel表格一样对它进行各种分析了!

第三步:数据筛选与字段提取

接下来解决你提到的两个具体需求:按赛季时间窗口筛选,以及提取特定字段。

1. 按赛季开始时间范围筛选

首先得把season_start字段转换成日期类型,这样才能进行时间范围的判断:

# 将字符串格式的日期转成pandas可识别的日期类型
leagues_df['season_start'] = pd.to_datetime(leagues_df['season_start'])

# 筛选赛季开始时间在2023年1月1日到2024年1月1日之间的数据
filtered_df = leagues_df[(leagues_df['season_start'] >= '2023-01-01') & (leagues_df['season_start'] <= '2024-01-01')]

2. 提取特定字段(比如国家和联赛相关信息)

直接用你需要的列名列表来提取即可:

# 选择你需要的列,比如国家、联赛名称、赛季、赛季开始时间
selected_df = filtered_df[['country', 'name', 'season', 'season_start']]
print(selected_df.head())

第四步:导出为CSV文件

最后把处理好的DataFrame导出成CSV文件,方便后续用其他工具分析:

# index=False表示不把DataFrame的索引列导出到CSV中
selected_df.to_csv('filtered_football_leagues.csv', index=False)

小技巧

如果对JSON的层级结构不太清楚,可以用import pprint然后pprint.pprint(data_dict)来格式化打印数据,这样能更清晰地看到每个字段的位置,避免找错数据路径。

备注:内容来源于stack exchange,提问作者QuantumGorilla

火山引擎 最新活动