iT邦幫忙

2022 iThome 鐵人賽

DAY 22
0
AI & Data

Python網路爬蟲系列 第 22

Day22 –台灣證券交易所(股票資訊繪製成折線圖)

  • 分享至 

  • xImage
  •  

目標網站:https://www.twse.com.tw/zh/
進入網站後點選交易資訊/個股年成交資訊
以下是我查詢股票代號2330台積電的盤後資訊。
https://ithelp.ithome.com.tw/upload/images/20221007/20152406SHQu69JHPt.png
跟昨天一樣點選CSV下載
https://ithelp.ithome.com.tw/upload/images/20221007/20152406aaLEXm83RU.png
我們要做的是設計股票台積電1994-2021每年最高價、最低價、收盤平均價的走勢圖:
首先import我們需要的套件:

import csv
import matplotlib.pyplot as plt
from datetime import datetime

接下來是要帶入你的csv檔案,可以對著你的檔案點選右鍵/複製路徑
https://ithelp.ithome.com.tw/upload/images/20221007/20152406HlI0BQZOYx.png
接下來設定、儲存和移除我們不需要的值

fn = '/Users/sunwei/Desktop/iThone/Day22/FMNPTK_2330.csv'
with open(fn) as csvFile:
    csvReader = csv.reader(csvFile)
    listCSV = list(csvReader)
    csvData = listCSV[2:-5]
    years, highs, lows, prices = [], [], [], []
    for row in csvData:
        try:
            year = int(row[0]) + 1911
            high = float(row[4])
            low = float(row[6])
            price = float(row[8])
        except Exception:
            print('有缺值')
        else:
            highs.append(high)
            lows.append(low)
            prices.append(price)
            years.append(year)

其中,我們發現這個檔案中的前兩行和後五行是我們不需要的,因此轉換成串列並切片刪除

listCSV = list(csvReader)
csvData = listCSV[2:-5]

接下來是繪圖的設定,每個人可以依據需求使用不同的值。

fig = plt.figure(dpi = 80, figsize = (12, 8))
plt.plot(years, highs, '-*', label = 'high')
plt.plot(years, lows, '-o', label = 'low')
plt.plot(years, prices, '-^', label = 'price')
plt.legend(loc = 'best')
fig.autofmt_xdate()
plt.title('Taiwan Semiconductor Manufacturing Company', fontsize=24)
plt.xlabel("", fontsize=14)
plt.ylabel("price", fontsize=14)
plt.tick_params(axis='both', labelsize=12, color='red')
plt.show()

output:
https://ithelp.ithome.com.tw/upload/images/20221007/20152406P1DWpsOSoi.png

參考書籍:
洪錦魁 -- Python網路爬蟲:大數據擷取、清洗、儲存與分析:王者歸來 2019
林俊瑋, 林修博 --- Python:網路爬蟲與資料分析入門實戰 2018


上一篇
Day21 –證券櫃買中心
下一篇
Day23 - 台灣證券交易所(CSV檔轉換)
系列文
Python網路爬蟲30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言