Python 股票市场分析实战

目标:

1.股票数据获取

2.历史趋势分析及可视化

3.风险分析

实验数据:来源于Yahoo Finance / Stooq,该网站提供了很多API接口,本文用的工具是pandas-datareader

实验平台:Anaconda (pandas-datareader 需手动pip install)

导入工具包

1 import datetime
2 import seaborn as sns
3 import matplotlib.pyplot as plt
4 import pandas as pd
5 import numpy as np
6 import pandas_datareader as web

获取数据

1 start = datetime.datetime(2016, 1, 1)  # 获取数据的时间段-起始时间
2 end = datetime.date.today()  # 获取数据的时间段-结束时间
3 alibaba = web.DataReader("BABA", "stooq", start, end)  # 获取阿里巴巴2016年1月1日至今的股票数据

查看数据

print(alibaba.head())  # 查看前5条数据

print(alibaba.tail())  # 查看后5条数据
print(alibaba.index)  # 查看DataFrame索引,索引为时间序列
print(alibaba.columns)  # 查看DataFram列名,列信息为开盘价、最高价、最低价、收盘价、成交量
print(alibaba.shape)  # 查看DataFram形状
print(alibaba.describe())  # 查看DataFrame数据每组的统计情况,如最小值、最大值、均值、标准差等

趋势分析及可视化

 1 alibaba["Close"].plot(legend=True)  # 收盘价可视化
 2 plt.show()

 3 alibaba["Volume"].plot(legend=True)  # 交易量可视化
 4 plt.show()
 
10 # 每日内股票变化
11 alibaba['high-low'] = alibaba['High'] - alibaba['Low']
12 print(alibaba.head())
14 # 每日间股票变化daily return
15 alibaba['daily-return'] = alibaba['Close'].pct_change()
16 alibaba['daily-return'].plot(figsize=(40,2))
17 plt.show()
19 # 每日间股票变化分布图
20 alibaba['daily-return'].plot(kind='hist')
21 plt.show()

23 sns.distplot(alibaba['daily-return'].dropna())
24 plt.show()

风险分析

1 # 获取五家科技公司2015至今的股票数据
2 start = datetime.datetime(2015,1,1)
3 company = ['AAPL','GOOG','MSFT','AMZN','FB']
4 top_tech_df = web.DataReader(company,'stooq',start)['Close']
5 print(top_tech_df.head())



1 # 每日收盘价较前一个交易日的百分比变化,即涨跌幅度
2 top_tech_dr = top_tech_df.pct_change()
3 print(top_tech_dr.head())

# 五家公司的股票收盘价走势图
top_tech_df.plot()
plt.show()


# 探究两组变量的分布及关系
sns.jointplot(x='GOOG',y='MSFT',data=top_tech_dr)
plt.show()

  

 # 所有股票相关性比较

sns.pairplot(top_tech_dr.dropna())
plt.show()

原文地址:https://www.cnblogs.com/waterr/p/14169673.html