Python练习题(四)
pandas_datareader、matplotlib、seaborn、scipy
-
题目:股票市场分析
输出1:阿里及亚马逊两者走势图
输出2:阿里每日变化情况
输出3:五家公司的价格走势图
输出4:亚马逊及谷歌 展示pearsonr,p
输出5:亚马逊及谷歌 展示R^2
输出6:多个子图
输出7:有48%的信心对于AAPL最大亏损是0.0013426490233132958
有95%的信心对于MSFT最大亏损是-0.020935521929566915
请按任意键继续. . .代码:
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
# 股票数据获取
import pandas_datareader as pdr
# 可视化
import matplotlib.pyplot as plt
import seaborn as sb
# time
from datetime import datetime
# Add an annotation with a statistic summarizing the bivariate relationship
from scipy import stats
# ----------------------------------------------------
'''start = datetime(2015, 9, 20)
alibaba = pdr.get_data_yahoo('BABA', start=start)
amazon = pdr.get_data_yahoo('AMZN', start=start)
# 1.两者走势图
# alibaba['Adj Close'].plot(color='b', linestyle='-')
# amazon['Adj Close'].plot(color='g', linestyle='--')
# 2.alibaba每天变化情况
sb.distplot(alibaba['Adj Close'].pct_change().dropna(), bins=100, color='purple')
plt.show()'''
# ----------------------------------------------------
start = datetime(2015, 1, 1)
company = ['AAPL', 'GOOG', 'MSFT', 'AMZN', 'FB'] # 苹果/谷歌/微软/亚马逊/脸书
top_tech_df_a = pdr.get_data_yahoo(company, start=start)['Adj Close']
top_tech_df_b = top_tech_df_a.pct_change()
plt.style.use('ggplot')
# 3.五家公司的价格走势图,若只需要其中三家,代码可top_tech_df_a['AAPL', 'FB', 'MSFT'].plot()
# top_tech_df_a.plot()
# 4.展示 pearsonr,p
# sb.jointplot('AMZN', 'GOOG', top_tech_df_b, kind='scatter', color='g').annotate(stats.pearsonr)
# 5.展示 R^2
# rsquare = lambda a, b: stats.pearsonr(a, b)[0] ** 2
# sb.jointplot('AMZN', 'GOOG', top_tech_df_b, kind='scatter', color='y').annotate(rsquare, template="{stat}: {val:.2f}", stat="$R^2$")
# 6.多个子图
sb.pairplot(top_tech_df_b.dropna())
plt.show()
# 7.风险评估
a = top_tech_df_b['AAPL'].quantile(0.52)
b = top_tech_df_b['MSFT'].quantile(0.05)
print('有48%的信心对于AAPL最大亏损是{}\n有95%的信心对于MSFT最大亏损是{}'.format(a, b))