我目前正在学习python(使用pandas)来处理数据分析。我在DataCamp上做了一些课程,并试图将我学到的知识应用到一个实际问题中:我想监测加拿大的新冠病毒-19病例
为此,我从Apify API获取数据,该API返回一个json,然后创建一个数据帧。数据帧结构如下所示:
<class 'pandas.core.frame.DataFrame'>
Int64Index: 57 entries, 0 to 56
Data columns (total 9 columns):
infected 57 non-null float64
deceased 57 non-null float64
infectedByRegion 57 non-null object
measureDate 57 non-null object
measureTime 57 non-null object
感染和死亡列包含加拿大的总数
在infectedByRegion列中,每行都有一个字典列表,如下所示:
[{'region': 'Canada', 'infectedCount': '6258', 'deceasedCount': '61'},
{'region': 'Newfoundland and Labrador',
'infectedCount': '135',
'deceasedCount': '0'},
{'region': 'Prince Edward Island',
'infectedCount': '11',
'deceasedCount': '0'},
{'region': 'Nova Scotia', 'infectedCount': '122', 'deceasedCount': '0'},
{'region': 'New Brunswick', 'infectedCount': '66', 'deceasedCount': '0'},
{'region': 'Quebec', 'infectedCount': '2840', 'deceasedCount': '22'},
{'region': 'Ontario', 'infectedCount': '1355', 'deceasedCount': '19'},
{'region': 'Manitoba', 'infectedCount': '72', 'deceasedCount': '1'},
{'region': 'Saskatchewan', 'infectedCount': '134', 'deceasedCount': '0'},
{'region': 'Alberta', 'infectedCount': '621', 'deceasedCount': '2'},
{'region': 'British Columbia', 'infectedCount': '884', 'deceasedCount': '17'},
{'region': 'Yukon', 'infectedCount': '4', 'deceasedCount': '0'},
{'region': 'Northwest Territories',
'infectedCount': '1',
'deceasedCount': '0'},
{'region': 'Nunavut', 'infectedCount': '0', 'deceasedCount': '0'},
{'region': 'Repatriated travellers',
'infectedCount': '13',
'deceasedCount': '0'}]
我试图在数据框的末尾为每个地区的感染和死亡人数创建列。例如:
... measureTime Quebec_infectedCount Quebec_deceasedCount Ontario_infectedCount ...
... 22:30:15 2840 22 1355 ...
我尝试使用json_normalize函数,但它给我带来了一个错误:
AttributeError: 'list' object has no attribute 'values'
然后我尝试在这里查看stackoverflow,发现了以下链接:
Python: json_normalize a pandas series gives TypeError
这对我来说不起作用,因为它只创建了一个名为region的列,在数据帧末尾的每一行中只包含“Canada”作为一个值
... measureDate measureTime region
... 2020-03-29 22:30:15 Canada
... 2020-03-30 22:30:15 Canada
有没有人能帮我或者给我指一个合适的帖子,帮助我解决问题?由于我还是一个初学者,我试着搜索了几个小时,但我想我甚至不知道如何准确地界定我的问题,但我真的想学习如何处理这种情况
提前谢谢
infectedByRegion
)是字典列表infectedByRegion
的目录列表代表性数据帧
explode
将目录列表分成单独的行infectedByRegion
列在数据帧中是类型list
还是str
,因此可能需要修复将字典键转换为列
转向所需的格式
您可以使用已有的列表创建数据帧
让我们添加日期和时间,并将日期、时间和区域设置为索引
接下来,我们将索引中的region level=2取消堆叠到列,交换级别,并对列进行排序
这里印的不好
相关问题 更多 >
编程相关推荐