利用Python做数据可视化
数据可视化
会用到的包Numpy,Panda,Matplotlib
Nunpy的使用
Numpy 是一个开源的python科学基础库,包含:
强大的N维数组对象,广播功能,整合c/c++代码的工具,线性代数,傅里叶变化等功能;
# 引入 numpy
import numpy as np
# 初始化数组
a = np.array([1, 2, 3, 4, 5])
# 0 矩阵
b = np.zeros((2, 3))
# 单位矩阵
np.ones((3, 3))
# N 截对角线都为1 其余为 0的矩阵
np.eye(5)
# 随机数范围 0 -10 5X2 矩阵
np.random.randint(0, 10, (5, 2))
array([ 0, 2, 5, 7, 10], dtype=int8)
# step 0-10 共5个
np.linspace(0, 10, 5, dtype=int)
array([ 0, 2, 5, 7, 10], dtype=int8)
# 等差数列
np.arange(0, 10, 2)
array([0, 2, 4, 6, 8])
N维数组对象:ndarray
由两部分构成:实际数据,描述数据的元数(数据维数,数据类型)
ndarry 对象的属性
.ndim .shape .size .dtype .itemsize
# 自定矩阵
np.array([[1, 2, 3, 4, 5]])
# 3 * 3 矩阵
np.ndarray((3, 3))
ndarry:的元素类型 | |
---|---|
bool | True or False |
intc | c中int32 或 int64 |
intp | 与c 中ssize_t一致 |
int8 | [-128,127] |
int16 | [-32768,32767] |
int32 | [-231,231-1] |
int64 | [-263,263-1] |
uint8 | [0,225] |
uint16 | [0,65535] |
uint32 | [0,2^32-1] |
uint64 | [0,2^64-1] |
float16 | 16位单精度浮点 |
float32 | 32位单精度浮点 |
float64 | 64位单精度浮点 |
虚数表示 complex64 complex128
ndarry 的变换
.reshape
.resize
.swapaxes()
.flatten()
a = np.array([[1, 2, 3], [4, 5, 6]])
# 2*3 矩阵 --> 3*2
a.reshape((3, 2))
b = np.ones((2, 3, 4))
c = b.flatten()
数组的索引和切片
c = np.array([4, 6, 7, 9, 3])
# 类似于数组的操作
print(c[0], c[1])
4 6
# 从0 开始到5 步长 2
print(c[0:5:2])
[4 7 3]
# 你也可以从末位开始 倒数第5位结束
print(c[:-5: -2])
[3 7]
Ndarry进行运算
a1 = np.arange(24).reshape((3, 2, 4))
a1.mean()
Numpy中运算函数 | |
---|---|
np.abs(),np.fabs(x) | |
np.sqrt() | |
np.square() | |
np.log,np.log10(),np.log2() | |
np.ceil() np.floor() | |
np.exp() | |
np.sign() | |
np.modf() | |
np.rint() |
Numpy中的统计函数 | 说明 |
---|---|
np.mean | 给定axis轴,求期望 |
np.sum() | 给定axis轴, 求总和 |
np.min, np.max | 求最大 最小 |
np.median | 求中位数 |
np.average | 给定axis轴,求加权平均 |
np.std | 给定axis轴,求标准差 |
np.var | 给定axis轴,求方差 |
np.ptp | 最大最小的差 |
np.uravel_index | 根据shape将一维下标index转换为多维下标 |
np.argmin,np.argmax | 计算最大最小值的降一维后下标 |
梯度函数 | |
---|---|
np.gradient() | 计算数组中元素的梯度,当f多维时返回多维梯度 |
广播功能
定义:在numpy中当两个数组型状不相同的时候,我们可以通过扩展数组来让他们相加,相减,相乘
让我们来看一个例子:
arr1 = np.array([[0, 0, 0], [1, 1, 1], [2, 2, 2], [3, 3, 3]]) #shape = (4,3)
arr2 = np.array([[1], [2], [3], [4]])
print(arr1 + arr2)
[[1 1 1][3 3 3][5 5 5][7 7 7]]
如果满足以下条件之一,那么数组被称为可广播的。
- 数组拥有相同形状。数组拥有相同的维数,且某一个或多个维度长度为 1 。
- 数组拥有极少的维度,可以在其前面追加长度为 1 的维度,使上述条件成立
广播的原则
- 原则 1:如果两个数组的维度数不相同,那么小维度数组的形状将会在最左边补 1。
- 原则 2:如果两个数组的形状在任何一个维度上都不匹配,那么数组的形状会沿着维度 为 1 的维度扩展以匹配另外一个数组的形状。
- 原则 3:如果两个数组的形状在任何一个维度上都不匹配并且没有任何一个维度等于 1, 那么会引发异常
Numpy读取文件
一维数组的读取
1.存文件 np.savetxt()
参数说明:
frame
array
fmt
delimiter 分隔符
2.读文件 np.loadtxt()
参数说明:
frame
dtype
delimiter 分隔符
unpack二维数组的读取
1.存文件 a.tofile()
2.读文件 np.fromfile()除此之外panda也提供了读取文件的方法
Numpy的应用
from PIL import Image
import numpy as np#读取一个图片
a = np.asarray(Image.open('./test.jpg').convert('L')).astype('float')depth = 10. # (0-100)
grad = np.gradient(a) # 取图像灰度的梯度值
grad_x, grad_y = grad # 分别取横纵图像梯度值
grad_x = grad_x * depth / 100.
grad_y = grad_y * depth / 100.
A = np.sqrt(grad_x ** 2 + grad_y ** 2 + 1.)
uni_x = grad_x / A
uni_y = grad_y / A
uni_z = 1. / Avec_el = np.pi / 2.2 # 光源的俯视角度,弧度值
vec_az = np.pi / 4. # 光源的方位角度,弧度值
dx = np.cos(vec_el) * np.cos(vec_az) # 光源对x 轴的影响
dy = np.cos(vec_el) * np.sin(vec_az) # 光源对y 轴的影响
dz = np.sin(vec_el) # 光源对z 轴的影响b = 255 * (dx * uni_x + dy * uni_y + dz * uni_z) # 光源归一化
b = b.clip(0, 255)im = Image.fromarray(b.astype('uint8')) # 重构图像
im.save('./HD.jpg')
利用Python做数据可视化相关推荐
- python代码示例图形-纯干货:手把手教你用Python做数据可视化(附代码)
原标题:纯干货:手把手教你用Python做数据可视化(附代码) 导读:制作提供信息的可视化(有时称为绘图)是数据分析中的最重要任务之一.可视化可能是探索过程的一部分,例如,帮助识别异常值或所需的数据转 ...
- python画图代码大全-纯干货:手把手教你用Python做数据可视化(附代码)
原标题:纯干货:手把手教你用Python做数据可视化(附代码) 导读:制作提供信息的可视化(有时称为绘图)是数据分析中的最重要任务之一.可视化可能是探索过程的一部分,例如,帮助识别异常值或所需的数据转 ...
- 利用python数据可视化_想用Python做数据可视化?先迈过这个“坎”
文丨Chris Moffitt 编译丨姜瑞琪 触脉咨询数据分析师 用过python的人都会面临一个问题,尤其是初学者:我应该选哪个来实现数据可视化? 面对众多的选项,要弄清楚什么时候使用哪个的问题没那 ...
- python做数据可视化视频_如何制作数据可视化视频?
超干货!超多鲜为人知的宝藏可视化工具! 那些酷炫的可视化视频是怎么制作的?数据控结合具体案例为你一一揭秘! !!建议先码后看!跟着数据控轻松学会可视化! 1 堪比科幻电影!这样的数据大屏太酷啦!Eas ...
- python运行excel高级筛选怎么用_懂点EXCEL就行!教你利用Python做数据筛选(上)...
前言 Python的数据清洗功能有多厉害,相信不用我说大家都知道了,寥寥几行代码便可以把一份杂乱无章的表格给处理的干干净净.但是python也是不容易入门的,毕竟编程语言要理解和精通也是要花不少功夫的 ...
- python数据处理可以做什么菜_厌倦了EXCEL想玩点新花样?教你利用Python做数据筛选(下)...
前言 回顾一下上次的案例模型,我们知道了只要写3行代码,就可以利用python对EXCEL数据做简单的筛选,说明了python是一门非常简单和实用的数据分析工具.前面学过的这几句简单的语言,不知道你们 ...
- python excel筛选统计_懂点EXCEL就行!教你利用Python做数据筛选(上)
前言 Python的数据清洗功能有多厉害,相信不用我说大家都知道了,寥寥几行代码便可以把一份杂乱无章的表格给处理的干干净净.但是python也是不容易入门的,毕竟编程语言要理解和精通也是要花不少功夫的 ...
- python做excel数据条件_懂点EXCEL就行!教你利用Python做数据筛选(上)
前言 Python的数据清洗功能有多厉害,相信不用我说大家都知道了,寥寥几行代码便可以把一份杂乱无章的表格给处理的干干净净.但是python也是不容易入门的,毕竟编程语言要理解和精通也是要花不少功夫的 ...
- python折线图样式_011 利用Python进行数据可视化
本文梳理了数据可数化的基本套路及对应函数的使用方法. 1- 数据可视化是什么 借助图形来清晰有效表达信息的方式称为可视化 2 - 数据可视化的基本流程 2.1 整理数据 2.2 明确目的 2.3 寻找 ...
最新文章
- 最后1周 | 高级转录组分析和R语言数据可视化第十一期 (报名线上课还可免费参加线下课)...
- FACEGOOD 推出10万点人脸关键点跟踪,重新定义工业级人脸3D重建
- 美卫星拍最详细3D地图 覆盖地球99%大陆
- 成熟的男人思考的东西
- Ubuntu 下面部署Django 项目
- python3 仿写PHP gzip解压缩
- ctypes python_Python ctypes 使用总结
- 深夜,先给自己记录个东西
- C# DataSet转JSON
- asp.net 添加成功弹出个div提示_IOS12免越狱一键修改微信提示音
- Qomo OpenProject Field Test 1发布!
- 常见问题4:文本不能选择 效果
- 自己动手修理单击变双击的鼠标
- 内网远程桌面控制软件Radmin
- html网页简单实现图片轮播效果,CSS3简单实现图片切换轮播
- PWM原理 PWM频率与占空比详解
- c语言制作用户登录界面,【C语言开发】登陆界面
- 酷睿i3、i5、i7 一代 二代 区别对比
- Excel 2010 VBA 入门 069 工作表事件之worksheet_selectionchange
- 让我帮你百度一下吧--精简版Github源码