zoukankan      html  css  js  c++  java
  • pyecharts各省人口GDP可视化分析

    版权声明:本文为博主原创文章,转载 请注明出处:https://blog.csdn.net/sc2079/article/details/82503569

    9月9日更:本篇博客数据下载:链接:https://pan.baidu.com/s/1G2_oP6ElxAPh-S2miqE6cw 密码:7bjg

    - 写在前面


      上次在中国大学MOOC课程信息之数据分析可视化二中,第一次使用了百度开源的pyecharts。真心说,pyecharts真的好用。因此,我又迫不及待地探索其他有趣的绘图方法。
      本篇博客所涉及的数据均来源于国家统计局。pyecharts使用参考:pyecharts官网
      PS:作为一个地图控和数据爱好者,我接下来会不定期更新此博客,感谢大家浏览。

    - 环境配置安装


      运行环境:Python3.6、Spyder

      依赖的模块:numpy,pandas,re,pyecharts以及一些地图模块

    - 开始工作


    1. 获取数据

      在国家统计局官网上点击数据查询。(需要注册登录!)

      在地区数据中的分省年度数据中点击左边的指标,如人口,综合,再设置时间(我取的是最近20年)。

      此次我下载的是各省近20年的GDP以及各省近20年的人口(格式csv)。(时间跨度从1997年到2016年)。如果需要数据的,请留言或私戳。

      用MS Excel打开下载的csv表格,发现有很多说明文字,如:

      因此,这里我们需手动删除掉这些说明文字。

    2. 数据读取

    gdp_path='D://python_data//provinces_gdp.csv'  #各省GDP文件路径
    pop_path='D://python_data//provinces_population.csv'  #各省人口文件路径
    gdp_data = pd.read_csv(gdp_path)  #pandas读入csv表格
    pop_data = pd.read_csv(pop_path)
    

      运行之后,发现报错:

    ![](https://i.imgur.com/063qzGj.png)
      仔细检查,原来pandas读入含中文的表格时,需要编码成中文的GB2312格式!
    gdp_data = pd.read_csv(gdp_path,encoding='GB2312')  #pandas读入csv表格
    pop_data = pd.read_csv(pop_path,encoding='GB2312')
    
      好了,数据读取成功。现在开始绘图啦!

    3. 绘制2016年各省GDP人口条形图

      由于读入的数据为pandas格式,而pyecharts默认为list格式。因此这里需要进行转换(PS:很久之前学的pandas了,好多知识点都忘了,笑哭)。虽然官网上也有相应例子,但发现并不怎么好用。网上搜了一些方法,这篇博客用pandas中的DataFrame时选取行或列写的不错,可以借鉴。

    '''2016年各省GDP人口条形图'''
    attr=gdp_data['地区'].values.tolist()  #省份名
    v1=gdp_data['2016年'].values.tolist() #2016年各省GDP
    v2=pop_data['2016年'].values.tolist() #2016年各省人口
    bar = Bar("2016年各省GDP人口条形图",title_color="#fff", title_pos="auto",
          width=1200, height=600,background_color="#404a59")
    bar.add("GDP/亿元", attr, v1)
    bar.add("人口/万", attr, v2, is_label_show=True,is_datazoom_show=True,
            xaxis_label_textsize=10,xaxis_rotate=30)
    bar.render("2016年各省GDP人口条形图.html")
    

      说明:各省GDP的数据先取某一列,如2016年的,得到新的Dataframe,再取value值,得到numpy格式的数据,最后将其转换为list格式。

      下方可滑动,可以看到不同的省份的GDP和人口(红色为GDP/万亿元,蓝色为人口/万,)。

    4. 绘制指定省历年GDP与人口变化曲线

      我这里选的省份是四川(家乡啦),你也可以选择你的家乡或者感兴趣的。

    province='四川省'
    attr=gdp_data.columns.tolist()[-1:0:-1]  #年份
    v1=gdp_data[gdp_data['地区']==province].values.tolist()[0][-1:0:-1]  #历年GDP数据
    v2=pop_data[pop_data['地区']==province].values.tolist()[0][-1:0:-1]  #历年人口数据
    line = Line(province+"历年GDP与人口变化曲线",title_color="#404a59", title_pos="auto",
        width=1200, height=600)
    line.add("GDP/亿元", attr, v1, is_stack=True, is_label_show=True)
    line.add("人口/万", attr, v2, is_stack=True, is_label_show=True)
    line.render(province+"历年GDP与人口变化曲线.html")
    

      需要指出的是获取历年数据时依照前面方法得到的是二维数组、第一个值不是数据且数据是从2016年到1997年的。因此这里取第一维,去掉第一个值,倒序输出。

      红色为GDP,蓝色为人口,其中人口在前两个为空。可以看出,四川省近20年GDP比人口增长得更快,人民的生活越来越好啦,开心。

    5. 绘制2016年全国各省人均GDP地图

      看看2016年哪个地方最发达,人民最富。

    '''2016年全国各省人均GDP地图'''
    attr=gdp_data['地区'].values.tolist()  #省份名
    attr=[re.sub('[自治区市省回族维吾尔壮族]', '', i) for i in attr]
    v1=gdp_data['2016年'].values #2016年各省GDP
    v2=pop_data['2016年'].values #2016年各省人口
    value=np.round(v1/v2,decimals=2).tolist()   #2016年各省人均GDP,保留两位小数
    map = Map("2016年全国各省人均GDP地图",title_color="#404a59", title_pos="auto",
        width=1200, height=600)
    map.add("人均/万元",attr,value,visual_range=[0, 12],maptype="china",is_visualmap=True,
        visual_text_color="#000"
    )
    map.render("2016年全国各省人均GDP地图.html")
    

      需要说明的是,由于pyecharts默认的省级行政区不带有“市”,“省”,“自治区”,民族字样,这里需要先将省名预处理,用re去掉多余字符。
      另外,在求人均GDP时,发现Numpy数组相除相对简单。为了数据看着更简洁,这里保留两位小数。

      再看看人均上6万的。

      哎,只有沿海地区外加内蒙古和帝都了。看来西部大开发国家还得继续鼎力支持啊。

    6. 绘制近20年全国各省GDP增长率地图

      上边的图有点来气,我们西部好不发达呀。别生气,我们应该换种角度看待问题,那么从近20年的发展来看,情况是怎样的呢?

    '''近20年全国各省GDP增长率地图'''
    _attr=gdp_data['地区'].values.tolist()  #省份名
    attr=[re.sub('[自治区市省回族维吾尔壮族]', '', i) for i in _attr]
    value=[]
    for i in _attr:
        gdp=gdp_data[gdp_data['地区']==i].values.tolist()[0][-1:0:-1]  #历年GDP数据
        rate=round(gdp[-1]/gdp[0],2)
        value.append(rate)
    map = Map("近20年全国各省GDP增长率地图",title_color="#404a59", title_pos="auto",
              width=1200, height=600)
    map.add("增长率/倍",attr,value,visual_range=[0, 16],maptype="china",is_visualmap=True,
        visual_text_color="#000"
    )
    map.render("近20年全国各省GDP增长率地图.html")
    

      情况是这样的:

      我国大多省份在近20年都实现了快速发展(东北发展相对有点缓慢)。

      而看增长大于12倍的省份,好多都是中西部的。看来中西部地区发展速度的比东部沿海地区更快呀。

    - 结语


      持续更新中。另外,有需要的话,数据和生成的html网页我会打包放在云盘上共享出来。

  • 相关阅读:
    VUE课程参考---2、VUE基本使用
    VUE课程---1、VUE课程介绍
    JS数组常用方法---3、pop方法使用及原理
    JavaScript中数组元素删除的七大方法汇总
    Stack的三种含义
    JS数组常用方法---6、reverse方法
    数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器
    服务框架HSF分析之一容器启动
    淘宝HSF服务的原理以及简单的实现
    DAS 原文出自【比特网】
  • 原文地址:https://www.cnblogs.com/sc340/p/11870815.html
Copyright © 2011-2022 走看看