如何用Pandas规范化并按震级分组爬取的政府地震数据
地震数据按震级分组实现方案
我们可以新增一个分组函数,将地震数据按指定震级标准归类,直接整合到现有采集程序中。以下是完整实现代码:
import json import urllib.request # 采集地震数据 handle = urllib.request.urlopen("https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/4.5_month.geojson") rawdata = handle.read() data = json.loads(rawdata) def get_earthquake_magnitude(json_data): results = [] for eq in json_data['features']: mag = eq['properties']['mag'] results.append(mag) return results def group_earthquakes_by_magnitude(json_data): # 初始化分组容器,每个组存储对应地震的完整数据 groups = { "轻度": [], "中度": [], "重大": [], "强烈": [] } for eq in json_data['features']: mag = eq['properties']['mag'] # 处理可能的空值情况 if mag is None: continue # 根据震级判断分组 if 4.5 <= mag <= 4.9: groups["轻度"].append(eq) elif 5 <= mag <= 5.9: groups["中度"].append(eq) elif 6 <= mag <= 6.9: groups["重大"].append(eq) elif mag >= 7: groups["强烈"].append(eq) return groups # 调用示例:获取分组后的数据 grouped_data = group_earthquakes_by_magnitude(data) # 按需输出每个组的地震数量或详情 print(f"轻度地震数量: {len(grouped_data['轻度'])}") print(f"中度地震数量: {len(grouped_data['中度'])}") print(f"重大地震数量: {len(grouped_data['重大'])}") print(f"强烈地震数量: {len(grouped_data['强烈'])}")
代码说明
group_earthquakes_by_magnitude函数负责核心分组逻辑:- 创建对应四个级别的字典,用于存储每个组的地震完整数据(若仅需震级,可修改为存储
mag而非eq) - 遍历所有地震条目,提取震级后按区间判断归属
- 增加震级空值处理,避免程序报错
- 创建对应四个级别的字典,用于存储每个组的地震完整数据(若仅需震级,可修改为存储
- 整合后可直接调用分组函数,获取结构化的分组结果,方便后续展示或分析
内容的提问来源于stack exchange,提问作者vikwillberg
相关产品推荐
相关产品推荐

