代码在Jupyter Notebook里运行
一、对全国总数据绘制饼图
1、获取数据
import time
import json
import requests
from datetime import datetime
import pandas as pd
import numpy as np
def catch_data():
url = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5'
reponse = requests.get(url=url).json()
#返回数据字典
data = json.loads(reponse['data'])
return data
data = catch_data()
data.keys()
lastUpdateTime = data['lastUpdateTime']
chinaTotal = data['chinaTotal']
chinaAdd = data['chinaAdd']
print(chinaTotal)
print(chinaAdd)
返回结果:
对总数据进行饼图的绘制:
from pyecharts.charts import Pie
import pyecharts.options as opts
(
Pie(init_opts=opts.InitOpts(width='720px',height='320px'))#默认900,600
.add(series_name='', data_pair=[list(z) for z in zip(chinaTotal.keys(), chinaTotal.values())])#饼图
).render_notebook()
对昨天的数据进行饼图的绘制:
from pyecharts.charts import Pie
import pyecharts.options as opts
(
Pie(init_opts=opts.InitOpts(width='720px',height='320px'))#默认900,600
.add(series_name='', data_pair=[list(z) for z in zip(chinaAdd.keys(), chinaAdd.values())])#饼图
).render_notebook()
二、对全国各地数据进行地图的绘制
1、获取数据
import time
import json
import requests
from datetime import datetime
import pandas as pd
import numpy as np
def catch_data():
url = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5'
reponse = requests.get(url=url).json()
#返回数据字典
data = json.loads(reponse['data'])
return data
data = catch_data()
data.keys()
lastUpdateTime = data['lastUpdateTime']
# 数据明细,数据结构比较复杂,一步一步打印出来看,先明白数据结构
areaTree = data['areaTree']
# 国内数据
china_data = areaTree[0]['children']
china_list = []
for a in range(len(china_data)):
province = china_data[a]['name']
province_list = china_data[a]['children']
for b in range(len(province_list)):
city = province_list[b]['name']
total = province_list[b]['total']
today = province_list[b]['today']
china_dict = {}
china_dict['province'] = province
china_dict['city'] = city
china_dict['total'] = total
china_dict['today'] = today
china_list.append(china_dict)
china_data = pd.DataFrame(china_list)
china_data.head()
2、对数据进行处理
# 定义数据处理函数
def confirm(x):
confirm = eval(str(x))['confirm']
return confirm
def suspect(x):
suspect = eval(str(x))['suspect']
return suspect
def dead(x):
dead = eval(str(x))['dead']
return dead
def heal(x):
heal = eval(str(x))['heal']
return heal
# 函数映射
china_data['confirm'] = china_data['total'].map(confirm)
china_data['suspect'] = china_data['total'].map(suspect)
china_data['dead'] = china_data['total'].map(dead)
china_data['heal'] = china_data['total'].map(heal)
china_data['addconfirm'] = china_data['today'].map(confirm)
china_data['addsuspect'] = china_data['today'].map(suspect)
china_data['adddead'] = china_data['today'].map(dead)
china_data['addheal'] = china_data['today'].map(heal)
china_data = china_data[["province","city","confirm","suspect","dead","heal","addconfirm","addsuspect","adddead","addheal"]]
china_data.head()
3、提取我们需要的数据
area_data = china_data.groupby("province")["confirm"].sum().reset_index()
area_data.columns = ["province","confirm"]
print(area_data )
4、进行地图的绘制
from pyecharts.charts import Map
import pyecharts.options as opts
from pyecharts.globals import ChartType
(
Map()
.add("",[list(z) for z in zip(list(area_data["province"]), list(area_data["confirm"]))], "china",is_map_symbol_show=False)
.set_global_opts(title_opts=opts.TitleOpts(title="2019_nCoV中国疫情地图"),visualmap_opts=opts.VisualMapOpts(is_piecewise=True,
pieces = [
{"min": 1001 , "label": '>1000',"color": "#0000ff"}, #不指定 max,表示 max 为无限大
{"min": 500, "max": 1000, "label": '500-1000',"color": "#1e90ff"},
{"min": 101, "max": 499, "label": '101-499',"color": "#add8e6"},
{"min": 10, "max": 100, "label": '10-100',"color": "#00bfff"},
{"min": 0, "max": 9, "label": '0-9',"color" : "#4169e1" }]))
).render_notebook()
参考博客:https://blog.csdn.net/weixin_43130164/article/details/104113559