哪些 Python语言 库让你相见恨晚
小标 2018-12-20 来源 : 阅读 1236 评论 0

摘要:本文主要向大家介绍了哪些 Python语言 库让你相见恨晚,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

本文主要向大家介绍了哪些 Python语言 库让你相见恨晚,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

大家贴了很多Python的库,有关于文档处理、网络爬虫、WEB服务器、数据可视化等等,顿时感觉自己接触到的只是Python的冰山一角。不过说真的Python库实在是太多了,涉及到了方方面面的应用场景,我们不可能什么都掌握,大家平时接触比较多的Python库主要有:

Matplotlib——应用于可视化绘图

Bokeh——应用于Web交互式可视化绘图

Urllib3——应用于HTTP客户端网络请求

Numpy——应用于科学计算

Pandas——应用于金融数据分析

Statsmodels——应用于统计模型和分析

TA-Lib——应用于金融技术指标计算

Tushare——应用于财经数据的获取

Django——应用于Web框架的搭建

scrapy——应用于爬虫框架的搭建

...........................……………………..........大家好,我叫分割线................………………………………

上面列举的这些库里面Pandas是金融量化分析中最常使用的库,它封装了Numpy、Matplotlib、Urllib3等基础库,因此Pandas功能十分强大,不仅可以进行科学计算、数据可视化分析,也可以下载金融数据等。正是因为Pandas在金融量化分析中十分著名,一开始踏入这个领域的时候就接触到了,并不能说相见恨晚。


真正让我后知后觉、相见恨晚、一见如故的是TA-Lib这个计算金融技术指标的开源库。来说下是怎么接触到TA-Lib库的,“故事”的发生是这样的,最开始的时候我准备实现一幅查看股票技术指标的界面,如下图所示,其中我需要绘制包括K线图、成交量、均线和MACD、KDJ这几个常用的指标。


我先用了Matplotlib库中Candlestick方法绘制K线图,bar方法绘制成交量,很轻松,没什么问题。接下来绘制均线我先用了两个序列的线性卷积方式实现:

符号*表示卷积这个特定的运算形式,不过没过多久我就找到了pandas库rolling_mean方法来优化均线的实现方法,还算比较顺利,大家可以感受下两种方法的代码实现。

卷积实现:

N_20,N_60,N_120 = 19,59,119 #N-1
weg20 = np.ones(N_20) / N_20
self.Ma_20 = np.convolve(weg20, self.close)[N_20:-N_20]
""" M20 均线序列生成 """
L_zeros = np.zeros(N_20).tolist()#生成M20 0序列
L_zeros.extend(self.Ma_20)#补齐列表长度 
self.Ma_20 = copy.deepcopy(L_zeros)#深度拷贝列表数据

Pandas实现:

stock['Ma20'] = pd.rolling_mean(stock.Close,window=20)

再下一步绘制MACD的DIF(差离值)和DEA(差离平均值),±DIF值是短期移动平均线与长期移动平均线之间的聚合与分离值,DEA是对DIF值进行N日移动平滑,用常规的代码来实现差不多需要10行左右,但是我觉得即然用了Python语言,就要追求更优雅的方式,就在这个时候我在不停的搜索中发现了一套优雅的库TA-Lib,TA-Lib中MACD方法可以根据输入的收盘价直接计算得到DIF、DEA、BAR三组数据,只需要1行代码就轻松搞定。

dif, dea, bar= talib.MACD(close, fastperiod=12, slowperiod=26, signalperiod=9)

同样KDJ可以用STOCH(Stochastic Oscillator Slow)方法来实现,这里要注意的是KDJ指标最早雏形是由芝加哥期货交易商George Lane提出的KD指标,该指标又被称为随机震荡指标,在TA-Lib库中对应的方法为STOCH,而KDJ指标则在随机震荡指标K线和D线的基础上增加了一条J线,进一步提高了随机震荡指标对市场买卖信号捕捉的准确度。使用TA-Lib库我们也只需要1行代码就轻松搞定,大家可以感受下计算实现和TA-Lib库实现这两种方法的代码。


计算实现:

date = self.kl_pd.index.to_series()
RSV = pd.Series(np.zeros(len(date)-self.xd),index=date.index[self.xd:])

Kvalue = pd.Series(0.0,index=RSV.index)
Dvalue = pd.Series(0.0,index=RSV.index)
Kvalue[0],Dvalue[0] = 50,50

for day_ind in range(self.xd, len(date)):

    RSV[date[day_ind]] = (self.kl_pd.Close[day_ind] - self.kl_pd.Low[day_ind-self.xd:day_ind+1].min())/(self.kl_pd.High[day_ind-self.xd:day_ind+1].max()-self.kl_pd.Low[day_ind-self.xd:day_ind+1].min())*100

    if day_ind > self.xd:
        index = day_ind-self.xd
        Kvalue[index] = 2.0/3*Kvalue[index-1]+RSV[date[day_ind]]/3
        Dvalue[index] = 2.0/3*Dvalue[index-1]+Kvalue[index]/3

self.kl_pd['RSV'] = RSV
self.kl_pd['K'] = Kvalue
self.kl_pd['D'] = Dvalue
self.kl_pd['J'] = 3*Kvalue-2*Dvalue

TA-lib实现:

slowk, slowd'= talib.STOCH(High, Low, Close, fastk_period=9, slowk_period=3, slowk_matype=0, slowd_period=3, slowd_matype=0)

我继续深入地去了解TA-Lib库,在 //tadoc.org/这个网站上找到了TA-Lib库中实现各种指标的对应实现方法,包括ATR、OBV、RSI等等,总共涵盖了大约200个技术指标的实现方法,并且支持java,C,C++,Perl,Python等多种语言的API,它的强大和便捷令人不得不折服。

本文由职坐标整理并发布,希望对同学们学习Python有所帮助,更多内容请关注职坐标编程语言Python频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程