#%%#获取上证指数历史行情数据#获取上证指数历史行情数据
import tushare as ts
import pandas as pd
# 设置token,只需要在第一次调用或者token失效时设置
# 设置完成后,之后就不再需要这一个命令了
ts.set_token('')
pro = ts.pro_api()
df_daily = pro.index_daily(ts_code="000001.SH")
df_daily.head()
处理日期
可以先把日期对象转换为datetime对象,以方便后续的使用。同时我们将时间设置为index。
df_daily.index = pd.to_datetime(df_daily['trade_date'])
df_daily.index[:5]
绘制历史收盘价曲线
import seaborn as sns
# 设置为seaborn的样式,更美观
sns.set()
# 绘制收盘价曲线
df_daily.plot(y="close");
绘制均线
import matplotlib.pyplot as plt
df_daily = df_daily.sort_index(ascending=True)
plt.figure(figsize=(12, 6))
df_daily.close['20150101':].plot()
df_daily.close.rolling(60).mean()['20150101':].plot();
查看估值水平
df_basic = pro.index_dailybasic(ts_code='000001.SH')
df_basic.head()plt.figure(figsize=(12, 6))
sns.distplot(df_basic.pe_ttm, bins=100)
plt.axvline(x=df_basic.pe_ttm[0], color='red');df_basic.index = pd.to_datetime(df_basic["trade_date"])
plt.figure(figsize=(12, 6))
plt.plot(df_basic.pe_ttm)
plt.axhline(y=df_basic.pe_ttm[0], color="red");
看起来主要14、15年的阶段底部期间,A股上证的估值水平比现在还要低。那么如果真的要跌到这个水平的话,上证指数还要下跌多少?我们来算一下。
now = df_basic.pe_ttm[0]
min = df_basic.pe_ttm.min()
ratio = (now - min) / now
print("ratio: {0:.2f}%".format(ratio * 100))