使用Pandas实现COVID-19疫情数据查询及函数参数异常问题排查
问题原因
Python不支持函数重载,你连续定义了三个同名的get_covid_data函数,后定义的会完全覆盖先定义的内容,所以最终只有最后一个对应Recovered类型的函数生效,不管传入什么参数都只会返回康复相关数据。
解决方案
只需保留一个函数,通过参数动态匹配对应的数据集字段即可,正确实现代码如下:
import pandas as pd # 提前加载数据集(建议首次加载后缓存,避免重复请求) dataset = pd.read_csv("http://raw.githubusercontent.com/ec-jrc/COVID-19/master/data-of-world/jrc-covid-19-all-days-of-world.csv") def get_covid_data(country, datafield = "Deceased"): """Returns the selected data for the specified country. 参数: country (str) - 选中的国家名称,示例:'Hungary' datafield (str) - 可选值为'Deceased'(默认)、'Positive'、'Recovered' 返回值: 元组 (cumulative, last_day),分别为累计病例数、最新一日新增病例数 """ # 入参和数据集列名的映射关系 field_map = { "Deceased": "CumulativeDeceased", "Positive": "CumulativePositive", "Recovered": "CumulativeRecovered" } # 非法参数校验 if datafield not in field_map: raise ValueError(f"datafield仅支持可选值:{list(field_map.keys())}") # 筛选对应国家对应字段的时序数据 country_data = dataset.loc[dataset.CountryName == country, field_map[datafield]] # 计算累计值和最新日新增 cumulative = country_data.max() last_day = country_data.diff().iloc[-1] return int(cumulative), int(last_day)
调用测试
# 测试获取意大利的阳性数据 print(get_covid_data("Italy","Positive")) # 测试获取匈牙利的康复数据,和官方示例输出对齐 print(get_covid_data('Hungary', 'Recovered'))
内容的提问来源于stack exchange,提问作者VMelcsi
相关产品推荐
相关产品推荐

