我的連絡資訊:[email protected]
url = 'https://mops.twse.com.tw/mops/web/t163sb06' ##放你要抓取的程式碼
r = requests.post(url,{'encodeURIComponent':1,'step':1,'firstin':1,'off':1,'isQuery':1,'TYPEK':'sii','year':str(year),'season':str(season)})
r.encoding = 'utf_8_sig' ###要記得中文會有亂碼,因此要先encode成編碼形式
df = pd.read_html(r.text, header = None)
1101 | 1102 | 1103 | 1104 | 1108 | 1109 | 1110 | 1201 | 1203 | 1210 | |
---|---|---|---|---|---|---|---|---|---|---|
10401 | 4.55 | 10.04 | -27.3 | 19.73 | 12.01 | 0.16 | 7.57 | -6.94 | 12.28 | 0.45 |
10402 | 7.97 | 14.19 | -4.8 | 23.91 | 11.71 | -1.42 | 6.35 | -5.92 | 9.57 | 0.59 |
10403 | 6.79 | 8.97 | -19.65 | 24.13 | 10.61 | -3.17 | 8.91 | -9.16 | 9.24 | 1.06 |
10404 | 7.39 | 7.44 | 7.55 | 26.78 | 9.22 | -1.32 | 7.78 | -10.94 | 6.93 | 0.62 |
10501 | 0.53 | 1.49 | -34.92 | 31.02 | 10.48 | -3.79 | 56.46 | -2.34 | 7.94 | 3.37 |
- 選取前五季稅後純益率年成長及毛利率年成長>0的股票
df_all_1 = df_all_gross>df_all_gross.shift(4)
df_all_2 = df_all_tax>df_all_tax.shift(4)
method_1 = df_all_1.iloc[-5:].sum()
method_2 = df_all_2.iloc[-5:].sum()
method = method_1[method_1==5].index & method_2[method_2==5].index
print(method)
dataframe有個好處是說,他可以直接對表格進行操作,比如說利用shift(num),可以將表格平移num個欄位,以範例為例,shift(4)可以比較4季前的數據,也就是年成長
Index(['1102', '1109', '1256', '1413', '1436', '1514', '1605', '1786', '2007','2049', '2201', '2327', '2332', '2337', '2342', '2344', '2348', '2358','2365', '2443', '2458', '2480', '2492', '2606', '2617', '2850', '2904','3014', '3016', '3026', '3090', '3383', '3443', '3515', '3532', '3563',
'3622', '3661', '3703', '4155', '4958', '5234', '5515', '6112', '6477','8163', '8462', '8481', '9912'],
dtype='object')
篩選出來的股號如上,利用Dataframe的性質,可以很快地做出條件式的篩選
- 也可以看看目前上市公司的稅後純益率落在那些區塊,利用直方圖呈現
df['稅後純益率'].hist(bins = range(-20,40))
plt.xlabel('profit rate')
plt.ylabel('Frequency')
dataframe可以直接利用直方圖作,只要在任何的df後面接.hist就好