Shopping Cart

購物車內沒有任何商品。

爬蟲之前,3分鐘 Python 快速打底-從零開始的Python股票爬蟲教學(二)

2015 年以來 Python 在全球的討論度急速上升,老實說 Python 就其他程式語言相比的確好學很多,在數據分析及機器學習的部分更是屌打其他語言。

所以大家不用擔心沒程式背景,網路上也有非常多的 documents 可以參考,開發效率更是高得嚇人,你敢相信短短三行程式碼就可以做量化分析嗎?

立即訂閱電子報,掌握最新資訊!

    稱呼

    電子郵件

    以下非必填,但若您願意分享,我們將能推送更精準的內容給您

    投資經驗

    是否為理工科背景、工程師或有寫程式的經驗?

    有興趣的主題
    量化交易台股期貨海外期貨虛擬貨幣美股

    有興趣的量化交易軟體/平台
    不清楚MultiChartsTradingViewPythonXQ

    想透過量化交易達成甚麼目的?
    不確定自動交易選股回測投資績效量化自己的投資方法想找現成的策略套用

    還有什麼想詢問的?

    20241111 1920 400
    20241111 978 258


    一、認識程式語言

    python_syntax_101112152105

    程式語言依是否接近核心 Hardware 區分成高低等語言,越接近底層核心屬於低等語言,離底層核心越遠的則為高等語言。

    低等語言的語法通常艱澀難懂,寫法非常複雜,好處是執行速度相當快,因為程式碼完全依據功能所開發,相反地高等語言語法非常簡單易懂,短短 3 行就可以達到低等語言需要寫數十行甚至數百行程式碼的功能,缺點是執行速度較低等語言慢,但單就開發效率而言仍屬高等語言佔據優勢。

    因為開發時間可能差 1 到 2 小時,但執行速度上可能只慢 3~5 秒,這也是我們之所以選擇用 Python 作為學習的程式語言的原因。

    Py 101209161710
    Py 101209161711

    二、Python基礎語法

    1. 變數型態

    #str (字串)
    a = 'apple'
    
    # int (整數)
    x = 30
    
    # float (小數點)
    y = 4.5
    
    # list
    l = [2,3,4,5,6]
    
    # dict
    d = {'apple':10,'orange':30}
    
    # bool (布林訊號:True / False)
    condition = True

    2. 函式庫

    (1)class

    class Animal():
        def __init__(self, name):
            self.name = name
    x = Animal("dog")
    
    print(x.name)
    
    

    >>> dog

    class Account:
    
        def __init__(self,name,number):
            self.name = name
            self.number = number
            self.balance = 0
    
        def deposit(self,amount):
            if amount<0:
                raise '輸入錯誤'
            self.balance += amount
    
        def withdraw(self,amount):
            if amount<=self.balance:
                self.balance -= amount
            else:
                raise RuntimeError('餘額不足')
    
    account = Account('Andy','123–456–789') # 輸入使用者名稱 & 電話號碼
    account.deposit(100) # 存入100元
    account.withdraw(30) # 提出30元
    account.balance # 目前存款

    >>> 70

    (2)decorator

    # syntactic sugar 快寫法
    
    class Animal:
        def __init__(self, barking):
            self.barking = barking
    
        def bark(self):
            print("Bark~")
    
    @Animal
    def dog():
        print("woof~")
    
    @Animal
    def cat():
        print("meow~")
    
    x = dog
    x.barking()

    >>> woof~

    (3)try / except (嘗試執行第一區塊的程式碼如果出現error的話則執行第二區塊的程式碼)

    import requests
    try:
    res = requests.get(url)
    except:
    print('爬蟲失敗,請稍後再試')

    (4)lambda

    import pandas as pd
    
    # def 寫法
    def str_to_numeric(s):
    f = pd.to_numeric(str(s))
    return f
    
    df = str_to_numeric(df)
    
    # lambda 寫法
    df = df.applymap(lambda s:pd.to_numeric(str(s)))

    (5)list comprehension

    # list 寫法
    l = []
    for x in df:
    if x>0:
    l.append('red')
    else:
    l.append('green')
    
    # list 縮寫法
    ['red' if x>0 else 'green' for x in df]

    三、pandas應用

    Series
    import pandas as pd
    
    date = pd.date_range('2022-01-01','2022-01-05')
    s = pd.Series([111,124,131,126,121],index=date

    >>>
    2022-01-01    111
    2022-01-02    124
    2022-01-03    131
    2022-01-04    126
    2022-01-05    121

    Freq: D, dtype: int64

    DataFrame
    import pandas as pd
    
    date = pd.date_range('2021-01-05','2021-01-09')
    df = pd.DataFrame({
        'data1':[120,123,122,127,130],
        'data2':[31,33,37,34,29]
    },index=date)

    >>>
            data1 data2
    2021-01-05   120   31
    2021-01-06   123   33
    2021-01-07   122   37
    2021-01-08   127   34
    2021-01-09   130    29

    結論

    一路複習下來有沒有感受到 Python 語法的強大呢?特別是資料科學家必學的 pandas 應用,礙於篇幅我們就不特別深入去探討,其實大部分的時候也是需要用到才會去查程式寫法,所以大家不用強迫自己一定要背起來所有的功能!

    最後大家如果對於pandas有興趣的話可以參考 《資料科學家的 pandas 實戰手冊:掌握 40 個實用數據技巧》 ,裡面有更多厲害的功能給大家自行去挖掘囉!


    加入LINE社群量化交易討論群」無壓力討論與分享!

    加入Discord 「量化交易討論群」即時獲取實用的資源!

    Write Together 101306261122
    Write Together 101306261121
    Oscar
    Oscar

    具備多年量化經驗,現於外商基金公司擔任量化交易工程師,研究臺股、期貨、加密貨幣等交易策略及回測系統。擅長使用Python網站爬蟲、資料處理、建構回測系統、風險分析,及資料統計視覺化。曾受邀至國立臺北商業大學擔任業師授課。未來將著重在機器學習、神經網路於投資交易上的應用。

    文章: 5

    4 則留言

    發佈留言

    發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *