Python 股票分析练习
2018-12-06 本文已影响16人
他与理想国
本文python股票市场分析实战主要包括两个方面
- 一是历史趋势分析
- 二是风险分析
实验数据:来源于Yahoo Finance,网址:https://finance.yahoo.com ,该网站提供了很多API接口,读取数据很方便,本文可以安装使用第三方库pandas-datareader直接访问Yahoo的股票信息
数据获取
访问数据
import pandas_datareader as pdr
alibaba = pdr.get_data_yahoo('BABA')
alibaba.head()
列名依次为:开始的价格、最高价格、最低价格、关市价格、关市价格、交易量
image
查看维度
alibaba.shape
# 输出
(789, 6)
查看截止数据
alibaba.tail()
查看基本统计信息
alibaba.describe()
image
alibaba.info()
# 输出
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 789 entries, 2014-09-19 to 2017-11-03
Data columns (total 6 columns):
Open 789 non-null float64
High 789 non-null float64
Low 789 non-null float64
Close 789 non-null float64
Adj Close 789 non-null float64
Volume 789 non-null int64
dtypes: float64(5), int64(1)
memory usage: 43.1 KB
历史趋势分析
读取股票数据
start = datetime(2015,9,20) # 设定读取的股票时间
alibaba = pdr.get_data_yahoo('BABA', start=start)
amazon = pdr.get_data_yahoo('AMZN', start=start)
alibaba.to_csv('../homework/BABA.csv') # 保存成csv文件
amazon.to_csv('../homework/AMZN.csv')
查看数据
alibaba.head()
查看关市价格、成交量趋势
alibaba['Adj Close'].plot(legend=True)
alibaba['Volume'].plot(legend=True)
image.png
image.png
查看alibaba、amazon关市价格趋势对比
alibaba['Adj Close'].plot()
amazon['Adj Close'].plot()
image
查看每天股票成交最高价和最低价差值的变化,股票的稳定情况(每天之内的变化)
alibaba['high-low'] = alibaba['High'] - alibaba['Low']
alibaba.head()
alibaba['high-low'].plot()
image
查看股票每天的变化情况
alibaba['daily-return'] = alibaba['Adj Close'].pct_change()
# 折线图:观察每天的变化情况
alibaba['daily-return'].plot(figsize=(10,4),linestyle='--',marker='o')
image.png
# 直方图:查看变化区间的分布情况
alibaba['daily-return'].plot(kind='hist')
image.png
# 用seaborn来画直方图
sns.distplot(alibaba['daily-return'].dropna(),bins=100,color='purple')
image.png
风险分析
读取股票数据:关市价格
start = datetime(2015,1,1)
company = ['AAPL','GOOG','MSFT','AMZN','FB']
top_tech_df = pdr.get_data_yahoo(company, start=start)['Adj Close']
top_tech_df.to_csv('../homework/top5.csv') # 保存成csv格式
top_tech_df.head()
image.png
查看每只股票价格走势图
top_tech_df.plot()
image.png
查看股票每天的价格变化情况
top_tech_dr = top_tech_df.pct_change()
top_tech_dr.head()
image.png
绘制散点图:查看两支股票在 每天股票价格变化 的相关性
sns.jointplot('AMZN','GOOG', top_tech_dr, kind='scatter')
image.png
# 对所有变量进行两两比较
sns.pairplot(top_tech_dr.dropna())
image.png