数据分析1-1
1.
(1)数据分析:是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律 (2)数据分析三剑客:Numpy,Pandas,Matplotlib (3)NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算
提供大量的数学函数库
numpy中seriel,dataframe重点
matplotlib:直方图和散点图等等其他图
前两个是数据分析相关的,后边的这个是绘图相关的
一、创建ndarray
2. 使用np.array()创建
例1:一维数组创建
import numpy as np
np.array([1,2,3,4,5])
结果:
array([1, 2, 3, 4, 5])
例2:二维数据创建
np.array([[1,2,3.2],[4,5,6]])
结果:
array([[ 1. , 2. , 3.2], [ 4. , 5. , 6. ]])
注意: numpy默认ndarray的所有元素的类型是相同的 如果传进来的列表中包含不同的类型,则统一为同一类型,优先级:str>float>int
例3:使用matplotlib.pyplot获取一个numpy数组,数据来源于一张图片
import matplotlib.pyplot as plt
plt.imread('./cat.jpg')
运行之后,返回的是一个三维数组,外边有三层包裹
结果:
例4:
import matplotlib.pyplot as plt #cat_img_arr = plt.imread('./cat.jpg') cat_img_arr = plt.imread('cat.jpg') plt.imshow(cat_img_arr)
运行之后,得到的结果:
例5:
import matplotlib.pyplot as plt #cat_img_arr = plt.imread('./cat.jpg') cat_img_arr = plt.imread('cat.jpg') plt.imshow(cat_img_arr) plt.imshow(cat_img_arr-50)
运行之后,得到下面的结果:减去50之后的结果
例6:
import matplotlib.pyplot as plt #cat_img_arr = plt.imread('./cat.jpg') cat_img_arr = plt.imread('cat.jpg') plt.imshow(cat_img_arr) plt.imshow(cat_img_arr-50) cat_img_arr
运行结果:
打印出了这个数组
例7:
import matplotlib.pyplot as plt #cat_img_arr = plt.imread('./cat.jpg') cat_img_arr = plt.imread('cat.jpg') plt.imshow(cat_img_arr) plt.imshow(cat_img_arr-50) cat_img_arr.shape #数组的形状应该得到的是下面的数组(456,730,3)
展示元组:也就是数组的形状
前两个表示像素,第三个表示颜色
结果:
2. 使用np的routines函数创建
(1)包含以下常见创建方法:
例1:
例2:
例3:等差数列
用法:
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
返回20个元素:
例4:
例5:
固定随机数,5行6列,随机因子
#固定时间种子,产生的随机数就固定下来了
例6:标准正态分布
例7:生成0-1的随机数
三.ndarray的属性
例1:
得到下面的结果:
核心重点:索引和切片的处理
123
四.ndarray的基本操作
1. 索引¶ 一维与列表完全一致 多维时同理
例1:索引查找结果,修改结果
例2:索引:一维与列表完全一致 多维时同理
(1)获取二维数组前两行,顾头不顾尾
(2)获取二维数组前两列数据,逗号左边是行数据,逗号右边是列数据
(3)获取数据前两行和前两列数据
(4)将数据反转,例如[1,2,3]==>[3,2,1]
::进行切片
(5)列倒序
(6)全部倒序
arr[::-1,::-1]
例3:
(1)如何将图片进行全置倒序处理之后,需要保存一下
带颜色的图片是三维的,查看一下形状
(3)下面是上下倒置的结果:
(4)下面是左右倒置的结果
(5)下面是颜色倒置的结果:
例4:变形
使用arr.reshape()函数,注意参数是一个tuple! 基本使用 1.将一维数组变形成多维数组
将上边的array转换成 一维的,7行5列,再转换成5行7列的
扩展:转化成三维的
例5:图片倒置
#对一维数组中所有的元素倒置
例5;级联(numpy中理解成合并就行),
panda中不能这么理解
(1)axis表示的是轴向的意思
axis=0:轴向 0表示的是竖直的轴向 1水平的轴向
看一下arr的形状
concatentate必须对齐才行,否则会报错
注意上图,只有二维和二维的才能合并,行和列一定要对齐才行
例6:
(1)合并两张图片
axis=1表示左右,竖向连接,axis=0表示上下,横向连接
(2)水平级联hstack和竖直级联vstack
例7. 切分:
下面我们看下是如何切分的?
(1)
(2)下面是切分之后的结果
axis==>表示的是横着切
下边表示的是竖着切
(3)
切分照片?
(4)
聚合操作:
(1)
(2)np.max/np.min
对所有的求和
求方差
可以指定轴向,将三维数组中每个轴向的第三个数组进行求方差
广播机制:
(1)
通过广播机制进行相加
(2)
缺失的数据通过已有的数据进行填充
(3)
缺失的维度会自动补齐这个数值
ndarry的排序
(1)快速排序
第一个不改变输入,第二个改变输入,第一种是升序
下边的第一种也是不改变
139得到的结果是:
array([3,5,6,7,8])