目標:
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()







