本文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-03Data 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 int64dtypes: 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
作者:他与理想国
链接:https://www.jianshu.com/p/ea371042bd17
點擊查看更多內容
為 TA 點贊
評論
評論
共同學習,寫下你的評論
評論加載中...
作者其他優質文章
正在加載中
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦