今天学习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. 我的Java开发学习之旅------>工具类:将播放器的进度值转换成相应的时间格式

    在我的博客<我的Java开发学习之旅------>Java 格式化类(java.util.Formatter)基本用法,地址:http://blog.csdn.net/ouyang_pen ...

  2. ftl总结

    当前项目前端是用freemarker,是第一次使用这种页面,一般语法不介绍,这里只是记录工作中遇到的问题 ---------2016.6.25-------------- 1.关于ftl字符串的问题 ...

  3. 利用iOS原生系统进行人脸识别+自定义滤镜(GPUImage)

    人脸识别+滤镜效果(基于GPUImage实现的自定义滤镜) 最近碰到一个好玩的需求.说要客户端这边判定一下是否有人脸.在有的基础上.对相片做进一步的美化滤镜处理. 首先是人脸的识别判定; //将图片对 ...

  4. HTML5_CSS3仿Google Play垂直菜单

    在线演示 本地下载

  5. 20145239杜文超 《Java程序设计》第10周学习总结

    20145239 <Java程序设计>第10周学习总结 教材学习内容总结 Java的网络编程 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据. 网络概述 1.计算机 ...

  6. Linux2.4文件系统中vfsmount、安装点的dentry、设备的dentry之间的关系【转】

    本文转载自:https://blog.csdn.net/mishifangxiangdefeng/article/details/7566575 1.vfsmount.安装点的dentry.设备的de ...

  7. HDU4529 郑厂长系列故事——N骑士问题 —— 状压DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4529 郑厂长系列故事——N骑士问题 Time Limit: 6000/3000 MS (Java/Ot ...

  8. Spring Boot2.0之 原理—创建内置Tomcat容器

    前面所述的https://www.cnblogs.com/toov5/p/9823728.html 中的第一条先不赘述了,就是玩了maven 重点介绍后两条 首先内置Tomcat: SpringBoo ...

  9. PYTHON 爬虫笔记五:BeautifulSoup库基础用法

    知识点一:BeautifulSoup库详解及其基本使用方法 什么是BeautifulSoup 灵活又方便的网页解析库,处理高效,支持多种解析器.利用它不用编写正则表达式即可方便实现网页信息的提取库. ...

  10. HihoCoder1672 : 区间问题([Offer收割]编程练习赛41)(贪心)

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定N个区间[Ai, Bi],请你找到包含元素最少的整数集合S,使得每个区间都至少有两个整数在S中. 例如给定三个区间[1 ...