Member-only story
在Part 3,我們獲取了00878的每個持倉的盈餘和價格,本篇會講解最後的部分,將統整後的市值、盈餘計算此ETF的本益比。
- 資料清理與轉換
df_878['Earning_Trailing'] = df_878['股數'].str.replace(',', '', regex=True).astype(float) * df_878['eps_trailing'].astype(float)
df_878['Earning_Forward'] = df_878['股數'].str.replace(',', '', regex=True).astype(float) * df_878['eps_forward'].astype(float)
df_878['MarketValue_878'] = df_878['股數'].str.replace(',', '', regex=True).astype(float) * df_878['previousClose'].astype(float)
filt = df_878['eps_forward'].notna()
df_878['股數']
列中可能含有逗號,這些逗號先被去除,再將數值轉換為float
型別,便於數值計算。Earning_Trailing
和Earning_Forward
是公司過去和預期的盈餘。MarketValue_878
是公司的市值,由收盤價和股票數量相乘得到。filt
是一個篩選器,用於篩選eps_forward
非空值的行。
- 計算各項數值的總和
Earning_Trailing_878 = df_878['Earning_Trailing'].loc[filt].sum()
Earning_Forward_878 = df_878['Earning_Forward'].loc[filt].sum()
MarketValues_878 = df_878['MarketValue_878'].loc[filt].sum()
Earning_Trailing_878
是所有的過去盈餘總和。Earning_Forward_878
是所有的預期盈餘總和。MarketValues_878
是所有的市值總和。
- 計算PE
PE_Trailing_878 = MarketValues_878 /…