zoukankan      html  css  js  c++  java
  • 用Python分析国民生产总值

      今天学习Python的matplotlib,书上的一道例题感觉写的很好(黄红梅的Python数据分析与应用),就是

    利用matplotlib的各种图来对2000-2017年季度生产总值进行分析,这道题确实是学习用图分析数据的一道经典

    题,于是我根据书上的代码和自己的理解在jupyter上敲了一下,并做了总结,贴在下面,方便后序的学习和使用

     

    1 首先把数据文件导进来,然后大概了解数据文件里面有啥内容,这是文件的链接,有需要的朋友可以下载来学习使用

    https://files.cnblogs.com/files/henuliulei/%E5%9B%BD%E6%B0%91%E7%BB%8F%E6%B5%8E%E6%A0%B8%E7%AE%97%E5%AD%A3%E5%BA%A6%E6%95%B0%E6%8D%AE.zip

    然后再绘制散点图,下面是以第一季度绘制的,代码如下

    import numpy as np
    import matplotlib.pyplot as plt
    plt.rcParams['font.sans-serif']='SimHei'#设置中文显示,否则可能无法显示中文或者是各种字符错乱
    plt.rcParams['axes.unicode_minus']=False
    data=np.load("D:/国民经济核算季度数据.npz")#加载数据
    print(data)#这时的data是数据对象
    print(data.keys())#该数据对象是个字典,所以先获取他的key值
    print(data['columns'])#看一下key值里面有什么,
    print(data['values'])#看一下value值里面有什么,
    name=data['columns']
    values=data['values']
    plt.figure(figsize=(8,7))
    plt.scatter(values[:,0],values[:,2],marker='o')#以数据的第零列做x轴,第三列做y轴,来描绘散点图
    plt.xlabel('年份');
    plt.ylabel('生产总值(亿元)');
    plt.ylim((0,225000))
    plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)#此时取得值都是第一季度的
    plt.title('2000-2017年季度生产总值散点图')
    plt.savefig('D:/2000-2017年季度生产总值散点图.png')#注意要先保存再show
    plt.show()#下面是得到的结果

    可以很清晰看出数据里面大致是啥东西。

    2: 再如下面是分析的第一二三产业的的国民生产总值,代码如下

    import numpy as np
    import matplotlib.pyplot as plt
    plt.rcParams['font.sans-serif']='SimHei'#设置中文显示,否则可能无法显示中文或者是各种字符错乱
    plt.rcParams['axes.unicode_minus']=False
    data=np.load("D:/国民经济核算季度数据.npz")#加载数据
    plt.figure(figsize=(8,7))
    plt.scatter(values[:,0],values[:,3],marker='o',c='red')#下面三类是绘制的第一二三产业的增加值
    plt.scatter(values[:,0],values[:,4],marker='D',c='blue')
    plt.scatter(values[:,0],values[:,5],marker='v',c='yellow')
    plt.xlabel('年份');
    plt.ylabel('生产总值(亿元)');
    plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)#此时取得值都是第一季度的
    plt.title('2000-2017年季度生产总值散点图')
    plt.legend(['第一产业','第二产业','第三产业'])
    plt.savefig('D:/2000-2017年季度生产总值散点图.png')#注意要先保存再show
    plt.show()

    其实画图并不是目的,真正的目的是通过这些图来进行数据分析,获取我们要找到的东西

    比如上面的图我们可以得到:第一季度增长平缓,第三季度呈现指数增长,第二季度每年会根据季度呈现指数增长。总体来看,我国近18年的各个产业都在持续增长中,

    并且第二和第三产业的增长幅度比较大,18年增长了400%以上。这些结论性的东西才是我们最终的目的。

    3 下面是折现图分析第一季度

    import numpy as np
    import matplotlib.pyplot as plt
    plt.rcParams['font.sans-serif']='SimHei'#设置中文显示,否则可能无法显示中文或者是各种字符错乱
    plt.rcParams['axes.unicode_minus']=False
    data=np.load("D:/国民经济核算季度数据.npz")#加载数据
    plt.figure(figsize=(8,7))
    plt.plot(values[:,0],values[:,2],color='r',linestyle='--')
    plt.xlabel('年份');
    plt.ylabel('生产总值(亿元)');
    plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)#此时取得值都是第一季度的
    plt.title('2000-2017年季度生产总值折现图')
    plt.savefig('D:/2000-2017年季度生产总值散点图.png')#注意要先保存再show
    plt.show()

     

     散点图可以反映x和y轴(特性)的相关关系

    而绘制折线图可以了解特性之间的趋势关系

    4点线图(其实就是改变marker)

    import numpy as np
    import matplotlib.pyplot as plt
    plt.rcParams['font.sans-serif']='SimHei'
    plt.rcParams['axes.unicode_minus']=False
    data=np.load("D:/国民经济核算季度数据.npz")#加载数据
    plt.figure(figsize=(8,7))
    plt.plot(values[:,0],values[:,2],color='r',linestyle='--',marker='s')#plot绘制点线图
    plt.xlabel('年份',fontsize=10);
    plt.ylabel('生产总值(亿元)',fontsize=20);
    plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)
    plt.title('2000-2007年各季度国民生产总值点线图')
    plt.savefig('D:/a4.png')
    plt.show()

    有时可能默认的图片字体大小可能不符合要求,只需要用fontsize去改变大小即可

    5:下面绘制2000-2017年各产业季度生产总值折线图

    plt.plot(values[:,0],values[:,3],'bs-')#第三个参数的含义是颜色blue点的形状正方形线的类型是实线-
    plt.plot(values[:,0],values[:,4],'ro-.')
    plt.plot(values[:,0],values[:,5],'gh--')
    plt.xlabel('年份',fontsize=15);
    plt.ylabel('生产总值(亿元)',fontsize=20);
    plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)
    plt.title('2000-2007年各季度国民生产总值折线图')
    plt.legend(['第一季度','第二季度','第三季度'])
    plt.savefig('D:/a4.png')
    plt.show()

     

    同时把三条线加到同一张图片上,同时每个图片设置各自的属性(颜色,点的形状,线性)

    注意要先绘制图形,再添加图例(先plot再legend)否则图列显示不出来。同理应该先保存再show()

    6:下面是直方图

    import numpy as np
    import matplotlib.pyplot as plt
    plt.rcParams['font.sans-serif']='SimHei'
    plt.rcParams['axes.unicode_minus']=False
    data=np.load("D:/国民经济核算季度数据.npz")#加载数据
    plt.figure(figsize=(8,7))
    name=data['columns']
    values=data['values']
    plt.bar(range(3),values[-1,3:6],width=0.5)#-1指的是最后一行2017,第一个参数是下标位置,第二个是对应的y值,后一个是宽度,默认为0.8,还可以自己设置颜色
    plt.xlabel('年份',fontsize=15);
    plt.ylabel('生产总值(亿元)',fontsize=20);
    plt.xticks(range(3),['第一产业','第二产业','第三产业'])
    plt.title('2017年第一季度国民生产总值直方图')

    plt.savefig('D:/a4.png')
    plt.show()

    调用plt.bar方法获取直方图,

    直方图容易分析数字占比关系

    7:下面是饼图的使用

    import numpy as np
    import matplotlib.pyplot as plt
    plt.rcParams['font.sans-serif']='SimHei'
    plt.rcParams['axes.unicode_minus']=False
    data=np.load("D:/国民经济核算季度数据.npz")#加载数据
    plt.figure(figsize=(8,7))
    name=data['columns']
    values=data['values']
    label=['第一产业','第二产业','第三产业']
    explode=[0.1,0.5,0.03]#设置指定项距离圆心的距离为N 倍的半径
    plt.pie(values[-1,3:6],explode=explode,labels=label,autopct='%1.1f%%')
    plt.title('2017年第一季度各产业国民生产总值直方图')
    plt.savefig('D:/a4.png')
    plt.show()

     

     通过explode改变每份图距离圆心的距离,该距离为半径的指定倍数,也可以通过radius=数值来设置半径的大小

    饼图可以方便看出占比

    8:下面介绍箱线图的使用

    import numpy as np
    import matplotlib.pyplot as plt
    plt.rcParams['font.sans-serif']='SimHei'
    plt.rcParams['axes.unicode_minus']=False
    data=np.load("D:/国民经济核算季度数据.npz")#加载数据
    plt.figure(figsize=(8,7))
    name=data['columns']
    values=data['values']
    label=['第一产业','第二产业','第三产业']
    gdp=(list(values[:,3]),list(values[:,4]),list(values[:,5]))
    plt.boxplot(gdp,notch=True,labels=label,meanline=True)#第一个参数是数据,第二个参数是是否带有缺口,第三个参数是标签,第四个参数是是否带有均值线
    plt.title('2017年第一季度各产业国民生产总值箱线图')
    plt.savefig('D:/a4.png')
    plt.show()

    可以看出第一产业某个季度有异常值,第三季度增速大,而且数据前半部分相对密集。
    总结:通过matplotlib对国民生产总值分析,可以让我们更快的了解对其中绘图方法的使用的了解
    。且无论是哪种绘图方法都不要忘记对最种的结果进行分析,获取我们所要的结论。
  • 相关阅读:
    财富感悟:赚大钱的经典语录
    男人成为富翁必备五大特质
    上帝不会辜负每一个有梦的孩子(转)
    一百个绝佳句型
    欢迎光临腾飞品牌网和腾飞悬赏任务网
    金钱在哪里?财富就在你心里
    小本创业30条生意妙经
    告诉你钱途无量的六大创业领域
    告诉你一个简单、深刻的经商道理
    十二条创业经验:包你做梦都赚钱
  • 原文地址:https://www.cnblogs.com/henuliulei/p/9857572.html
Copyright © 2011-2022 走看看