疫情数据简析,可视化呈现

本文通过Python的PyEcharts库,利用从'新型冠状病毒肺炎疫情地图.xlsx'数据,分别绘制了现有病例、新增病例、累计病例和治愈病例的中国地图,并整合成轮播图。通过不同颜色区分不同数量级的疫情数据,动态展示了疫情分布情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

最近疫情出现新状况,作为一个中国人民怎么能不关注,作此数据处理时才发现已经这么严重了,不过我们可以永远相信自己的国家,风云终会消散。


提示:以下是本篇文章正文内容,下面案例可供参考

1.引入库

代码如下(示例):

from pyecharts import options as opts
from pyecharts.charts import Map, Timeline
import pandas as pd
import numpy as np

2.读入数据

data = pd.read_excel('新型冠状病毒肺炎疫情地图.xlsx', index_col=None)
print(data.head())

数据

3.提取需要数据

这里我将每一列疫情数据与地区结合为一个个列表

# 然后转化为list形式
xy_data_list = np.array(data[['地区', '现有']]).tolist()
xz_data_list = np.array(data[['地区', '新增']]).tolist()
lj_data_list = np.array(data[['地区', '累计']]).tolist()
zy_data_list = np.array(data[['地区', '治愈']]).tolist()

列表

4.绘制中国地图,添加数据

使用pyecharts库绘制中国地图,然后调节对应参数,这里就步详讲了,调参就要一步一步慢慢试。

def map_china() -> Map:
    map1 = (
        Map()
        .add(series_name="现有病例", data_pair=xy_data_list, maptype="china", zoom=1, center=[105, 38])
        .set_global_opts(
            title_opts=opts.TitleOpts(title="疫情地图:现有病例"),
            visualmap_opts=opts.VisualMapOpts(max_=9999, is_piecewise=True,
            pieces=[{"max": 9, "min": 0, "label": "0-9", "color": "#FFE4E1"},
                    {"max": 99, "min": 10, "label": "10-99","color": "#FF7F50"},
                    {"max": 499, "min": 100, "label": "100-499","color":"#F08080"},
                                    {"max": 999, "min": 500, "label": "500-999","color":"#CD5C5C"},
                                    {"max": 9999, "min": 1000, "label": ">=1000", "color":"#8B0000"}]
                                             )
        )
    )
    map2 = (
        Map()
            .add(series_name="新增病例", data_pair=xz_data_list, maptype="china", zoom=1, center=[105, 38])
            .set_global_opts(
            title_opts=opts.TitleOpts(title="疫情地图:新增病例"),
            visualmap_opts=opts.VisualMapOpts(max_=9999, is_piecewise=True,
                                              pieces=[{"max": 9, "min": 0, "label": "0-9", "color": "#FFE4E1"},
                                                      {"max": 99, "min": 10, "label": "10-99", "color": "#FF7F50"},
                                                      {"max": 499, "min": 100, "label": "100-499", "color": "#F08080"},
                                                      {"max": 999, "min": 500, "label": "500-999", "color": "#CD5C5C"},
                                                      {"max": 9999, "min": 1000, "label": ">=1000", "color": "#8B0000"}]
                                              )
        )
    )
    map3 = (
        Map()
            .add(series_name="累计病例", data_pair=lj_data_list, maptype="china", zoom=1, center=[105, 38])
            .set_global_opts(
            title_opts=opts.TitleOpts(title="疫情地图:累计病例"),
            visualmap_opts=opts.VisualMapOpts(max_=9999, is_piecewise=True,
                                              pieces=[{"max": 9, "min": 0, "label": "0-9", "color": "#FFE4E1"},
                                                      {"max": 99, "min": 10, "label": "10-99", "color": "#FF7F50"},
                                                      {"max": 499, "min": 100, "label": "100-499", "color": "#F08080"},
                                                      {"max": 999, "min": 500, "label": "500-999", "color": "#CD5C5C"},
                                                      {"max": 9999, "min": 1000, "label": ">=1000", "color": "#8B0000"}]
                                              )
        )
    )
    map4 = (
        Map()
            .add(series_name="治愈病例", data_pair=zy_data_list, maptype="china", zoom=1, center=[105, 38])
            .set_global_opts(
            title_opts=opts.TitleOpts(title="疫情地图:治愈病例"),
            visualmap_opts=opts.VisualMapOpts(max_=9999, is_piecewise=True,
                                              pieces=[{"max": 9, "min": 0, "label": "0-9", "color": "#FFE4E1"},
                                                      {"max": 99, "min": 10, "label": "10-99", "color": "#FF7F50"},
                                                      {"max": 499, "min": 100, "label": "100-499", "color": "#F08080"},
                                                      {"max": 999, "min": 500, "label": "500-999", "color": "#CD5C5C"},
                                                      {"max": 9999, "min": 1000, "label": ">=1000", "color": "#8B0000"}]
                                              )
        )
    )

每个列表做一个图,然后为了方便,渲染成了轮播图如下步

5.渲染轮播图

如下:设置需要参数,最终呈现:

#  创建组合类对象
    timeline = Timeline(init_opts=opts.InitOpts(width='1028px', height='600px'))
    # 在组合对象中添加需要组合的图表对象

    timeline.add(chart=map1, time_point="现有病例疫情图")
    timeline.add(chart=map2, time_point="新增病例疫情图")
    timeline.add(chart=map3, time_point="累计病例疫情图")
    timeline.add(chart=map4, time_point="治愈病例疫情图")
    timeline.add_schema(is_auto_play=True, play_interval=2000)
    # 渲染数据
    timeline.render('疫情轮播图.html')

效果如下:
动图效果无法展示
轮播

总结

以上就是今天要讲的内容,本文仅仅简单制作了今天疫情数据简析用,而pandas,pyechart提供了大量能使我们快速便捷地处理数据的函数和方法,还有更多更好的需要学习呢。

完整代码

from pyecharts import options as opts
from pyecharts.charts import Map, Timeline
import pandas as pd
import numpy as np


data = pd.read_excel('新型冠状病毒肺炎疫情地图.xlsx', index_col=None)
print(data.head())
# 然后转化为list形式
xy_data_list = np.array(data[['地区', '现有']]).tolist()
xz_data_list = np.array(data[['地区', '新增']]).tolist()
lj_data_list = np.array(data[['地区', '累计']]).tolist()
zy_data_list = np.array(data[['地区', '治愈']]).tolist()
print(xy_data_list)


def map_china() -> Map:
    map1 = (
        Map()
        .add(series_name="现有病例", data_pair=xy_data_list, maptype="china", zoom=1, center=[105, 38])
        .set_global_opts(
            title_opts=opts.TitleOpts(title="疫情地图:现有病例"),
            visualmap_opts=opts.VisualMapOpts(max_=9999, is_piecewise=True,
            pieces=[{"max": 9, "min": 0, "label": "0-9", "color": "#FFE4E1"},
                    {"max": 99, "min": 10, "label": "10-99","color": "#FF7F50"},
                    {"max": 499, "min": 100, "label": "100-499","color":"#F08080"},
                                    {"max": 999, "min": 500, "label": "500-999","color":"#CD5C5C"},
                                    {"max": 9999, "min": 1000, "label": ">=1000", "color":"#8B0000"}]
                                             )
        )
    )
    map2 = (
        Map()
            .add(series_name="新增病例", data_pair=xz_data_list, maptype="china", zoom=1, center=[105, 38])
            .set_global_opts(
            title_opts=opts.TitleOpts(title="疫情地图:新增病例"),
            visualmap_opts=opts.VisualMapOpts(max_=9999, is_piecewise=True,
                                              pieces=[{"max": 9, "min": 0, "label": "0-9", "color": "#FFE4E1"},
                                                      {"max": 99, "min": 10, "label": "10-99", "color": "#FF7F50"},
                                                      {"max": 499, "min": 100, "label": "100-499", "color": "#F08080"},
                                                      {"max": 999, "min": 500, "label": "500-999", "color": "#CD5C5C"},
                                                      {"max": 9999, "min": 1000, "label": ">=1000", "color": "#8B0000"}]
                                              )
        )
    )
    map3 = (
        Map()
            .add(series_name="累计病例", data_pair=lj_data_list, maptype="china", zoom=1, center=[105, 38])
            .set_global_opts(
            title_opts=opts.TitleOpts(title="疫情地图:累计病例"),
            visualmap_opts=opts.VisualMapOpts(max_=9999, is_piecewise=True,
                                              pieces=[{"max": 9, "min": 0, "label": "0-9", "color": "#FFE4E1"},
                                                      {"max": 99, "min": 10, "label": "10-99", "color": "#FF7F50"},
                                                      {"max": 499, "min": 100, "label": "100-499", "color": "#F08080"},
                                                      {"max": 999, "min": 500, "label": "500-999", "color": "#CD5C5C"},
                                                      {"max": 9999, "min": 1000, "label": ">=1000", "color": "#8B0000"}]
                                              )
        )
    )
    map4 = (
        Map()
            .add(series_name="治愈病例", data_pair=zy_data_list, maptype="china", zoom=1, center=[105, 38])
            .set_global_opts(
            title_opts=opts.TitleOpts(title="疫情地图:治愈病例"),
            visualmap_opts=opts.VisualMapOpts(max_=9999, is_piecewise=True,
                                              pieces=[{"max": 9, "min": 0, "label": "0-9", "color": "#FFE4E1"},
                                                      {"max": 99, "min": 10, "label": "10-99", "color": "#FF7F50"},
                                                      {"max": 499, "min": 100, "label": "100-499", "color": "#F08080"},
                                                      {"max": 999, "min": 500, "label": "500-999", "color": "#CD5C5C"},
                                                      {"max": 9999, "min": 1000, "label": ">=1000", "color": "#8B0000"}]
                                              )
        )
    )
    #  创建组合类对象
    timeline = Timeline(init_opts=opts.InitOpts(width='1028px', height='600px'))
    # 在组合对象中添加需要组合的图表对象

    timeline.add(chart=map1, time_point="现有病例疫情图")
    timeline.add(chart=map2, time_point="新增病例疫情图")
    timeline.add(chart=map3, time_point="累计病例疫情图")
    timeline.add(chart=map4, time_point="治愈病例疫情图")
    timeline.add_schema(is_auto_play=True, play_interval=2000)
    # 渲染数据
    timeline.render('疫情轮播图.html')


if __name__ == '__main__':
    d_map = map_china()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长浪破风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值