您的位置:首页 > 编程语言 > Python开发

PythonStock(12):使用python,pandas进行股票分析

2017-11-17 13:03 1036 查看

前言

使用Python开发一个股票项目。

项目地址:

https://github.com/pythonstock/stock

相关资料:

http://blog.csdn.net/freewebsys/article/details/78294566

主要使用开发语言是python。

使用的lib库是pandas,tushare,TensorFlow,tornado等。

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/78559979

未经博主允许不得转载。

博主地址是:http://blog.csdn.net/freewebsys

1,使用python进行股票分析

首先使用tushare保存股票000001 的也就是平安银行的历史数据从。 07-01 到 11-01 的股票数据。并且把数据存储到 pickle,一种python 默认支持的序列化格式。 pandas 默认支持多种数据格式,可以直接存储。

#!/usr/local/bin/python
# -*- coding: utf-8 -*-

import math
import pandas as pd
import numpy as np
import tushare as ts
import datetime
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker

begin_time = '2017-02-01'
end_time = '2017-11-01'
code = "000001"
stock = ts.get_hist_data(code, start=begin_time, end=end_time)
stock = stock.sort_index(0) # 将数据按照日期排序下。
stock.to_pickle("stock_data_000001.pickle")
print("finish save ...")


2,读出股票数据

读出股票数据。并且画出股票收盘价的曲线图。pandas可以直接plot出。

#读取股票数据分析。不用每次网络请求数据
stock = pd.read_pickle("stock_data_000001.pickle")
#5周期、10周期、20周期和60周期
#周线、半月线、月线和季度线
stock["5d"] = stock["close"].rolling(window = 5).mean() #周线
stock["10d"] = stock["close"].rolling(window = 10).mean() #半月线
stock["20d"] = stock["close"].rolling(window = 20).mean() #月线
stock["60d"] = stock["close"].rolling(window = 60).mean() #季度线

#print(stock.head(1))
#展示股票收盘价格信息

stock[["close","5d","10d","20d","60d",]].plot(figsize=(20,10), grid=True)
plt.show()




stock["5-10d"] = stock["5d"] - stock["10d"] #周-半月线差
stock["5-20d"] = stock["5d"] - stock["10d"] #周-月线差
stock[["close","5-10d","5-20d"]].plot(subplots=True, style='b', figsize=(20,10), grid=True)
plt.show()


3,计算股票收益

return 股票收益,使用的是,用当日的收盘价格,除以前一个交易日的收盘价格。 然后在用log 将数据变成 正负的数据。

可以看到return 在-0.06 在 0.06 之间波动,如果为负值,说明股票下跌。

如果为正值则股票上涨。可以看出,股票的收益和波动和股票的价格波动一致。

#计算股票的收益价格
stock["return"] = np.log( stock["close"] / stock["close"].shift(1))
# stock["return_a"] = stock["close"] / stock["close"].shift(1)
# print(stock[["return","return_a"]].head(15))
stock[["close","return"]].plot(subplots=True, style='b', figsize=(20,10), grid=True)
plt.show()




#计算股票的【收益率的移动历史标准差】
mov_day = int(len(stock)/20)
stock["mov_vol"] = stock["return"].rolling(window = mov_day).std()*math.sqrt(mov_day)
#print(stock["mov_vol"].head(mov_day+1))

stock[["close","mov_vol","return"]].plot(subplots=True, style='b', figsize=(20,10), grid=True)
plt.show()

# print(stock[["mov_vol","return"]].tail(30))
# print(stock["mov_vol"].tail(5).sum())
# print(stock["mov_vol"].tail(10).sum())
# print(stock["mov_vol"].tail(15).sum())
# print(stock["mov_vol"].describe())




4,总结

使用 python 的pandas 统计分析基本的股票分析非常的方便快速。

使用了最少的代码完成了计算,同时还可以使用matplotlib 将图画出。

使用 tushare 可以方便的获得股票信息。两个结合起来非常的强大。

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/78559979

未经博主允许不得转载。

博主地址是:http://blog.csdn.net/freewebsys
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python stock