pe估值 python_Python编程学习笔记(8)
書接上回,上節(jié)我們定義了一個獲取某個指數(shù)某日的PE數(shù)值的函數(shù)。下面要做的就是得到這個函數(shù)的時間序列,然后計算出這個時間序列中每天的PE數(shù)值,最后就可以用圖形進行展示了。
這個方法和前文中的方法一樣,我們照貓畫虎就可以了。
df = get_price('000016.XSHG', start_date='2014-01-01', end_date='2019-09-01', fields=['close'], fq='pre')#給df添加一列,列名PE,先賦值0.00df.loc[:,"PE"]=0.00ltIndex = df.indexi = 0;for irow in ltIndex: strdate = irow.strftime('%Y-%m-%d') fPE = get_index_value_date('000016.XSHG' , strdate) df.iloc[i,1] = fPE i = i + 1print(df)
000016.XSHG就是上證50指數(shù)的代碼,我們這次計算的就是上證50指數(shù)2014年1月1日到2019年9月1日的每天的PE數(shù)值。
我們定義的函數(shù)get_index_value_date用在了for循環(huán)中,注意,for循環(huán)中有個日期格式的轉換問題。因為我們定義的函數(shù)中的日期其類型是string類型,而在ltIndex中的日期不是string類型,而是日期類型的,所以不能直接作為參數(shù)用在我們的函數(shù)中。strdate = irow.strftime('%Y-%m-%d')的意思就是把irow這個日期類型的日期轉換成字符串類型的日期。這種不用變量之間類型的轉換是編程中進場需要用到的,比如int類型轉字符串類型,字符串類型轉float等等。這種小技巧的學習,不用刻意,用到了就去百度學習。比如你在百度中輸入“python 日期類型轉換”,你就能看到N多這方面的帖子,看看人家是怎么寫的,直接copy過來用就行了。
下面再加入圖形顯示代碼即可
#設置畫布大小plt.figure(figsize=(10,5))#設置圖標標題plt.title('上證50PE', fontsize=14)plt.plot(df['PE'])plt.legend()plt.show()
整個程序的完整代碼如下
import datetimeimport matplotlib.pyplot as pltdef get_index_value_date(index_code , date): stocks = get_index_stocks(index_code , date) q = query( valuation.pe_ratio , valuation.market_cap ).filter( valuation.code.in_(stocks) ) df = get_fundamentals(q, date) sum_p = sum(df.market_cap) sum_e = sum(df.market_cap / df.pe_ratio) pe = sum_p / sum_e return pedf = get_price('000016.XSHG', start_date='2014-01-01', end_date='2019-09-01', fields=['close'], fq='pre')#給df添加一列,列名PE,先賦值0.00df.loc[:,"PE"]=0.00ltIndex = df.index#print(df)now_time = datetime.datetime.now()print(now_time)i = 0;for irow in ltIndex: strdate = irow.strftime('%Y-%m-%d') fPE = get_index_value_date('000016.XSHG' , strdate) df.iloc[i,1] = fPE i = i + 1now_time = datetime.datetime.now()print(now_time)print(df)#設置畫布大小plt.figure(figsize=(10,5))#設置圖標標題plt.title('上證50PE', fontsize=14)plt.plot(df['PE'])plt.legend()plt.show()
代碼中for循環(huán)前后我加入了這段代碼
now_time = datetime.datetime.now()print(now_time)
他的用處是打印顯示這個for循環(huán)開始和結束的時間。因為我們這次需要調取5年多每天的數(shù)據,聚寬的函數(shù)調用需要時間,我需要看看程序運行了多久。
最終結果如下
從時間打印結果看,這個程序運行費時44秒。為了驗證我們計算的指數(shù)PE和其他網站提供的PE圖形是否一致,我比對了2014年9月22日-2019年9月20日,我計算的圖形和雪球網提供的上證50PE圖形。
非常perfect!現(xiàn)在,我們只需要改變一下程序中的指數(shù)代碼和時間段,就可以得到任一指數(shù)任何時間段(前提是聚寬的數(shù)據庫要支持啊)的PE走勢圖了。比如滬深300、中證500、中證消費等等。從此,看指數(shù)估值再也不用求人了。
總結
以上是生活随笔為你收集整理的pe估值 python_Python编程学习笔记(8)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mongodb 导出 带条件_将 Mon
- 下一篇: cac会议投稿难度大吗_发表 SCI 论