本人股市多年的老韭菜了,各种股票分析书籍,技术指标书籍阅历无数,萌发想法,何不自己开发个股票预测分析软件,选择python因为够强大,它提供了很多高效便捷的数据分析工具包,
其中数据分析中常见的3大利器---Numpy,Pandas,Matplotlib库。
俗话说的好,工欲善其事,必先利其器,我们要做好项目,必先打好基础,那我们一起学习一下这三个数据分析库,
? ?NumPy是Python的一种开源数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix)),支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库,也是Pandas库的基础,主要为以后学习Pandas库做铺垫。
同样Numpy应用广泛,
? ??NumPy库的主要特点是引入了数组的概念,数组其实跟列表有点类似,所以我们可以借助列表来初步认识数组的基本概念
?NumPy数组与列表的区别**
c = a * 2
d = b * 2
print(c)
print(d)
e = [[1,2], [3,4], [5,6]]
f = np.array([[1,2], [3,4], [5,6]])
print(e)
print(f)
# **?创建数组的几种方式**
?
b = np.array([1, 2, 3, 4])
f = np.array([[1,2], [3,4], [5,6]])
print(b)
print(f)
x = np.arange(5)
y = np.arange(5,10)
z = np.arange(5, 10, 0.5)
print(x)
print(y)
print(z)
?文件IO操作非常重要,特别股票软件需要对下载的数据分析读取等等。
x = np.random.randn(5)
y = np.arange(0,10,1)
# save?法可以存?个ndarray
np.save("x_arr",x)
# 如果要存多个数组,要是?savez?法,保存时以key-value形式保存,key任意(xarr、yarr)
np.savez("some_array.npz",xarr = x,yarr=y)
arr = np.random.randint(0,10,size = (3,4))
#储存数组到txt?件
np.savetxt("arr.csv",arr,delimiter=',') # ?件后缀是txt也是?样的
#读取txt?件,delimiter为分隔符,dtype为数据类型
np.loadtxt("arr.csv",delimiter=',',dtype=np.int32)
abs、sqrt、square、exp、log、sin、cos、tan,maxinmum、minimum、all、any、inner、clip、round、trace、ceil、floo
数学和统计函数
min、max、mean、median、sum、std、var、cumsum、cumprod、argmin、argmax、argwhere、cov、corrcoef
np.abs(a) # 求绝对值
np.sqrt(b) # 开平方
np.square(b) # 平方
np.exp(3) # 自然底数e的多少次幂
np.log(20.085536) # 自然底数e对数求解
np.sin(np.pi/2) # 度sin正弦值
np.cos(0) # 余弦值
np.tan(np.pi/6) # 正切,30度正切值
# 给两个数组,从中选取大的,或者选取小的
np.maximum(a,c) # 从a和c中选取最大的值,二者取其一,最后形状不变
np.minimum(a,c) # 选取最小的值
?
np.mean(a)
np.median(a)
np.std(a)
np.var(a)
np.corrcoef(a,a)
# 相关性系数,0-1(正相关) -1-0 (负相关)
# 0 表示,没有线性关系
a = np.arange(8)
b = np.arange(8)
a * b # 对应元素相乘, 保持原来的形状
a = np.arange(1,5).reshape(2 ,2)
a.dot(a)
??可迭代对象(Iterable)并不是指某种具体的数据类型,它是指存储了元素的一个容器对象,且容器中的元素可以通过 iter( )方法或 getitem( )方法访问
from collections import Iterable
print(isinstance(range(100),Iterable))
print(isinstance(list(range(100)), Iterable))
isinstance('Say YOLO Again.', Iterable)
numpy中数组切?是原始数组的视图,这意味着数据不会被复制,视图上任何数据的修改都会反映到原数组上。
start: 切片开始的位置,默认0
end: 切片结束的位置,默认结尾
step:步长,默认为1, 可以为负数
# 正序切片
a = np.arange(20)
display(a)
print(a[:]) # 参数默认
print(a[1:3]) # [start, end)
print(a[::3]) # 三个取数
# 逆序切片
print(a[-9:-3]) # -1代表最后一个元素的index
print(a[-2:-8:-2])
print(a[::-1]) # 每隔一个逆序取数
print(a[::-2]) # 每隔两个逆序取数
上述只是Numpy库常见的知识点。