ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

我的Python心路历程 第十期 (10.13 股票实战可视化之单股年度趋势类比)

2021-02-06 10:58:51  阅读:184  来源: 互联网

标签:loc 01 Python top comName df 心路历程 path 10.13


我的Python心路历程 第十期 (10.13 股票实战可视化之单股年度趋势类比)

通常我们在很多地方所能看到的大都是单只某时间段(可以是多年)的横向(日、周、月)趋势分析,但按照年度为跨度来进行多年度的数据维度类比似乎没有人做过,今天我就尝试一下吧,难点在于数据获取和整理。

假设两只股的Adj Close数据已经汇聚在fileName中,整体代码如下:
#按照年度为维度来进行多年数据类比分析
def yearsAnsfor1Stock(comName=None, fileName=None):
# 获取绝对路径,data为当前文件夹
curpath = os.path.join(os.path.dirname(file), ‘data’)
#topfile_path = ‘’
#定义top文件路径
if fileName == None:
topfile_path = os.path.join(curpath, ‘top.csv’)
else:
topfile_path = os.path.join(curpath, fileName)

# 获取数据from csv文件中,参数nrows代表要读几行,skiprows代表从哪行开始读。
#top_tech_df = pd.read_csv(topfile_path, nrows=10, skiprows=100, header=None, names=['Date', comName[0], comName[1]])
top_tech_df = pd.read_csv(topfile_path, index_col=0)  # 设置index_col为Date列可实现从列x+1开始读取,是为了避免下面的pct_change操作无法针对Date字段列

#获取2015年数据,Date列为索引,直接可以通过日期范围来取值,代码的可读性好很多;loc真的很好用
value2015 = top_tech_df.loc['2015-01-01':'2015-12-31']
value2016 = top_tech_df.loc['2016-01-01':'2016-12-31']
value2017 = top_tech_df.loc['2017-01-01':'2017-12-31']
value2018 = top_tech_df.loc['2018-01-01':'2018-12-31']
value2019 = top_tech_df.loc['2019-01-01':'2019-12-31']

#初始化
i = 0

for names in comName:
    #设置图表内容
    value2015[comName[i]].plot(label='2015')
    value2016[comName[i]].plot(label='2016')
    value2017[comName[i]].plot(label='2017')
    value2018[comName[i]].plot(label='2018')
    value2019[comName[i]].plot(label='2019')

    # print value2015[comName[i]].head()
    # print value2016[comName[i]].head()
    # print value2017[comName[i]].head()
    # print value2018[comName[i]].head()
    # print value2019[comName[i]].head()

    # 设置图表配置
    plt.title(u"%s年度单位Adj Close趋势比较,2015~2019"%comName[i])
    plt.legend(loc='upper right', fontsize=12)  # 标签位置和字体大小
    plt.tight_layout()  #自适应
    plt.show()

    i += 1

return

需要强调的是,代码尝试了很多种方式在实现通过日期范围来取值的方面,幸好的是调试过程中发现了loc真的很好用,刚开始计划用最土的方法自己提取,鉴于Date为索引,故此比较难做数学操作;但好在loc被我发现了有这个用法,直接又高效。

运行效果如下图所示:
在这里插入图片描述
另一只如下:
在这里插入图片描述

最后说明一点,横坐标是最新一年的日期数据,这里解决了主要矛盾看大趋势,就不用纠结于此了,如果真的有必要(产品化)且有人比较较真的话,那么建议可以将年去掉,直接显示具体月日的日期即可变相解决该疑虑。

标签:loc,01,Python,top,comName,df,心路历程,path,10.13
来源: https://blog.csdn.net/m0_47327165/article/details/112951060

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有