Python数据分析与展示[第一周]

ipython 中的问号

获得相关的描述信息

%run 系统文件

执行某一个文件

ipython的模式命令  

%magic 显示所有的魔术命令

%hist    命令历史输入信息

%pdb    异常发生后自动进入调试器

%reset  删除当前命名空间中的全部变量或名称

%who   显示Ipython 当前命名空间中的已经定义的变量

%time statemnent 给出代码执行时间

%timeit statement 多次实行代码,计算平均执行时间

基本读取数据的方法

维度:数据的组织形式

一维数据 列表 数组

一组数据的结构 列表中 数据类型可以不同,数组类型相同

二位数据 多个一维数据的组合形式

多维数据 在性维度上的扩展形成

高维数据 字典

一位数据 列表(有序) 集合(无序)

高维数据 字典形式或数据表示格式(json xml yaml)

numpy

np.ndarray

import numpy as np

使一维向量像变量 

一个维度数据类型往往相同 节省内存和时间

ndarray 

实际数据

描述数据的元数据

下表从0开始

轴axis 数据的维度

秩rank 轴的数量

ndarray 对象的属性

.ndim 秩轴的数量 或 维度的数量 

.shape 对象的尺度 n行m列

.size   对象元素的个数

.dtype 对象的元素类型

.itemsize 为各元素的大小以字节为单位

ndarray的元素类型

bool      

intc 32或64 

int p  用于索引的整数 与c中的 sszie_t 一致 int32 或 int64

int8 int16 int32 int64

uint8-16-32-64

float16-32-64/

complex64           实部虚部都是32位浮点数类型

complex128         实部虚部都是64位浮点数类型

当每一个元素行传不相同的时候 非同质对象 尽量避免使用

生成ndarray 的方法 

1从列表元组中创建

np.array(     ,dtype=np.float32) 可以指定类型

2使用函数创建

np.arange()  元素从0到n-1

np.ones(shape)     根据shape 生成一个全1的类型,shape 是一个元组类型

np.zeros(shape)    同上

np.full(shape,val)        生成权威val的

np.eye(n)   n阶的单位矩阵

np.ones_like(a) 形状相似

np.zeros_like(a)

np.zeros_like(a,val)

np.linspace(1,10,4, endpoint=False) 起始位置 种质元素 包含几个元素

np.logspace(1,2,base=4)  4^1 - 4^2 的等比数列

np.concatenate((a,b)) 将两个nparray合并

ndarray的方法

.reshape(shape) 不改变数组元素,返回一个shape形状的数组,原数组不变

.resize(shape)    修改原数组(原数组改变)   resize 不接受负数(-1) reshape 可以

.swapaxes(ax1,ax2) 对n维中的两个维度进行调换

.flatten()               对数组进行降维,返回一个一维数组 ,原数组不变

ndarray的类型变换 

new_a=a.astype(new_type)  // np.int 具体是那种类型有py自行决定

(不改变原数据)创建新的数组,拷贝

数组转列表 

.tolist()

//慢得多

数组操作 索引切片

a[1:4:2]    开始编号:终止编号:步长

不含终值

a[0,1,2] 这是可以的

a[-1,-2,-3]这是表示从右向左的索引方式

a[:,1,-3]

a[:,1:3,:]

a[:,:,::2] 最后一个维度以2为步长

ndarray的运算

标量运算

1数组中的每一个元素都与之进行运算

a=a/a.mean()

标量元素

np.abs(x) 

np.fabs()

np.sqrt()

np.squar()

np.log() np.log10() np.log2()

np.ceil() np.floor() 

np.rint() 四舍五入

np.modf() 将数组的小数和整数分别以两个独立的数组形式返回

np.cos cosh sin sinh tan tanh 

np.exp()

np.sign()

+-*/**

np.maximum(x,y)  np.fmax() 

np.minimum(x,y)   np.fmin() 求对应的最大值最小值

np.mod(x,y)   元素及的模运算

np.copysign(x,y)   将y元素的符号复制给对应数组x中的对应元素

><==!=产生bool型的数组

数据的读取 csv

写入csv 

np.savetxt(frame,array,fmt='%.18e',delimiter=None)

frame 文件字符串或产生器,可以使.gz或.bz2的压缩文件

array  要储存的数组

fmt 写入文件的格式 

delimiter 分割字符串默认是任何空格(更改成,才是csv文件)

例:

np.savetxt('a.csv',a,fmt=‘%d',delimiter=',')

np.loadtxt(frame,dtype=np.float,delimiter=None,unpack=False)

frame 读入的文件 ,也可以是压缩文件.gz .bz2 

dtype 数据的类型  np.float/np.int 

delimiter  分割字符串 默认是空格

unpack    如果True 读入属性将分别写入不同的变量

例:

b=np.loadtxt("a.csv",demiliter=',')

局限性

只能存取读取一维和二维数据

多维数据的存取

np.一些方法

np.tofile(frame ,sep='',format='%s')

frame 文件 字符串 

sep 分割字符不给的话就是二进制写入

format 存储存储的格式

np.fromfile(frame ,sep='',dtype=float,count=-1)

frame 文件字符串

dtype 读取的数据累心和

count 读入的元素个数 -1 表示读入整个文件

sep空为二进制

例:

 a.tofile("b.dat",sep='',format='%d')

c=np.fromfile('b.dat',dtype=np.int,sep='').reshape(10,5,2)

存入的是一个无维度信息的数据

读出的是一维数组 需要人为的更改维度信息

tofile 和 fromfile 需要相结合使用

通过元数据文件来储存额外的信息

np的便捷文件存取

np.save(fname,array)  

frame 以npy为扩展名 压缩扩展名为npz 

array  数组变量 

np.load(fname) 

frame 文件名格式同上

numpy的随机函数

 np.radom.*

.rand(d0,d1,...,dn) 【0-1)之前的浮点数均匀分布

.randn(d0,d1,...dn) 根据d0-dn 创建随机数数组,标准正态分布 //这还比较奇怪,居然不是接受一个shape 

.randint(low,[,high,shape])根据shaoe 创建随机整数或证书驻足 范围是low,high ,均匀分布

.seed(s) 随机数种子  s 是给定的种子值

.shuffle(a)  按照数组a的第一轴进行随机排列,改变数组a 

.permutation(a) 根据数组a的第一轴产生一个新的乱序数组,不改变数组a

.choice(a[,size,replace=False,p])   从一维数组a中以概率p抽取元素,形成size 行传的新数组

.replace 表示是否可以重用元素 默认为true(可以重复抽取) 

np.random.choice(b,(3,2),p=b/np.sum(b))

//元素越大概率越大的方式

.uniform(low,high,size) 产生均匀分布的数组

.normal(loc,scale,size)  loc 均值 sclae 标准差 

.possion(lam,size)   lam是随机事件发生的概率 

numpy 的统计函数 

np.sum(a,axis=None) 求和运算 axis指点是哪个轴

np.mean(a,axis=None ) 求期望 

np.average(a,axis=None,wright=None) 加权平均值 

np.std(a,axis) 求标准差 

np.bar(a, axis)   求方差

例:

a= [[ 0 1 2 3 4]

      [ 5 6 7 8 9]

   [10 11 12 13 14]

     ]

np.avarage(a,axis=0,weights=[10,2,1])

 2.1875 3.1875 4.1875 5.1875 6.1875

min(a) max(a) 

argmin() ragmax() 记录最小值最大值得小标 片平滑成一维之后的下表 

unravel_index(index,shape) 根据 shape 将一维下表转化成多维下标

ptp()           计算最大值与最小值得差

median        只算中位数 

例:

 np.unravel_index(np.argmax(b),b.shape)   

得到最大值的多维下标

numpy的梯度函数 

np.random.gradient(f) 

计算数组元素中的梯度 当f为多维是,返回每个维度的梯度

梯度分

存在两侧值

只有一侧值 

计算

二维数组则返回两个数组表示分别的梯度 

返回这个元素在这层维度的梯度

实例: 图像的手绘表示

PIL 库 第三方库 处理图像的库

python image library 

from PIL import Image 

表示一个Image类 一个图像 

from PIL import Image 

import numpy as np

im=np.array(Image.open("D:/pycodes/beijing.jpg")) 

print(im.shape,im.dtype) 

>>(669,1012,3) uint 

RGB 值

图像的变换

读入图像 获得RGB值 修改后保存为新的图片

a=np.array(Image.open("asdsd"))

b=[255,255,255] -a 

im=Image.fromarray(b.astype('uint8'))

im.save("asas") 

计算像素补值?

np.array(Image.open("asasas") .convert("L") ) 

convert 方法对应打开元素的灰度值

图像的手绘效果

特征:

1.黑白灰色

2.边界线条重

3.相同或相近色彩趋于白云

4.略有光源效果

原文地址:https://www.cnblogs.com/sfzyk/p/6696333.html