ad

从《Python数据分析案例教程》中_领悟数据和Python的魅力_3.5 NumPy 数据分析案例

admin 74 2023-10-25

【摘要】 本书摘自《Python数据分析案例教程》一书中第3章,第5节,由万念斌、肖伟东、叶丰标编著。

3.5 NumPy 数据分析案例

有一个名为"股票数据分析.csv"的股票数据文件,内有"日期、开盘价、最高价、最低价、 收盘价、涨跌额、涨跌幅、成交量、成交金额”等数据(如图3-2所示),请使用 NumPy 编程统 计成交量加权平均价格、收盘均价、股票收益率等信息。

从《Python数据分析案例教程》中_领悟数据和Python的魅力_3.5 NumPy 数据分析案例

编程思路解析:要实现上述数据分析,首先要读取"股票数据分析.csv"文件数据,可使 用 NumPy 中 的 loadtxt()函数读取收盘价和成交量;其次,读出的数据不能直接使用 NumPy 数据分析统计函数计算,因为读出的数据是字符对象类型,需要转换成 float 类型; 之后就可使用 NumPy 数据分析统计函数计算出结果。

0,日期,开盘价,最高价,最低价,收盘价,涨跌额,涨跌幅(%),成交量(股),成交金额(元)

1,20140331,2043.05,2048.13,2024.19,2033.31,-8.41,-0.41,94356536.00,71573688750.00

2,20140328,2046.85,2060.13,2035.24,2041.71,-4.88,-0.24,121681965.00,94221958284.00 3,20140327,2060.81,2073.98,2042.71,2046.59,-17.08,-0.83,119149374.00,94996460806.00 4,20140326,2070.57,2074.57,2057.65,2063.67,-3.64,-0.18,102611116.00,80463446277.00 5,20140325,2063.32,2079.55,2057.49,2067.31,1.03,0.05,131822232.00,100173660038.00

6,20140324,2050.83,2074.06,2043.33,2066.28,18.66,0.91,147700085.00,110244496617.00 7,20140321,1987.68,2052.47,1986.07,2047.62,54.14,2.72,144477656.00,109438064673.00 8,20140320,2017.22,2030.85,1993.00,1993.48,-28.26,-1.40,110333048.00,88630977588.00 9,20140319,2019.98,2022.18,2002.44,2021.73,-3.46,-0.17,95180797.00,79473241174.00

10,20140318,2026.22,2034.92,2020.41,2025.20,1.52,0.08,96777193.00,83580456683.00

11,20140317,2009.88,2024.37,1999.25,2023.67,19.33,0.96,86250374.00,72017781997.00

12,20140314,2008.83,2017.91,1990.98,2004.34,-14.77,-0.73,87775111.00,69925888157.00 13,20140313,2000.70,2029.12,1996.53,2019.11,21.42,1.07,100978116.00,77979057254.00 14,20140312,1996.24,2011.06,1974.38,1997.69,-3.47,-0.17,101361719.00,79293072715.00 15,20140311,1994.42,2008.07,1985.60,2001.16,2.09,0.10,92705265.00,76870326506.00

16,20140310,2042.35,2042.63,1995.55,1999.07,-58.84,-2.86,115696666.00,95032992605.00 17,20140307,2058.38,2079.49,2050.47,2057.91,-1.67,-0.08,103709540.00,89332133920.00 18,20140306,2050.03,2065.79,2030.95,2059.58,6.49,0.32,109290133.00,92561446561.00

图3-2 股票数据分析.csv 文件

程序代码如下:

#encoding:utf-8

import numpy as np

#统计收盘价的相关信息:成交量加权平均价格、时间加权平均价格、平均价、最高价、 #最低价、股票收益率

def tongji():

spj,cjl=np.loadtxt(open(" 股票数据分析 .csv",encoding='utf-8'),dtype=np.str,

delimiter=",",usecols=(5,8),unpack=True,skiprows=1)#sp 收盘价,cj 成 交 量

#数据类型转换 object—float

spl=[]

for i in range(0,spj.size):

try:

spl.append(float(spj[i]))

except:

continue

sp=np.array(spl)

cj1=[]

for i in range(0,cjl.size):

try:

cj1.append(float(cjl[i]))

except:

continue

cj=np.array(cj1)

print(" 收盘价".center(30,"="),'\n',sp)

print(" 成交量".center(30,"="),\n',cj)

#数据处理

cj mean=np.average(sp,weights=cj)# 成交量加权平均价格

print(" 成交量加权平均价格".center(30,"="),\n',cj mean)

t=np.arange(len(sp))

time mean=np.average(sp,weights=t)# 时间加权平均价格

print("时间加权平均价格".center(30,"="),\n',time mean)

ave=np.mean(sp)# 收盘价的平均价格

print("收盘价的平均价格".center(30,"="),\n',ave)

sp max=np.max(sp)# 最高收盘价

sp min=np.min(sp)# 最低收盘价

print("最高收盘价、最低收盘价".center(30,"="),\n',sp max,sp min) sp ptp=np.ptp(sp)# 收盘价的极差

sp mid=np.median(sp)# 收盘价的中位数

sp var=np.var(sp)# 收盘价的方差

gpsyl=np.diff(sp)/sp[:- 1]# 股票收益率

dssyl=np.diff(np.log(sp))# 收盘价的对数收益率

print(" 股票收益率、对数收益率".center(30,"="),\n',gpsyl)

print(" 股票对数收益率",center(30,"="),\n',dssyl)

zsyl=np.where(gpsyl>0)

print("收益率为正的交易日".center(30,"="),`\n',zsyl)

def main():

tongji()

if name ==" main ":

_ __

main()

程序运行结果如下:

D:\anaconda\python.exe C:/Uscrs/del1/PyCharmProjects/My01/编写教材案例源代码/3Numpy/Numpy 分析股票 ,价格/AL3-17Numpy 数据分析案例.py

===收盘价==:

[ 2033.31 2041.71 2046.59 ... 2725.84 2721.01 2716.51]

===成交量===

[9.43565360e+07 1. 16771899c+08

1.21681965e+08 1.49501388c+08]

1. 19149374e+08

1. 13485736e+08

====成交量加权平均价格===========

3281.412419274049

======时间加权平均价格==========

3068.7308217087084

=======收盘价的平均价格===========

3030.6804180327867

=========最高收盘价、最低收盘价==========

5166.351991.25

========股票收益率、对数收益率==========

[0.00413119 0.00239015 0.00834559 0.05511214 -0.00177193

-0.0016538]

===股票对数收益率====

[ 0.00412268 0.0023873 0.00831096 0.05364705 -0.0017735

-0.00165517]

=收益率为正的交易日===========

(array([ 0, 1, 2,...,2433,2434,2436],dtype=int64),)

Process finished with exit code 0

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 [email protected] 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:学会《大数据可视化技术》_轻松读懂你的数据_2.6.4 高级分析工具
下一篇:打开《Java+EE应用开发实践教程》_读懂新的设计思路_3.3.1.2 实验步骤节选
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×