今天学习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对国民生产总值分析,可以让我们更快的了解对其中绘图方法的使用的了解
。且无论是哪种绘图方法都不要忘记对最种的结果进行分析,获取我们所要的结论。

用Python分析国民生产总值的更多相关文章

  1. 用Python分析国庆旅游景点,告诉你哪些地方好玩、便宜、人又少

    注:本人参考“裸睡的猪”公众号同名文章,学习使用. 一.目标 使用Python分析出国庆哪些旅游景点:好玩.便宜.人还少的地方,不然拍照都要抢着拍! 二.获取数据 爬取出行网站的旅游景点售票数据,反映 ...

  2. python 分析慢查询日志生成报告

    python分析Mysql慢查询.通过Python调用开源分析工具pt-query-digest生成json结果,Python脚本解析json生成html报告. #!/usr/bin/env pyth ...

  3. Python分析盘点2019全球流行音乐:是哪些歌曲榜单占领了我们?

    写在前面:圣诞刚过,弥留者节日气息的大家是否还在继续学习呐~在匆忙之际也不忘给自己找几首好听的歌曲放松一下,缠绕着音乐一起来看看关于2019年流行音乐趋势是如何用Python分析的吧! 昨天下午没事儿 ...

  4. Python分析数据难吗?某科技大学教授说,很难但有方法就简单

    用python分析数据难吗?某科技大学的教授这样说,很难,但要讲方法,主要是因为并不是掌握了基础,就能用python来做数据分析的. 所谓python的基础,也就是刚入门的python学习者,学习的基 ...

  5. 五月天的线上演唱会你看了吗?用Python分析网友对这场线上演唱会的看法

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:CDA数据分析师 豆瓣9.4分!这场线上演唱会到底多好看? 首先让我 ...

  6. Python分析离散心率信号(下)

    Python分析离散心率信号(下) 如何使用动态阈值,信号过滤和离群值检测来改善峰值检测. 一些理论和背景 到目前为止,一直在研究如何分析心率信号并从中提取最广泛使用的时域和频域度量.但是,使用的信号 ...

  7. Python分析离散心率信号(中)

    Python分析离散心率信号(中) 一些理论和背景 心率信号不仅包含有关心脏的信息,还包含有关呼吸,短期血压调节,体温调节和荷尔蒙血压调节(长期)的信息.也(尽管不总是始终如一)与精神努力相关联,这并 ...

  8. Python分析离散心率信号(上)

    Python分析离散心率信号(上) 一些理论和背景 心率包含许多有关信息.如果拥有心率传感器和一些数据,那么当然可以购买分析包或尝试一些可用的开源产品,但是并非所有产品都可以满足需求.也是这种情况.那 ...

  9. Python分析世界幸福指数

    前言 民意测验机构盖洛普从2012年起,每年都会在联合国计划下发布<世界幸福指数报告>,报告会综合两年内150多个国家的国民对其所处社会.城市和自然环境等因素进行评价后,再根据他们所感知的 ...

随机推荐

  1. Yii 框架 URL路径简化

    Yii 框架的訪问地址若不简化会让人认为非常繁琐.未简化的地址一般格式例如以下: http://localhost:80/test/index.php?r=xxx/xxx/xxx 若是带有參数会更复杂 ...

  2. 近年来世界各地ICO的花式骗局盘点

    很多人说区块链是骗局,其实不然,区块链是一种安全的互联网技术,可以解决当下很多行业的痛点,但也确实存在一些不法分子利用区块链进行行骗,下面整理了世界各地的一些ICO骗局,一起来看看吧. 案例一:越南I ...

  3. django 设置静态文件,static

    django 设置静态文件,static 一.搜集静态文件 1.1 命令行查看 collectstatic guoguos-MacBook-Pro:mysite guoguo$ python mana ...

  4. SAP流水号

    [转]编号范围对象维护 Tcode: SNRO OYSM   1.Number Range的通用Tcode:SNRO   2.Number Range的通用读取函数:NUMBER_GET_NEXT 3 ...

  5. 浅尝NODE.js

    Node.js是Google公司开发的,安装好必要的环境以后,可以在服务端上跑的js,可以接收和回应http请求,所有方法都支持异步回调,大大提高事务执行效率. 学习地址:http://www.run ...

  6. Laravel的初始化安装

    Laravel的初始化安装 composer 安装 composer中国镜像laravel文档 curl -sS https://getcomposer.org/installer | php # 修 ...

  7. 在Linux下创建7种类型的文件

    在测试的时候有时会需要每种类型的文件,在系统中进行搜索都会找到,当然最方便的还是手动创建它们进行测试使用. 普通文件: $ touch regular 目录: $ mkdir directory 符号 ...

  8. [BZOJ 1095] [ZJOI 2007]Hide 捉迷藏

    在BZ上连续MLE n次后,终于A了. 自己YY的动态点分写法,思路还是很清楚的,但是比较卡内存. 用到了MAP导致复杂度比其他的代码多了一个log,看来需要去借鉴一下别人怎么写的. updata i ...

  9. 【转载】帧缓冲驱动程序分析及其在BSP上的添加

    原文地址:(四)帧缓冲驱动程序分析及其在BSP上的添加 作者:gfvvz 一.BSP修改及其分析   1. BSP中直接配置的四个寄存器 S3C6410数据手册的第14.5部分是显示控制器的编程模型部 ...

  10. linux内核 RCU机制详解【转】

    本文转载自:https://blog.csdn.net/xabc3000/article/details/15335131 简介 RCU(Read-Copy Update)是数据同步的一种方式,在当前 ...