python数据分析与可视化

python数据分析的工具

python数据分析的优势

1.简单、易学

2.免费、开源

3.完备的社区生态

4.高级语言

5.强大的第三方类库

6.可扩展性、可嵌入性、跨平台性

python数据分析常用类库

1.ipython——科学计算标准工具集的组成部分

是一个增强的python shell,目的是提高编写、测试、调试python代码的速度;

主要用于交互式数据并行处理,是分布式计算的基础架构;

提供了一个类似于mathematica的HTML笔记本,一个基于qt框架的gui控制台,具体绘图

2.numpy(numerical python)——python科学计算的基础包

快速高效的多维数组对象ndarray;

对数组执行元素级的计算以及直接对数组执行的数学运算的函数;

读写硬盘上基于数组的数据集的工具;

线性代数运算、傅里叶交换,以及随机数生成的功能。

将c、c++?fortran代码集成到python的工具。

3.Scipy——专门解决科学计算中各种标准问题域的集合

scipy.integrate 数值积分例程和微分方程求解器

scipy.linalg 扩展了由Numpy.linaig提供的线性代数例程和矩阵分解功能

scipy.optimize 函数优化器(最小化器)以及根查找算法

scipy.signal 信号处理工具

scipy.sparse 稀疏矩阵和稀疏线性系统求解器

scipy.special specfun(这是一个实现了许多常用数学函数的fortran库)

scipy.stats 检验连续和离散概率分布、各种统计检验方法,以及更好描述

scipy.weave 利用内联c++代码加速数组计算的工具

4.pandas——数据分析核心库

提供了一系列能够快速、便捷地处理结构化数据的数据结构和函数;

高性能的数组计算功能以及电子表格和关系型数据库(如sql)灵活的数据处理功能;

复杂精细的索引功能,以便捷地完成重塑、切片和切块、聚合及选取数据子集等操作。

5.matplotlib——绘制数据图表的python库

python的2D绘图库,非常适合创建出版物上用的图标;

操作比较容易,只需要几行代码即可生成直方图、功率谱图、条形图、错误图和散点图等图形

提供了pylab的模块,其中包括了numpy和pyplot中许多常用的函数,方便用户快速进行计算绘图;

交互式的数据绘图环境,绘制的图表也是交互式的。

6.scikit-learn——数据挖掘和数据分析工具

简单有效,可以供用户在各种环境下重复使用。

封装了一些常用的算法方法;

基本模块主要有数据预处理、模型选择、分类、聚类、数据降维和回归6个。

安装anaconda与启动jupyter notebook

jupyter notebook

常用功能

  • Text file 为纯文本型
  • folder为文件夹
  • python3表示python运行脚本
## 快捷键
M # 由代码转成makedown
Esc  # 进入命令模式
Y	#切换代码单元
B	#在本单元的下方增加一单元
H   #查看所有快捷命令
shift+enter 组合键  # 运行代码
标签:jupyter python notebook快捷键 jupyter快捷键
Jupyter Notebook 的快捷键
Jupyter Notebook 有两种键盘输入模式:1、命令模式,键盘输入运行程序命令;这时的单元框线是蓝色。2、编辑模式,允许你往单元中键入代码或文本;这时的单元框线是绿色的。

一、命令模式 (在编辑模式下按键 Esc键进入命令模式)

命令模式下jupyter左边为蓝色
命令模式下的快键键:

Enter : 转入编辑模式                                                                                                Shift-Enter : 运行本单元,选中下个单元

Ctrl-Enter : 运行本单元

Alt-Enter : 运行本单元,在其下插入新单元

Y : 单元转入代码状态
M :单元转入markdown状态
R : 单元转入raw状态
1 : 设定 1 级标题
2 : 设定 2 级标题
3 : 设定 3 级标题
4 : 设定 4 级标题
5 : 设定 5 级标题
6 : 设定 6 级标题
Up : 选中上方单元
K : 选中上方单元
Down : 选中下方单元
J : 选中下方单元
Shift-K : 扩大选中上方单元
Shift-J : 扩大选中下方单元
A : 在上方插入新单元
B : 在下方插入新单元
X : 剪切选中的单元
C : 复制选中的单元
Shift-V : 粘贴到上方单元
V : 粘贴到下方单元
Z : 恢复删除的最后一个单元
D,D : 删除选中的单元
Shift-M : 合并选中的单元
Ctrl-S : 文件存盘
S : 文件存盘
L : 转换行号

O : 转换输出

Shift-O : 转换输出滚动

Esc : 关闭页面

Q : 关闭页面
H : 显示快捷键帮助
I,I : 中断Notebook内核
0,0 : 重启Notebook内核
Shift : 忽略
Shift-Space : 向上滚动
Space : 向下滚动

二、编辑模式 ( Enter 键启动)

编辑模式时边框为绿色
编辑模式时边框为绿色,此时允许用户编辑文档,此模式下的快捷键有(常用快捷键标红强调):

Esc : 进入命令模式
Shift-Enter : 运行本单元,选中下一单元
Ctrl-Enter : 运行本单元
Alt-Enter : 运行本单元,在下面插入一单元
Tab : 代码补全或缩进
Shift-Tab : 提示
Ctrl-] : 缩进
Ctrl-[ : 解除缩进
Ctrl-A : 全选
Ctrl-Z : 复原
Ctrl-Shift-Z : 再做
Ctrl-Y : 再做
Ctrl-Home : 跳到单元开头
Ctrl-Up : 跳到单元开头
Ctrl-End : 跳到单元末尾
Ctrl-Down : 跳到单元末尾
Ctrl-Left : 跳到左边一个字首
Ctrl-Right : 跳到右边一个字首
Ctrl-Backspace : 删除前面一个字
Ctrl-Delete : 删除后面一个字
Ctrl-M : 进入命令模式
Ctrl-Shift-- : 分割单元
Ctrl-Shift-Subtract : 分割单元
Ctrl-S : 文件存盘
Shift : 忽略
Up : 光标上移或转入上一单元
Down :光标下移或转入下一单元

掌握NumPy数组对象ndarray

创建数组对象

1,数组创建

numpy.array(object,dtype=None,copy=True,order=‘K’,subok=False,ndmin=0)

参数名称说明
object接受array_like。表示想要创建的数组。五默认。
dtype接受data-type。表示数组所需的数据类型。如果未给定,则选择保存对象所需的最小类型。默认为None
ndmin接收int。指定生成数组应该具有的最小维数。默认为None。
import numpy as np
#创建一维数组
arr1 = np.array([0.3,0.5,4.2])
print(arr1)
print(type(arr1)) #查看数组类型
#创建二维数组
arr2 = np.array([[3,4,5],[4,2,1]])
print(arr2)

2,数组属性:ndarray(数组)是存储单一数据类型的多维数组。

属性说明
ndim返回int。表示数组的维数
shape返回tuple。表示数组的尺寸,对于n行m列的矩阵,形状为(n,m)
size返回int。表示数组的元素总数,等于数组形状的乘积
dtype返回data-type。描述数组中元素的类型
itemsize返回int。表示数组的每个元素的大小(以字节为单位)。
#查看数组的基础属性
print(arr1.shape) #看数组维数并且可以看数组元素个数
print(arr1.ndim)  #查看数组维数
print(arr1.dtype) #查看你数组类型

3,数组的特点

  • 多维数组,具有矢量运算能力,且快速,节省空间;
  • 可对整租数据进行快速运算的标准数学函数、线性代数、随机数生成等功能;
#列表vs数组
list1 = [0.3,0.5,4.2]
arr1 = np.array([0.3,0.5,4.2])
print(list1)
print(arr1)

#list1 ** 2
print([i**2 for i in list1])
print(arr1 ** 2)

创建规则数组

重新设置数组的shape属性

arr2.shape = 4.3 #重新设置shape
print('重新设置shape后的arr2为:',arr2)
------------------结果----------------------------
重新设置shape维度后的arr2为:[[1 2 3]
[4 5 6]
[6 7 7]
[8 9 10]]

使用arange函数创建数组(等差数组)

print('使 用  arrange 函 数 创 建 的 数组 为 :\n',np.arange(0,1,0.1))
-----------------结果----------------------------
使用arange函数创建的数组为:[0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]

使用linspace函数创建数组

使用logspace函数创建等比数列

print('使用linspace函数创建的数组为:',np.linspace(0,1,12))
---------------------结果-------------------------
使用linspace函数创建的数组为:[0.      0.09090909 ... 1.     ]
=================================================
print('使用logspace函数创建的数组为:',np.logspace(0,2,20))
-------------------结果--------------------------
使用logspace函数创建的数组为:[1.    1.27427499  1.62377674..., 61.58482111 78.47599704 100.]

使用zeros函数创建数组(生成多维数组)

使用eye函数创建数组

print('使用zeros函数创建的数组为:',np.zeros((2,3)))
-------------------结果--------------------------
使用zeros函数创建的数组为:
[[0. 0. 0.]
[0. 0. 0.]]
 
print('使用eye函数创建的数组为:',np.eye(3))
-------------------结果--------------------------
使用eye函数创建的数组为:
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]

查看数组的数据类型

arr8 = np.array([3,4,5], dtype=np.float32) #修改数据类型
print(arr8)
print(arr8.dtype) #查看数据类型

arr8[0] = 1.2
print(arr8)
print(np.int32(arr8))  #转换数组的数据类型

生成随机数

无约束条件下生成随机数

生成服从均匀分布的随机数

print('生成的随机数组为:',np.random.random(100)) #无约束条件下的随机数  100表示生成100个
-------------------结果--------------------------
生成的随机数组为:[0.15343184 0.51581585
         0.07228451 ... 0.24418316
         0.92510545 0.57507965]

print('生成的随机数组为:\n',np.random.rand(10,5)) #生成指定shape的均匀分布随机数 (10,5) 表示生成10行5列的随机数
-------------------结果--------------------------
生成的随机数组为:
[[0.39830491 0.94011394 0.59974923 0.44453894 0.65451838]
...
[0.1468544 0.82972989 0.58011115 0.45157667 0.32422895]]

生成服从正态分布的随机数

生成给定上下范围的随机数,如创建一个最小值不低于2、最大值不高于10的2行5列数组

print('生成的随机数组为:\n',np.random.randn(10,5))
------------------------结果----------------------
生成的随机数组为:
[[-0.27500487 1.41711262 0.6635967 0.35486644 -0.26700703]]
...,
[-0.27500487 1.41711262 0.6635967 0.35486644 -0.26700703]

print('生成的随机数组为: \n',np.random.randn(10,5))
------------------------结果----------------------
生成的随机数组为:
[[-0.60571968 0.390349078 -1.63315513 0.02783885 -1.84139301]
 ...
 [-0.27500487 1.41711262 0.6635967 0.35486644 -0.26700703]]

数组的索引

  1. 一维数组的索引
arr = np.arange(10)
print('索引结果为:',arr[5])  #用整数作为下标可以获取数组中的某个元素
索引结果为:5
print('索引结果为:',arr[3:5]) #用范围作为下标获取数组的一个切片,包括arr[3]不包括arr[5]
索引结果为:[3 4]
print('索引结果为',arr[:5]) #省略开始下标,表示从arr[0]开始
索引结果为:[0 1 2 3 4]
print('索引结果为:',arr[-1]) #小标可以使用负数,-1表示从数组后往前数的第一个元素
索引结果为:9
  1. 多维数组的索引
arr = np.array([[1,2,3,4,5],[4,5,6,7,8],[7,8,9,10,11]])
print('创建的二维数组为:'[[1 2 3 4 5]
[4 5 6 7 8]                 
[7 8 9 10 11]])
print('索引结果为:',arr[0,3:5]) #索引第0行中第3和4列的元素
索引结果为:[4 5]

#索引第2和3行中第3~5列的元素
print('索引结果为:',arr[1:,2:])
索引结果为:[[6 7 8]
[9 10 11]]

print('索引结果为:',arr[:,2]) #索引第2列的元素

索引结果为: [3 6 9]
  1. 多维数组的索引

使用整数和布尔值索引访问数据

#从两个序列的对应位置取出两个整数来组成下标:arr[0,1],arr[1,2],arr[2,3]
print('索引结果为:',arr[[(0,1,2),(1,2,3)]])
索引结果为:[[4 6 7]
[7 9 10]]
mask = np.array([1,0,1],dtype = np.bool)
#mask是一个布尔数组,它索引第1、3行中第2列的元素
print('索引结果为:',arr[mask,2])
索引结果为:[3 9]

变换数组的形态

改变数组形状

arr = np.arange(12) #创建一维数组
print('创建的一维数组为:',arr)

创建的一维数组为:[0 1 2 3 4 5 6 7 8 9 10 11]
print('新的一维数组为:',arr.reshape(3,4)) #设置数组的形状

新的一维数组为:[[0 1 2 3]
[4 5 6 7]
[8 9 10 11]]

print('数组维度为:',arr.reshape(3,4).ndim)  #查看数组维度
数组维度为:2

使用ravel函数展平数组

arr = np.arange(12).reshape(3,4)
print('创建的二维数组为:',arr)

创建的二维数组为:
[[0 1 2 3]
 [4 5 6 7]
 [8 9 10 11]]
print('数组展平后为:',arr.ravel())

数组展平后为:[0 1 2 3 4 5 6 7 8 9 10 11]

使用flatten函数展平数组

print('数组展平为:',arr.flatten())  #横向展平
数组展平为:[0 1 2 3 4 5 6 7 8 9 10 11]

print('数组展平为:',arr.flatten('F')) #纵向展平

数组展平为:[0 4 8 1 5 9 2 6 10 3 7 11]

组合数组(数组的拼接)

  • 使用hstack函数实现数组横向组合:np.hstack((arr1,arr2))
  • 使用vstack函数实现数组纵向组合:np.vstack((arr1,arr2))
  • 使用concatenate函数实现数组横向组合:np.concatenate((arr1,arr2),axis = 1)
  • 使用concatenate函数实现数组纵向组合:np.concatenate((arr1,arr2),axis = 0)

切割数组

  • 使用hsplit函数实现数组横向分割:np.hsplit(arr1,2)
  • 使用vsplit函数实现数组纵向分割:np.vsplit(arr,2)
  • 使用split函数实现数组横向分割:np.split(arr,2,axis=1)
  • 使用split函数实现数组纵向分割:np.split(arr,2,axis=0)

创建NumPy矩阵与通用函数

创建NumPy矩阵

  • 使用mat函数创建矩阵:matr1 = np.mat(“1 2 3;4 5 6;7 8 9”)
  • 使用matrix函数创建矩阵:matr2 =np.matrix([[1,2,3],[4,5,6],[7,8,9]])
  • 使用bmat函数合成矩阵:np.bmat(“arr1 arr2;arr1 arr2”)
#矩阵转置
print(matrl.T)
#矩阵求逆
print(matrl.I)

认识ufunc函数

通用函数(universal function) ,是一种能够对数组中所有元素进行操作的函数。

  • 四则运算:加(+)、减(-)、乘(*)、除(/)、幂(**)。数组间的四则运算表示对每个数组中的元素分别进行四则运算,所以形状必须相同。
  • 比较运算:>、<、==、>=、<=、!=。比较运算返回的结果是一个布尔数组,每个元素为每个数组对应元素的比较结果。
  • 逻辑运算:np.any函数表示逻辑“or”,np.all函数表示逻辑“and”,运算结果返回布尔值。
#通用函数
arr1 = np.array([0.2,0.4,0.6]) #创建数组
arr2 = np.array([0.2,0.6,0.78])
list1 = [0.2,0.4,0.6] #创建列表 (列表不可直接进行运算)

print(arr1 + 1)  #数组加法
print(arr1 * 2)  #数组乘法
print(arr1 + arr2) #对应元素相加
print(arr1 * arr2) #对应元素相乘
print(arr1 > 0) #数组比较
print(arr1 > arr2) #数组对应元素比较

print(np.any(arr1 == 0.2)) #逻辑or(一真即真)
#结果
True

print(np.all(arr1 == 0.2)) #逻辑and(一假即假)
#结果
False

通用函数的广播机制

认识ufunc函数
ufunc函数的广播机制
  • 一维数组的广播机制

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EG1NXJNa-1628178748057)(E:\学习\笔记\数据分析与应用\一维数组_广播机制.png)]

  • 二维数组的广播机制

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vett1uRt-1628178748059)(E:\学习\笔记\数据分析与应用\二维数组_广播机制.png)]

#广播机制
arr3 = np.arange(1,13).reshape([4,3]) #reshape表示4行3列排序
arr4 = np.array([1,2,3])
arr5 = np.array([[1],[2],[3],[4]])
print(arr3)
print(arr4)
arr3 +arr4

print(arr5)
arr4 + arr5

利用NumPy进行统计分析

读写文件

NumPy文件读写主要有二进制的文件读写和文件列表形式的数据读写两种形式

  • sava函数是以二进制的格式保存数据。np.sava("…/tmp/save_arr",arr)
  • load函数是从二进制的文件中读取数据。np.load("…/tmp/save_arr.npy")
  • savez函数可以将多个数组保存到一个文件中。np.savez(’…/tmp/savez_arr’,arr1,arr2)
  • 存储时可以省略扩展名,但读取不能省略扩展名。
inport numpy as np
arr1 = np.arange(1,13).reshape([4,3])
arr2 = np.arange(1,13).reshape([3,4])
print(arr1)

np.save? #帮助说明
np.save('tmp/arr1.npy',arr1)  #保存数据

arr1_load = np.load('tmp/arr1.npy') #读取数据

np.savez('tmp/arr1&2.npz',arr1,arr2) #保存多个数组数据
arr1_2_load = np.load('tmp/arr1&2.npz') #读取多维数组数据
print(arr1_2_load) #查看内存信息
arr1_2_load.files  #.files是查看数据文件中有那些数据对象(名称)
arr1_2_load['arr_0'] #用字典的形式来访问多维数组具体数组对象

读写文件(读写txt文件)

  • savetxt函数是将数组写到分隔符隔开的文本文件中。
  • np.savetxt("…/tmp/arr.txt",arr,fmt="%d",delimiter=",")
  • loadtxt函数执行的是把文件加载到一个二维数组中。
  • np.loadtxt("…/tmp/arr.txt",delimiter=",")
  • genfromtxt函数面向的是结构化数组和缺失数据。
  • np.genfromtxt("…/tmp/arr.txt",delimiter=",")
#读写txt文件
np.savetxt('tmp/arr1.txt',arr1,delimiter=",") #保存数据 delimiter表示分隔符
np.loadtxt('tmp/arr1.txt',delimiter=",") #读取数据

使用数组进行简单统计分析

直接排序

  • sort函数是最常用的排序方法: arr.sort()
  • sort函数也可以指定一个axis参数,使得sort函数可以沿着指定轴对数据集进行排序。axis=1为沿横轴排序;axis=0为沿纵轴排序。

间接排序

  • argsort函数返回值为重新排序值的下标。arr。argsort()
  • lexsort函数返回值是按照最后一个传入数据排序的。np,lexsort((a,b,c))

去重与重复数据

  • 通过unique函数可以找出数组中的唯一值并返回已排序的结果。
  • np.tile(A,reps)
  • tile函数主要有两个参数,参数"A"指定重复的数组,参数"reps"指定重复的次数
  • numpy.repeat(a,repeats,axis=None)
  • repeat函数主要有三个参数,参数"a"是需要重复的数组元素,参数"repeats"是重复次数,参数"axis"指定沿着哪个轴进行重复,axis = 0表示按行进行元素重复;axis = 1表示重复。
  • 在两个函数的主要区别在于,tile函数是对数组进行重复操作,repeat函数是对数组中的每个元素进行重复操作。

常用的统计函数

当axis=0时,表示沿着纵轴计算。当axis=1时,表示沿着横轴计算。默认时计算一个总值。

函数说明
sum计算数组的和
mean计算数组均值
std计算数组标准查
var计算数组方差
min计算数组最小值
max计算数组最大值
argmin返回数组最小元素的索引
argmax返回数组最大元素的索引
cumsum计算所有元素的累计和
cumprod计算所有元素的累计积
#使用数组进行简单统计分析
arr3 = np.random.randint(1,10,(3,4))

arr3.sort(axis=0) #0纵1横对数组元素按大小进行排序
print(arr3)
arr3.argsort(axis=0) #返回排序后的下标

np.tile(arr3,2)  #对数组arr3复制2次
np.repeat(arr3,2,axis=1) #对数组元素arr3按照横向复制2次

arr3.mean()  #统计数组所有元素的均值
arr3.mean(axis=0)  #按列统计数组的均值

Matplotlib库

  • Matplotilb是Python中最常用的可视化工具之一,可以非常方便地创建海量类型的2D图表和一些基本的3D图表,可根据数据集(dataframe,series)自行定义x,y轴,绘制图形(线形图,柱状图,直方图,密度图,散步图等等),能够满足大部分需要。
  • matplotlib最早是为了可视化癫痫病人的脑皮层电图相关的信号而研发,因为在函数的设计上参考了matlab,所以叫做matplotlub。
  • 官方文档:https://matplotlib.org/
  • matplotlib中最基础的模块是pyplot

了解绘图基础语法与常用参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BlNoESdD-1628178748060)(E:\学习\笔记\数据分析与应用\图形示例.png)]

import numpy as np
import matplotlib.pyplot as plt

x= np.arange(0,1.1,0.1)
print(x)
plt.figure() #第一环节,创建画布
plt.plot(x,x**2) #第二环节,plot绘制折线图
plt.plot(x,x**4)
plt.xlim(0,1)  #限制x、y轴的范围
plt.ylim(0,1)
plt.title('lines')  #图形标题
plt.xlabel('x')  #x、y轴的标签
plt.ylabel('y')
pit.legend(['y=x^2',"y=x^4"])  #图例(多个图例需要用列表形式包括)

plt.savefig('tmp/examplt.png')
plt.show()  #第三环节,显示图形

基本流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jtL32dgI-1628178748061)(E:\学习\笔记\数据分析与应用\绘图流程.png)]

常用参数设置

掌握pyplot基础语法

1.创建画布与创建子图

第一部分主要作用时构建出一张空白的画布,并可以选择是否将整个画布划分为多个部分,方便在同一幅图上绘制多个图形的情况。最简单的绘图可以省略第一部分,而后直接在默认的画布上进行图形绘制。

函数名称函数作用
plt.figure创建一个空白画布,可以指定画布大小,像素。
figure.add_subplot创建并选中子图,可以指定子图的行数,列数,与选中图片编号。
2. 添加画布内容

第二部分时绘图的主体部分。其中添加标题,坐标轴名称,绘制图形等步骤是并列的,没有先后顺序,可以先绘制图形,也可以先添加各类标签。但是添加图例一定要在绘制图形之后。

函数名称函数作用
plt.title在当前图形中添加标题,可以指定标题的名称、位置、颜色、字体大小等参数。
plt.xlabel在当前图形中添加x轴名称,可以指定位置、颜色、字体大小等参数。
plt.ylabel在当前图形中添加y轴名称,可以指定位置、颜色、字体大小等参数。
plt.xlim指定当前图形x轴的范围,只能确定一个数值区间,而无法使用字符串标识。
plt.ylim指定当前图形y轴的范围,只能确定一个数值区间,而无法使用字符串标识。
plt.xticks指定x轴刻度的数目与取值。
plt.yticks指定y轴刻度的数目与取值
pit.legend指定当前图形的图例,可以指定图例的大小、位置、标签。
3. 保存与展示图形

第三部分主要用于保存和显示图形。

函数名称函数作用
plt.savafig保存绘制的图片,可以指定图片的分辨率,边缘的颜色等参数
plt.show在本机显示图形。

绘制散点图

  • 散点图(scatter diagram)又称为散点分布图,是以一个特征为横坐标,另一个特征为纵坐标,利用坐标点(散点)的分布形态反映特征的统计关系的一种图形。
  • 值是由在图表中的位置表示,类别是由图表中的不同标记表示,通常用于比较跨类别的数据。

scatter函数

matplotlib.pyplot.scatter(x,y,s=None,marker=None,alpha=None,**kwargs)

常用参数及说明如下表所示
参数名称说明
x,y接受array.表示x轴和y轴对应的数据。无默认。
s接受数值或一维的array。指定点的大小,若传入一维array则表示每一个点的大小。默认为None。
c接收颜色或者一维的array。指定点的颜色,若传入一维array则表示每个点的颜色。默认为None
marker接收特定string。表示绘制的点的类型。默认为None。
alpha接收0-1的小数。表示点的透明度。默认为None。
import numpy as np
import matplotlib.pyplot as plt

data = np.load('data/国民经济核算季度数据.npz',akkow_piackle=True)

print(data.files)  #列名称-值
columns = data['columns']
values =  data['values']
print(columns)
print(values)

data['values'].shape #查看多少行多少列

#绘制散点图
plt.figure(figsize=(8,6))        #设置画布为8:6大小
plt.rcParams['font.sans-serif'] = 'SimHei' 设置中文显示
plt.rcParams['axes.unicode_minus'] = False

plt.scatter(values[:,1],values[:,3],marker='o')
plt.scatter(values[:,1],values[:,4],marker='*')
plt.scatter(values[:,1],values[:,5],marker='D')

plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)  #range表示取值范围   xticks(a,b) a表示刻度 b表示值    rotation表示转换一个角度
plt.legend(['第一产业生产总值''第二产业生产总值','第三产业生产总值'])
plt.title('2000-2017年各生产总值散点图')
plt.ylabel('生产总值(亿元)')

plt.savefig('tmp/2000-2017年各产业生产总值散点图.png')
plt.show()

绘制折线图

plot函数

matplotlib.pyplot.plot(*args,**kwargs)

plot函数在官方文档的语法中只要求填入不定长参数,实际可以填入的主要参数主要如下。

参数名称说明
x,y接收array。表示x轴和y轴对应的数据。无默认。
color接收特定string。指定线条的颜色。默认为None
linestyle接收特定string。指定线条类型。默认为"-"。
marker接收特定string。表示绘制的点的类型。默认为None。
alpha接收0-1的小数。表示点的透明度。默认为None。
#绘制散点图
plt.figure(figsize=(8,6))        #设置画布为8:6大小
plt.rcParams['font.sans-serif'] = 'SimHei' 设置中文显示
plt.rcParams['axes.unicode_minus'] = False

plt.plot(values[:,1],values[:,3],linestyle='--')
plt.plot(values[:,1],values[:,4],marker='*')
plt.plot(values[:,1],values[:,5],marker='D')

plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)  #range表示取值范围   xticks(a,b) a表示刻度 b表示值    rotation表示转换一个角度
plt.legend(['第一产业生产总值''第二产业生产总值','第三产业生产总值'])
plt.title('2000-2017年各生产总值散点图')
plt.ylabel('生产总值(亿元)')

plt.savefig('tmp/2000-2017年各产业生产总值散点图.png')
plt.show()

绘制直方图

  • 直方图(Histogram)又称质量分布图,是统计报告图的一种,由一系列高度不等的纵向条纹或线段表示数据公布的情况,一般用横轴表示数据所属类别,纵轴表示数量或者占比。
  • 用直方图可以比较直观地看出产品质量特征的分布状态,便于判断其总体质量分布情况。直方图可以发现分布表无法发现的数据模式、样本的频率分布和总体的分布。

bar函数

matplotlib.pyplot.bar(left,  height,  width = 0.8, bottom = None, hold = None, data = None, **kwargs)
常用参数及说明如下表所示。
参数名称说明
left接收array。表示x轴数据。无默认。
height接收array。表示x轴所代表数据的数量。无默认。
width接收0-1之间的float。指定直方图宽带。默认为0.8
color接收特定string或者包含颜色字符串的array.表示直方图颜色。默认为None。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ivdxTXJh-1628178748063)(E:\学习\笔记\数据分析与应用\直方图.png)]

import numpy as np
import matplotlib.pyplot as plt

data = np.load('data/国民经济核算季度数据.npz',akkow_piackle=True)

print(data.files)  #列名称-值
columns = data['columns']
values =  data['values']
print(columns)
print(values)

data['values'].shape #查看多少行多少列


values[-1,3:6]

#绘制直方图
plt.figure(figsize=(8,6))        #设置画布为8:6大小
plt.rcParams['font.sans-serif'] = 'SimHei' 设置中文显示
plt.rcParams['axes.unicode_minus'] = False


plt.bar(columns[3:6],values[-1,3:6],color='r',width=0.6)
plt.title('2017年第一季度各产业生产总值直方图')
plt.ylabel('生产总值(亿元)')

my_height = values[-1,3:6]
for i in range(len(my_height)):   			    plt.text(i,my_height[i]+500,my_height[i],va='bottom',ha='center')   #va='bottom'表示在坐标顶部  ha='center'表示居中
    
plt.savefig('tmp/2017年第一季度各产业生产总值直方图.png')
plt.show()

绘制饼图

  • 饼图(Pie Graph)是将各项的大小与各项总和的比例显示在一张"饼"中,以"饼"的大小来确定每一项的占比。
  • 饼图可以比较清楚地反映出部分与部分、部分与整体之间的比例关系,易于显示每组数据相对于总数的大小,而且显现方式直观。

pie函数

matplotlib.pyplot.pie(x,explode=None,colors=None,autopct=None,pctdistance=0.6,shadow=False,labeldistance=1.1,startangle=None,radius=None,...)
常用参数及说明如下表所示。
参数名称说明参数名称说明
x接收array。表示用于绘制饼图的数据。无默认。autopct接收特定string。指定数值的显示方式。默认为None。
explode接收array。表示指定项离饼图圆心为n个半径。默认为None。pctdistance接收float。指定每一项的比例和距离饼图圆心n个半径。默认为0.6
labels接收array。指定每一项的名称。默认为None。labeldistance接收float。指定每一项的名称和距离饼图圆心多少个半径。默认为1.1。
color接收特定string或者包含颜色字符串的array。表示饼图颜色。默认为None。radius接收float。表示饼图的半径。默认为1。
#绘制直方图
plt.figure(figsize=(6,6))        #设置画布为8:6大小
plt.rcParams['font.sans-serif'] = 'SimHei' 设置中文显示
plt.rcParams['axes.unicode_minus'] = False

labels = ['第一产业''第二产业''第三产业']

plt.pie(values[-1,3:6],explode=[0.01,0.01,0.01],labels=labels,autopct='%1.1f%%')#保留小数点后一位数值
plt.title('2017年第一季度各产业生产总值饼图')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rmg6vdjM-1628178748064)(E:\学习\笔记\数据分析与应用\饼图.png)]

绘制箱线图

  • 箱线图(boxplot)也称箱线图,其绘制需使用常用的统计量,能提供有关数据位置和分散情况的关键信息,尤其在比较不同特征时,更可表现其分散程度差异。
  • 箱线图利用数据中的五个统计量(下边缘、下四分位数、中位数、上四分位数和上边缘)来描述数据,它也可以粗略地看出数据是否具有对称性、分布的分散程度等信息。特别可以用于对几个样本的比较。

boxplot函数

matplotlib.pyplot.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, 
patch_artist=None,meanline=None, labels=None,)
参数名称说明参数名称说明
x接收array。表示用于绘制箱线图的 数据。无默认。positions接收array。表示图形位置。默认 为None。
notch接收boolean。表示中间箱体是否有 缺口。默认为None。widths接收scalar或者array。表示每个 箱体的宽度。默认为None。
sym接收特定sting。指定异常点形状。 默认为None。labels接收array。指定每一个箱线图的 标签。默认为None。
vert接收boolean。表示图形是横向纵向 或者横向。默认为None。meanline接收boolean。表示是否显示均值 线。默认为False。

它也可以粗略地看出数据是否具有对称性、分布的分散程度等信息。特别可以用于对几个样本的比较。

boxplot函数

matplotlib.pyplot.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, 
patch_artist=None,meanline=None, labels=None,)
参数名称说明参数名称说明
x接收array。表示用于绘制箱线图的 数据。无默认。positions接收array。表示图形位置。默认 为None。
notch接收boolean。表示中间箱体是否有 缺口。默认为None。widths接收scalar或者array。表示每个 箱体的宽度。默认为None。
sym接收特定sting。指定异常点形状。 默认为None。labels接收array。指定每一个箱线图的 标签。默认为None。
vert接收boolean。表示图形是横向纵向 或者横向。默认为None。meanline接收boolean。表示是否显示均值 线。默认为False。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

燕尾十三

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值