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()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM