matplotlib是由John D.Hunter开发的一款强大的Python数据可视化绘图模块。Hunter从事数据分析与可视化的工作多年,他一直使用的是Matlab工具编写程序。随着程序难度越来越大,Hunter发现Matlab暴露出很多的缺点,例如:
数据库交互、复杂的数据结构等
。
于是Hunter决定使用Python语言编写一个数据可视化的模块,弥补Matlab的缺点,所以matplotlib自此诞生。
matplotlib源于美国的MathWorks公司出品的商业数学软件Matlab,但是又与他不同,主要有以下几个优点:
- 开源免费的
- matplotlib属于Python的扩展模块,继承了Python面向对象、易读、可维护性好等特点
- matplotlib可以借助于Python丰富的第三方模块嵌入到用户界面应用程序,或嵌入到网页中。
③pandas
pandas是一个居于numpy的数据分析模块,它最初由AQR Capital Management于2008年4月开发,并于2009年年底发行开源版本,目前专注于Python数据包开发的PyData团队继续开发和维护。
pandas开发之处被作为金融界的数据分析工具,之后又被广泛应用到了学术和其他商用领域,包括神经科学、经济学、统计学、广告、网络分析等。
pandas中纳入了大量的库和标准数据模型。pandas有以下特点:
- 包含一个快速高效、具有默认和自定义索引的DataForm对象
- 支持多种格式文件的读取和写入
- 智能处理数据对齐和缺失数据
- 自由删除或插入列
- 按照数据分组进行聚合和交换
- 高性能的数据合并和连接
- 生成可视化图表
- 时间序列功能
matplotlib是最出色的绘图库,它可以于numpy一起使用实现数据可视化。
pandas建立于numpy之上,功能十分强大,不仅可以灵活地处理数据,而且可以实现数据可视化。这些模块需要安装
这里的IDE我的是:PyCharm
点击File-->settings-->Project-->Python Interpreter
或在终端界面输入命令行:
pip版本过低无法下载 更新pip
python -m pip install --upgrade pip
python -m pip install --user numpy matplotlib pandas
numpy之数组对象ndarray
首先介绍numpy中包含一个多维数组对象,也就是ndarray对象,该对象具有矢量算术能力和复杂的广播能力,常用于科学计算。
ndarray对象中的元素可以通过索引访问,索引从0开始。
ndarray对象的创建有很多种方式,首先介绍该对象有哪些函数
| 函数 | 说明 |
| — | — |
| np.array(object) | 利用Python中列表或元组创建数组 |
| np.zeros((m,n)) | 创建一个m行,n列且元素均为0的数组 |
| np.ones((m,n)) | 创建一个m行,n列且元素均为1的数组 |
| np.empty((m,n)) | 创建一个m行,n列且不包含初始项的数组 |
| np.arange(x,y,i) | 创建一个由x到y且步长为i的数组 |
| np.linspace(x,y,n) | 创建一个由x到y且等分成n个元素的数组 |
| np.random.rand(m,n) | 创建一个m行n列且元素为随机值的数组 |
#1.导入numpy模块 并起别名
import numpy as np
'''
通过arange函数可以创建一个等差数组
例如 1 到 16 等差为2的整数
'''
#2.创建一个等差数组
array = np.arange(1,16,2)
print(array)
数组创建好以后便可以查看它的一些基本属性,属性说明如下:
- ndarray.ndim : 数组的维度
- ndarray.shape : 表示数组各维度的大小的整数元组。例如: 一个n行m列的数组 它的shape属性为(n,m)
- ndarray.size : 数组元素的总个数
- ndarray.dtype : 数组元素的数据类型
- ndarray.itemsize : 数组中每个元素的字节大小
import numpy as np
array = np.array([1,3,5]) #创建一维数组
print(array)
#1.显示数组维度
print(array.ndim)
#2.打印数组在每个维度上的大小
print(array.shape)
#3.打印数组的总元素
print(array.size)
print("-"*50)
array2 = np.array([[1,3,5],[2,4,6]]) #创建二维数组
print(array2)
#数组维度
print(array2.ndim)
#数组每个维度的大小
print(array2.shape)
#数组中的元素个数
print(array2.size)
numpy的基本操作
ndarray对象提供了一些可以简单快速修改数组基础形状的属性和方法。
例如,将3行4列的二维数组转换成6行2列的二维数组。
现在我们来介绍这些属性和方法
| 属性 | 方法 | 说明 |
| — | — | — |
| ndarray.T | | 对数组进行轴对换,不改变数组本身 |
| | ndarray.reshape(n,m) | 不改变数组ndarray,返回一个形状为(n,m)的数组 |
| | ndarray.resize(new_shape) | 直接改变数组本身 |
| | ndarray.ravel() | 对数组进行降维,返回数组的一个视图 |
| | ndarray.swaoaxes(axis1,axis2) | 对数组的任意两个维度进行调换 |
| | ndarray.transpose() | 不改变数组,返回置换后的数组 |
#1.导入numpy模块
import numpy as np
#2.基本操作
arr = np.array([[1,2,3],[4,5,6]]) #创建2行3列的数组
print(arr)
new_arr = arr.reshape((3,2)) #返回维度为(3,2)的数组 3行2列
print(new_arr)
arr2 = arr.ravel() #降维打击 -- 二维降成一维数组
print(arr2)
print(arr.T) #数组进行轴交换
print("-"*50)
#3.numpy数组支持索引和切片操作
arr = np.arange(1,9).reshape((4,2)) #生成4行2列的数组
print(arr)
#3.1获取第2行的数据
print(arr[1])
#3.2切片操作 获取第1行 到 第3行的数据
print(arr[0:3]) #半闭半开区间 [0,3)
======================================================================
数据可视化,是关于数据视觉表现形式的科学技术研究。其中,这种数据的视觉表现形式被定义为,一种以某种概要形式抽提出来的信息,包括相应信息单位的各种属性和变量。
它是一个处于不断演变之中的概念,其边界在不断地扩大。主要指的是技术上较为高级的技术方法,而这些技术方法允许利用图形、图像处理、计算机视觉以及用户界面,通过表达、建模以及对立体、表面、属性以及动画的显示,对数据加以可视化解释。与立体建模之类的特殊技术方法相比,数据可视化所涵盖的技术方法要广泛得多。
随着数据仓库技术、网络技术、电子商务技术的发展,可视化涵盖了更广泛的内容,并产生数据可视化的概念。
人话就是: 将大量数据以图表的形式呈现
matplotlib是一个强大的绘图工具,提供了多种输出的格式,可以轻松帮助开发人员构建自己所需的图形。
其中matplotlib提供了一个子模块pyplot
,该模块封装了Matlab命令时的绘图函数,更加诠释了面向对象语言的优势。
引入模块操作
import matplotlib.pyplot as plt
后续将以plt代替
首先介绍pyplot模块中的绘图区域提供的函数。
| 函数 | 说明 |
| — | — |
| plt.figure(figsize=None,facecolor=None) | 创建绘图区域 |
| plt.axes(rect,projection,axisbg) | 创建坐标系风格的子绘图区域 |
| plt.subplot(nrows,ncols,index) | 在当前绘图区中创建一个子绘图区域 |
| olt.subplots(nrows,ncols,index) | 在当前绘图区中创建多个子绘图区域 |
#1.引入模块
import matplotlib.pyplot as plt
#2.通过figure() 可以创建 Figure类对象 该对象代表新的绘图区域
plt.figure(figsize=(10,6),facecolor='green') #绘制尺寸为 10*6的绿色绘图区域 宽度和高度以英寸为单位
plt.show() # 显示绘图区域
这个时候就显示出绘图区域了,要想生活过得去,必须头上来点绿
Figure对象允许将整个绘图区划分为若干个子绘图区域,每个子绘图区域中都对应着唯一的Axes对象,该对象具有属于自己的坐标。
使用axes函数就可以创建一个Axes对象
#1.引入模块
import matplotlib.pyplot as plt
'''
参数详解:
rect参数表示坐标系与整个绘图区域的关系 取值可以为 left bottom width height
默认范围都是[0,1]
projection参数表示坐标轴的投影类型
facecolor 参数 代表着背景色 默认white白色
'''
plt.axes([0.1,0.5,0.7,0.3])
plt.show() #显示绘图区域
效果如下
subplot(nrows,ncols,index)
函数会先将整个绘图区域 等分为:
nrows(行) * ncols(列)的矩阵区域,然后按照先行后列的计算方式对每个子区域进行编号。
编号默认从1开始,之后在index的位置上生成一个坐标系。
#1.引入模块
import matplotlib.pyplot as plt
plt.subplots(2,2) #生成两行两列的绘图子区域
plt.show() #显示绘图区域
3.pyplot之图表与风格控制
matplotlib试图将简单的事情变得更简单,让无法实现的事情得以实现,仅仅几行代表就可以生成图标。
例如:直方图、条形图、散点图等。
现在我们就来介绍pyplot模块的绘图函数
| 函数 | 说明 |
| — | — |
| plt.plot(x,y) | 绘制折线图 |
最后
对于很多Java工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。
整理的这些资料希望对Java开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。
再分享一波我的Java面试真题+视频学习详解+技能进阶书籍
3.pyplot之图表与风格控制
matplotlib试图将简单的事情变得更简单,让无法实现的事情得以实现,仅仅几行代表就可以生成图标。
例如:直方图、条形图、散点图等。
现在我们就来介绍pyplot模块的绘图函数
| 函数 | 说明 |
| — | — |
| plt.plot(x,y) | 绘制折线图 |
最后
对于很多Java工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。
整理的这些资料希望对Java开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。
再分享一波我的Java面试真题+视频学习详解+技能进阶书籍
[外链图片转存中…(img-EOE23uu3-1714483822055)]