Python股票数据处理的一些代码细节

本文介绍了Python在处理股票数据时,Numpy和Pandas的比较及各自优势。在基础阶段,Pandas适合数据整理,而高级阶段Numpy在多维数据处理和机器学习场景中更为高效。文章详细讲解了Numpy的数组操作,包括取值、删除元素、降维等,并探讨了Pandas的透视表功能。此外,还分享了如何高效地向Numpy数组中插入元素、应用map、np.apply_along_axis和pd.apply函数,以及调整数组维度的方法。
摘要由CSDN通过智能技术生成

Numpy和Pandas相关

Numpy和Pandas比较

Pandas和Numpy各有所长。

在处理股票数据的基础阶段,Pandas能够清晰地展示股票代码、交易日期、价格等信息,且对于信息的分类、归集、整理有很多针对性强的功能函数,非常便捷。

在处理股票数据的高级阶段,尤其在涉及机器学习领域,Numpy用处更多。首先因为Keras等函数库要求的输入类型多为numpy.ndarray,更深层的原因是Numpy在多维数据储存和处理上更具优势,而且由于Numpy的数据为单一类型,处理速度比Pandas快很多。

numpy.ndarray和多类型数据

由于numpy.ndarray要求存储单一类型数据,用np.array()函数转换DataFrame时,如果value有多种数据类型,比如string、int、float,转换后dtype(数据表中的元素类型)会显示为object(不是很懂这是什么东西),虽然单独提取时,会“还原”为string、int或float(datatime会被转换为int),但接下来对整块数据操作时,比如遇到要求float数据类型,必须先用astype(float)进行转换,否则会报错。

i_str = [['a', 'b', 'c']]
i_int = [[1, 2, 3]]
i_float = [[1.1, 2.2, 3.3]]

i_array = np.concatenate((i_str, i_int, i_float), axis = 0)
print(i_array)
[['a' 'b' 'c']
 ['1' '2' '3']
 ['1.1' '2.2' '3.3']]
print(i_array.dtype)
output: <U32
a = i_array[0,1]
b = i_array[1,1]
c = i_array[2,1]
d = c.astype(float)
print(type(a))
output: <class 'numpy.str_'>
print(type(b))
output: <class 'numpy.str_'>
print(type(c))
output: <class 'numpy.str_'>
print(type(d))
output: <class 'numpy.float64'>

还是由于存储单一类型数据的限制,可以对提取的元素单独进行类型转换,但对整块元素进行类型转换是行不通的。

i_array[1:,:] = i_array[1:,:].astype(float)
print(i_array)
[['a' 'b' 'c']
 ['1.0' '2.0' '3.0']
 ['1.1' '2.2' '3.3']]

转换后由于有第一行string类型的限制,二、三行在被转换成float后,又被转换回string了。

Numpy神奇的取值方法

不同于DataFrame,numpy.ndarray本身是没有索引的,但它的索引方式相当灵活。

比如,以长度相同的,元素为布尔值的numpy.ndarray作为索引。

y = np.array([1, 2, 3, 4, 5])
z = np.array([False,False,False,True,True])
x = y[z]
print(x)
output: [4 5]

再此基础上,又可以用各种方法生成这种布尔值索引,比如以下:

y = np.array([1, 2, 3
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值