• python 全国内地高风险地区数量查询与可视化(分省)


    一、准备工作

    二、可视化步骤

    2.1 导入相关库

    import datetime
    import pandas as pd
    import akshare as ak
    
    from pyecharts import options as opts
    from pyecharts.charts import Map
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.2 高风险地区数据获取

    # 高风险地区实时查询
    covid_19_risk_area_df = ak.covid_19_risk_area(symbol="高风险等级地区")
    
    • 1
    • 2

    2.3 分省高风险地区数量统计、排序

    # 各省高风险地区数量统计、排序
    df_counts_province = covid_19_risk_area_df.groupby(['grade','province']).nunique()[['communitys']] # 去重统计
    df_counts_province = df_counts_province.sort_values(by=['communitys'],ascending=False)             # 排序
    df_counts_province.rename(columns={"communitys":"counts"},inplace=True)                            # 将列名communitys重新命名成counts
    
    • 1
    • 2
    • 3
    • 4

    2.4 获取省份简称

    # 获取省份简称
    # 读取excel数据文件
    ProvinceInfo_TX = pd.read_excel("ProvinceInfo_TX.xlsx")
    # 表关联
    df = pd.merge(df_counts_province.reset_index(),ProvinceInfo_TX,how="left",left_on="province",right_on="fullname")
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    2.5 pyecharts 绘图

    # 参考:https://gallery.pyecharts.org/#/Map/map_base
    data_list = df[['name','counts']].values.tolist()                                           # 数据列表
    now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")                                 # 目前时间
    subtitle = "数据来源:AKShare->事件数据->COVID->疫情风险等级查询\n更新日期:{}".format(now) # 副标题文本
    c = (
        Map()
        .add("高风险地区数量", data_list, "china") # 添加数据
        # 设置全局变量
        .set_global_opts(
            # 设置标题
            title_opts=opts.TitleOpts(
                title="全国内地高风险地区数量分布",
                subtitle=subtitle,
            ),  
            legend_opts=opts.LegendOpts(
                selected_mode="single",
            ),
            
            # 视觉映射配置项,参考:https://pyecharts.org/#/zh-cn/global_options?id=visualmapopts
            visualmap_opts=opts.VisualMapOpts(
                is_piecewise=True, # 是否为分段型
                
                # 自定义范围、标签、颜色
                pieces = [
                    {
                        "max":20,
                        "label":"1-20",
                        "color":"#FFFF00",
                    },{
                        "min":20,
                        "max":40,
                        "label":"20-40",
                        "color":"#FFE500",
                    },{
                        "min":40,
                        "max":80,
                        "label":"40-80",
                        "color":"#FFCC00",
                    },{
                        "min":80,
                        "max":150,
                        "label":"80-150",
                        "color":"#FF9900",
                    },{
                        "min":150,
                        "max":300,
                        "label":"150-300",
                        "color":"#FF6600",
                    },{
                        "min":300,
                        "label":"300及以上",
                        "color":"#FF3300",
                    },
                ]
            ), 
        )
    )
    # 在notebook上显示
    c.render_notebook() 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59

    三、完整代码

    import datetime
    import pandas as pd
    import akshare as ak
    
    from pyecharts import options as opts
    from pyecharts.charts import Map
    
    
    ############################### 数据获取 ###############################
    # 高风险地区实时查询
    covid_19_risk_area_df = ak.covid_19_risk_area(symbol="高风险等级地区")
    # 各省高风险地区数量统计、排序
    df_counts_province = covid_19_risk_area_df.groupby(['grade','province']).nunique()[['communitys']]
    df_counts_province = df_counts_province.sort_values(by=['communitys'],ascending=False)
    df_counts_province.rename(columns={"communitys":"counts"},inplace=True)
    # 各市高风险地区数量统计、排序
    df_counts_city = covid_19_risk_area_df.groupby(['grade','province','city']).nunique()[['communitys']]
    df_counts_city = df_counts_city.sort_values(by=['communitys'],ascending=False)
    df_counts_city.rename(columns={"communitys":"counts"},inplace=True)
    
    
    ############################### 数据可视化 ###############################
    # 全国内地高风险地区数量分布(分省)
    
    # 获取省份简称
    ProvinceInfo_TX = pd.read_excel("ProvinceInfo_TX.xlsx")
    # 表关联
    df = pd.merge(df_counts_province.reset_index(),ProvinceInfo_TX,how="left",left_on="province",right_on="fullname")
    # 利用 pyecharts 绘图
    # 参考:https://gallery.pyecharts.org/#/Map/map_base
    data_list = df[['name','counts']].values.tolist()                                           # 数据列表
    now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")                                 # 目前时间
    subtitle = "数据来源:AKShare->事件数据->COVID->疫情风险等级查询\n更新日期:{}".format(now) # 副标题文本
    c = (
        Map()
        .add("高风险地区数量", data_list, "china") # 添加数据
        # 设置全局变量
        .set_global_opts(
            # 设置标题
            title_opts=opts.TitleOpts(
                title="全国内地高风险地区数量分布",
                subtitle=subtitle,
            ),  
            legend_opts=opts.LegendOpts(
                selected_mode="single",
            ),
            
            # 视觉映射配置项,参考:https://pyecharts.org/#/zh-cn/global_options?id=visualmapopts
            visualmap_opts=opts.VisualMapOpts(
                is_piecewise=True, # 是否为分段型
                
                # 自定义范围、标签、颜色
                pieces = [
                    {
                        "max":20,
                        "label":"1-20",
                        "color":"#FFFF00",
                    },{
                        "min":20,
                        "max":40,
                        "label":"20-40",
                        "color":"#FFE500",
                    },{
                        "min":40,
                        "max":80,
                        "label":"40-80",
                        "color":"#FFCC00",
                    },{
                        "min":80,
                        "max":150,
                        "label":"80-150",
                        "color":"#FF9900",
                    },{
                        "min":150,
                        "max":300,
                        "label":"150-300",
                        "color":"#FF6600",
                    },{
                        "min":300,
                        "label":"300及以上",
                        "color":"#FF3300",
                    },
                ]
            ), 
        )
    )
    # 在notebook上显示
    c.render_notebook() 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88

    .
    .
    .

  • 相关阅读:
    javase集合 温故而知新
    Spring MVC
    电影售票系统遇到的问题
    C++阶段05笔记03【C++提高编程资料(string容器、vector容器、deque容器、stack容器)】
    【光谱特征选择】连续投影算法SPA(含python代码)
    二进制、计算机与存储
    Java进阶之多线程
    请简要说明 Mysql 中 MyISAM 和 InnoDB 引擎的区别
    网络安全防御体系中网络安全检查设备
    echarts 饼图 环形图 lable添加下划线
  • 原文地址:https://blog.csdn.net/small__roc/article/details/127615295