前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于新型肺炎数据分析和可视化系列笔记二-获取各省历史数据

关于新型肺炎数据分析和可视化系列笔记二-获取各省历史数据

作者头像
python与大数据分析
发布2022-03-11 14:20:23
2510
发布2022-03-11 14:20:23
举报

新找到关于各省各地市的日历史数据接口,为了避免不必要的麻烦,把对方的接口地址已屏蔽,下载的历史数据也仅供学习和参考;现在的所有数据已收集完成。

接下来是关于可视化部分,可视化有几种方式,第一种是matplotlib和basemap,但basemap的包一直无法下载,第二种是geopandas,但GDAL的包一个是无法下载,一个是无法兼容,第三种是pyecharts,这个比较简单,但无法完成数据的自动化播放。

主要学习点在于一个是基于各省份信息的列表化转换,另外一个是对日期取值和循环遍历的学习。为了学习可视化的数据结构,又着手温习了一下列表转字典,基于列表排序,基于字典排序的,获取最大值获取第二大值的知识。

请大家认准国家卫健委发布的权威数据,不私自传播疫情相关信息,相信权威媒体的专业发布,不造谣不传谣不信谣!只要万众一心,灾难一定会过去的!

代码如下:

代码语言:javascript
复制
'''
{
    'ret': 200,
    'data': {
        'items': [{
            'id': 15780,
            'country': '中国',
            'area': '湖北',
            'city': '武汉',
            'confirm': 5142,
            'suspect': 0,
            'dead': 265,
            'heal': 224,
            'create_time': '2020-02-03'
        }, {}
'''
from datetime import date,datetime,timedelta
from urllib.parse import quote
import string
# 初始化各省列表
provstr='湖北|广东|浙江|河南|湖南|安徽|江西|重庆|江苏|山东|四川|黑龙江|北京|上海|福建|陕西|广西|河北|云南|海南|山西|辽宁|天津|贵州|甘肃|吉林|内蒙古|宁夏|新疆|香港|青海|台湾|澳门|西藏'
provlist=provstr.split('|')
# 初始化开始日期和截止日期,并生成日期列表
delta =timedelta(days=1)
start_date=date(2020, 2, 1)
end_date=datetime.date(datetime.now())-delta
days=(end_date-start_date).days
datelist=[str(start_date+timedelta(i)) for i in range(days+1)]
# 初始化省日历史数据
provincedatahistory=[]
# 打开相关链接,获取json数据,并加入省日历史数据列表中
for city in provlist:
    for day in datelist:
        url='https://api.com/?area={}&date_start={}&date_end={}'.format(city,day,day)
        url = quote(url, safe=string.printable)
        data=json.loads(urllib.request.urlopen(url).read())
        for data in data['data']['items']:
            provincedatahistory.append(data)
# provincedatahistory
# [{'id': 774, 'country': '中国', 'area': '湖北', 'city': '武汉', 'confirm': 3215, 'suspect': 0, 'dead': 192, 'heal': 106, 'create_time': '2020-02-01'},
#  {'id': 775, 'country': '中国', 'area': '湖北', 'city': '黄冈', 'confirm': 726, 'suspect': 0, 'dead': 14, 'heal': 17, 'create_time': '2020-02-01'},
#  {'id': 776, 'country': '中国', 'area': '湖北', 'city': '孝感', 'confirm': 628, 'suspect': 0, 'dead': 12, 'heal': 2, 'create_time': '2020-02-01'},
#  {'id': 777, 'country': '中国', 'area': '湖北', 'city': '襄阳', 'confirm': 347, 'suspect': 0, 'dead': 0, 'heal': 0, 'create_time': '2020-02-01'}

关于列表转字典,基于列表排序,基于字典排序的,获取最大值获取第二大值的相关代码

代码如下:

代码语言:javascript
复制
import operator
# 原始数据

hn_data = [['海口市', 1320], ['三亚市', 59], ['儋州市', 79], ['琼海市', 48], ['文昌市', 108], ['定安县', 105], ['五指山市', 51],['昌江黎族自治县',12]]

# list转字典
data1=list(row[1] for row in hn_data)
# [132, 59, 79, 48, 108, 105, 51]
data2=list(row[0] for row in hn_data)
# ['海口市', '三亚市', '儋州市', '琼海市', '文昌市', '定安县', '五指山市']
dict1=dict(zip(data2,data1))
# {'海口市': 132, '三亚市': 59, '儋州市': 79, '琼海市': 48, '文昌市': 108, '定安县': 105, '五指山市': 51}

value1 = sorted(dict1.values())
#[48, 51, 59, 79, 105, 108, 132]
# 求最大值
max_data=(max((row[1] for row in hn_data)))
# 求第二大值
print(value1[-2])
#直接从获取第二列list然后排序
value1=sorted([row[1] for row in hn_data],reverse=True)
print(value1[1])

value2 = sorted(dict1.items(), key=lambda y: y[1])
# [('琼海市', 48), ('五指山市', 51), ('三亚市', 59), ('儋州市', 79), ('定安县', 105), ('文昌市', 108), ('海口市', 132)]
value3 = sorted(dict1.items(), key=operator.itemgetter(1))
# [('琼海市', 48), ('五指山市', 51), ('三亚市', 59), ('儋州市', 79), ('定安县', 105), ('文昌市', 108), ('海口市', 132)]

value4 = sorted(hn_data, key=lambda y: y[1])
# [['琼海市', 48], ['五指山市', 51], ['三亚市', 59], ['儋州市', 79], ['定安县', 105], ['文昌市', 108], ['海口市', 132]]
value5 = sorted(hn_data, key=operator.itemgetter(1))
# [['琼海市', 48], ['五指山市', 51], ['三亚市', 59], ['儋州市', 79], ['定安县', 105], ['文昌市', 108], ['海口市', 132]]
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python与大数据分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 请大家认准国家卫健委发布的权威数据,不私自传播疫情相关信息,相信权威媒体的专业发布,不造谣不传谣不信谣!只要万众一心,灾难一定会过去的!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档