#%%#獲取上證指數歷史行情數據#獲取上證指數歷史行情數據
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))
?