JMP 的 Python 整合功能已增強,現在導入您的夢幻橄欖球聯賽資料比以往任何時候都更加輕鬆。本次演講首先簡要介紹如何使用 JMP 的原生 HTTP 請求功能存取 ESPN 和 Sleeper 等夢幻橄欖球服務提供者提供的 API,然後重點介紹如何使用 Python 社群現有的 API 封裝庫來提取多年來的夢幻聯賽資料。從聯賽排名、季後賽結果、NFL 球員統計數據和夢幻橄欖球比賽結果,到選秀中的高光時刻和低谷時刻,海量數據等待您去探索!
成功主要取決於選秀的精準把握,還是全年持續的交易和引援?球員的爆發性夢幻表現能否年復一年重複?擁有隊內排名前三的夢幻得分手有多重要?跑衛仍然是夢幻聯賽中最具影響力的位置嗎?還是外接手和四分衛的地位已經更勝一籌?我們將探討這些問題,看看JMP能否幫助您贏得下一個聯賽。
大家好,我是Nick Holmes,JMP公司的測試工程師。感謝各位今天收看我的節目。今天,我們將探討如何使用JMP來贏得你的夢幻橄欖球聯賽。我這裡用了「可能」這個詞,因為顯然,夢幻橄欖球比賽沒有任何絕對的保證。今天,我們將學習如何將夢幻橄欖球數據導入JMP,並進行一些分析,看看我們能發現什麼。
簡單介紹一下我自己。我自認為是個狂熱的夢幻橄欖球愛好者。我管理著一個12人重選聯賽,這個聯賽從2015年左右就開始了。我們今天舉例分析主要用的就是這個聯盟的數據。我做這個演講或說這個計畫的初衷是,我在2022年贏得了聯賽冠軍,但在2023年卻墊底了。我只是想找到一些預測方法或分析手段,幫助我預測自己在夢幻橄欖球中的表現。
我不是統計學家,但我會盡我所能。我們會使用來自 ESPN 和 Sleeper 的數據。 ESPN,大家可能都很熟悉,它是一家夢幻橄欖球服務提供者。 Sleeper 也是一樣,只不過它是一個不同的夢幻橄欖球聯賽託管平台。我們會從這兩個平台匯入數據,並用於我們的分析。
我從 2015 年到 2020 年左右使用 SPN,從 2021 年至今使用 Sleeper,所以我們需要從這兩個平台取得資料。以下簡要概述我們今天將如何把這些資料匯入 JMP 並進行分析。首先,我們需要使用 API 來導入資料。我們將透過兩種方式實現,一種是使用新建 HTTP 請求,另一種是使用 JMP-Python 整合。
接下來,我們將整理這些請求,或者說我將向您展示如何將它們整理成 JMP 類別或 JMP 類別物件。一旦我們將這些資料匯入 JMP,就需要將其整理成 JMP 資料表。有幾種方法可以做到這一點,我將概述 JMP 原生的 JSON 轉資料表功能,以及使用關聯數組和 JSL 建立 JMP 資料表的方法。
一旦我們將資料匯入到 JMP 資料表中,接下來我們將進行一些探索和分析。首先,我們將對資料表進行一些操作。我將使用 Workflow Builder 來演示,然後我們將使用 JMP 的一些平台進行視覺化和分析。
好的,那什麼是 API 呢?您可以在旁邊看到 API 的定義,但我簡單來說,API 是一種從 Web 伺服器檢索資料的方式。 HTTP 協定包含一些方法,例如 GET、POST、DELETE 和 PUT,但今天我們將重點介紹最簡單的 GET 方法。我們將向 URL 或 API 端點發送 GET 請求,然後伺服器會傳回 JSON 字串,我們將使用該字串在 JMP 中建立關聯數組以及建立 JMP 資料表。
JMP 中的「新 HTTP 請求」功能允許我們使用 JSL 與 REST API 進行通訊。正如我之前提到的,該功能支援使用 GET、POST、PUT 和 DELETE 等請求方法。今天,我們將主要關注 GET 請求,並了解如何使用「新 HTTP 請求」將資料匯入 JMP 是多麼簡單。
我首先想向你展示如何從夢幻聯賽Sleeper獲取數據。如果你快速在谷歌上搜尋他們的API,你會找到一些相當不錯的文檔,其中詳細說明了要使用的HTTP請求端點以及你可以預期收到的資料類型。
實際上,這是使用 API 的最佳情況:提供者提供非常清晰的 API 說明,以及傳回的資料類型,並提供非常詳盡的文件。正如您從他們的文檔中看到的,它概述瞭如何獲取聯賽數據,以及如何將球員名單數據匯入 JMP。看起來,對於大多數情況,我們只需要在 URL 中填寫聯賽 ID 即可。
在這個例子中,我僅概述了它在 JMP 中的大致流程。我們提供自己的聯盟 ID 並將其定義為 URL 變數。然後,我們使用新的 HTTP 請求發送該請求,並將 URL 和 GET 方法傳遞給它。發送請求後,我們解析傳回給 JMP 的 JSON 資料。
現在我們已經了解了這個請求的大致形式,接下來看看它在 JMP 中是如何運作的。可以看到這裡開啟了一個 JMP 腳本視窗。如果你看一下定義的 URL,可以看到其中包含了我們的聯盟 ID 和你在投影片中看到的請求。如果我們在這裡運行它,你會看到返回的是一個 JSON 字串。為了更好地在 JMP 中處理這些數據,我們需要將其轉換為 JMP 關聯數組,這就是這裡 `Parsed JSON` 函數的作用。
您可以看到,我們得到了一個關聯數組。如果我們查看這個關聯數組,然後使用下標來獲取聯賽名稱,可以看到我們返回的是“league-certified fantasy football”,也就是聯賽名稱。現在我已經向您展示了一個非常簡單的演示,接下來,我想向您展示如何將查詢操作或組織成 JMP 類,以便組織我們的請求,也就是 HTTP 請求。讓我們結束這個演示,打開專案文件。查看這個專案文件,您會看到我們定義了一些類別來組織查詢。
我們有這樣一個聯賽類。正如您從這裡的參考文件中看到的,它實際上是從一個 Python API 中藉鑑而來,我借用了它的框架,稍後在討論 JMP Python 整合時我們會更詳細地介紹它。只要看一下這個類,您就會發現它包含了聯盟用戶、玩家、選秀和統計數據等類。所有這些後端類別都在呼叫這個基於超級類別的 API,而正是這個 API 在後台發起了新的 HTTP 請求。
讓我們來看看如何使用這個類別來取得資料。我將運行這個類別定義,然後向下滾動到頁面底部,那裡有一些範例。如果滾動讓您感到頭暈,請見諒。現在您可以看到我正在定義一個聯賽對象,並再次為其提供聯賽 ID。您可以看到這裡有類別定義,現在我們可以使用為該物件定義的方法來獲取聯賽的球員名單。我們還可以獲得聯賽的用戶資訊等等。所有這些數據都以關聯數組的形式傳回。
我們暫時先不仔細查看具體內容,只向您展示我們所獲得的數據。現在,我們對使用者、玩家和窗簾都進行了相同的操作。我會將所有這些內容連同幻燈片一起作為簡報材料分享給 JMP 社群。您應該能夠使用我稍後演示的類別將資料匯入 JMP。
我們發現,從 Sleeper 取得數據非常容易。他們提供了一個定義完善的 API,我們可以用它來建立 HTTP 請求。但 ESPN 的情況似乎並非如此。如果你快速搜尋 ESPN API 或 ESPN Fantasy API,你會發現唯一能找到的只是別人寫的一個 Python 類別。他們的 API 似乎沒有公開的文檔。
我們該怎麼辦?現在正是跟大家聊聊 JMP 的好時機,JMP 18 新增了 Python 整合。 JMP 18 已經預先安裝了 Python。我們只需要極少的設定就能使用 Python 套件。之前我向大家展示的 Sleeper 類,或者說受 Python 類啟發而來的類,現在無需我們自己編寫類和方法定義,只需使用您在這裡看到的這行腳本安裝 Python 包,然後通過 Python 將數據導入 JMP 即可。
既然 ESPN 已經有了這樣的功能,我們現在也可以對 ESPN 做同樣的事情。由於 ESPN 缺乏完善的文檔,我們可以直接使用其他人已經編寫好的 Python API。使用 Python 整合有哪些好處呢?所有繁瑣的工作都已經完成。我們無需編寫 API 呼叫邏輯或任何其他類型的資料操作程式碼。我們只需依賴其他人用 Python 編寫的函數和文件即可。
我們只需呼叫 Python 函數並將資料傳回 JMP 即可。以下是一個簡單的範例。如果可能不太容易看清,敬請諒解,因為我想把所有內容都顯示在螢幕上。這些投影片稍後會提供給您查看,但您也可以透過查看函數定義的大小來了解其結構。相較於使用 Python 整合來呼叫別人已經用 Python 定義的 `get_scoreboard` 函數,自己寫一個取得記分板的函數要複雜得多。
現在讓我們來看看ESP和Python整合中的「睡眠者」功能可能會是什麼樣子。我們將結束今天的討論。我們會再次查看這些「睡眠者」類,但這次是整合Python。從我們的聯盟類別中可以看到,我們使用了一系列Python的submit和get語句來與現有的Python API進行互動。
為了取得聯賽訊息,我們只需執行一個 Python submit 語句來定義一個聯盟資訊變數。然後,使用該聯賽資訊變量,我們使用 get_league 函數獲取該變數對應的聯賽信息,最後使用 Python get 函數將該變數傳回給 JMP。
所有這些函數的工作方式與先前使用 JSL 實作的新 HTTP 請求完全相同,只是我們不再需要那個類,因為 HTTP 請求已被抽象化,現在它在 Python 層處理。這使得我們類別的方法定義更加簡潔。現在讓我們來看看 ESPN,這可能是你們大多數人最熟悉的平台,可以看到我們為 ESPN 提供了相同或類似的類別。
不過,Python API 的建構方式更偏向面向對象,聯盟會傳回球隊物件、球員對像等等。然後,我們將使用這些物件的方法來存取它們的屬性。我將運行這個類別定義,以便我們可以看到一些範例,了解如何從 ESPN 獲取資料以及如何與這些物件(即類別物件)進行互動。
你會看到我在這裡獲取我的私人聯賽資訊。可以看到這個物件已經定義了。我們將使用聯賽的 `getTeams` 方法來獲取球隊資訊。現在我們已經定義了一個關聯數組。我們將使用 `for Each` 循環遍歷這個關聯數組,以便列印所有球隊的名稱。正如你在這裡看到的,這是我的球隊名稱。如果我想訪問我的球隊,我會使用 `teams` 變數的下標來獲取我的球隊。現在,如果我想運行 `getWins` 方法來獲取該球隊的勝場數,我可以看到我在該賽季的勝場數是七場,相當平庸。
現在,如果我想查看該隊的球員名單,我會使用 `get roster` 函數,然後解析該名單以返回球員姓名。您可以看到,這裡列出了我在該賽季加入球隊的所有球員。正如我所提到的,這些類別對您是可用的。我花時間為它們添加了註釋,我認為註釋得相當清楚,以便您可以使用它們來存取您自己的球隊資訊。
現在我們已經將資料匯入到 JMP 中,為了進行分析,我們需要將資料匯入 JMP 資料表中。正如我之前提到的,有幾種方法可以做到這一點。當您從 API 呼叫資料時,資料通常以 JSON 字串的形式傳回。 JMP 內建了一個名為「JSON to data table」(JSON 轉資料表)的函數,我們可以使用此函數(如本例所示)根據 JSON 字串建立資料表。
這可能是最簡單的方法了。 JMP 中還有一個 JSON 匯入精靈,你可以用它來自訂要匯入的欄位以及想要從表格中取得的具體資料。另一種方法,正如你所想,在處理我們的 ESPN 資料時可能更有用,因為它更偏向於物件導向:使用 JSL 手動定義表,然後使用物件方法來填充…抱歉,是填充這些列。
正如您在這裡看到的,我們正在遍歷球隊對象,以便填充聯賽中的所有球隊。我們遍歷球隊對象,並且可以看到,為了定義特定列的數據,我們只需使用所需的方法來填充該列。例如,對於勝場數列,我們將使用 `get wins`、`get loss` 等方法。如果存在嵌套對象,我們可以遍歷這些對象,例如,填充一個球員 ID 列表,用於填充某個列。
你可以看到每個表達式的情況。現在讓我來示範一下我們在 JMP 中是如何建立這些資料表的。我分別創建了用於獲取 Sleeper 數據和 ESPN 數據的單獨文件。你可以看到,對於 Sleeper 數據,我們導入了類,因為這些類是我們用來獲取數據的方法。我會快速瀏覽一下,但我會重點介紹之前提到的方法:JSON 轉資料表。你可以看到,我們在這裡使用它來定義列,並為聯賽中的球隊創建一個數據表。
我會再次與您分享這些文件。如果您有某個冷門聯賽的數據,只需運行這裡的最後一行程式碼,即可取得該聯盟自成立以來每年的所有數據。程式碼會用到文件中所有已定義的函數,您可以稍後自行查看。 ESPN 的資料處理方式類似。您會注意到,我們建立表格的方式略有不同,如您在投影片中看到的,我們使用 JSL 定義表格,然後使用物件方法來填入這些表格。
希望您只需執行最後這一行指令就能取得所有 ESPN 資料。讓我們來看看這些資料在 JMP 中的顯示效果。運行這些檔案後,您應該會得到一個以聯賽名稱命名的目錄。對於聯賽的每個年份,您應該會看到以下表格:選秀表、成員表、球隊表,以及聯賽中每個用戶的個人陣容表。
我們來看看這些數據。您可以看到這裡有一個球隊清單。我看看能不能把這些列展開。希望現在夠清晰易讀。每個球隊旁邊都會顯示使用者的顯示名稱。我把字體縮小一點,方便您看得更清楚。每個球隊旁邊還會顯示聯賽成員、勝負場次。您可以點選「球員」列,查看特定球隊的球員清單。
我們會提供選秀數據表,列出每輪選秀中被選中的球員及其順位。您可以點擊用戶查看其選秀中被選中的具體球員,我們還有一份聯盟成員的選秀表格。您可以想像一下,有了這些表格,我們可以進行哪些類型的分析。
在深入分析之前,我想先解釋一下我進行這項分析的動機,就像我之前預告的那樣。 2022年,我所在的聯賽排名第一,而2023年,不幸的是,我排名墊底。我希望從中發現一些可預測的結果。正如你所看到的,從左側的散點圖中可以看出,我擁有一名頂尖的近端鋒和一名頂尖的四分衛,而在我排名墊底的那個聯賽中,這兩個位置都沒有進入前五名。
不過,我的外接手確實更好,所以從這兩張圖表來看,我無法確切地判斷是什麼原因導致我某一年取得成功,而另一年卻失敗了,這就是我進行分析的靈感來源。我們今天要看什麼呢?首先,我們要看的是,夢幻聯盟是從選秀開始的。選秀中某些順位比其他順位更有優勢。
接下來我們要探討的是過去十年夢幻橄欖球發生了哪些趨勢或變化。哪些選秀策略能最大程度地提高勝率?是保守策略還是冒險策略?最後,我還要介紹一下我的聯賽配置,這相當典型:一名四分衛、兩名右外接手、兩名跑衛、兩個靈活位置、一名踢球手,以及一支採用半PPR計分制的防守組。我認為這些都是相當標準的聯賽設定。
希望我們分析得出的結論也能對你們的聯賽有所幫助。選秀順位會影響比賽結果嗎?我們將使用先前展示的數據表進行一些分析。為此,我們將使用工作流程建構器來概覽整理資料表和執行分析的步驟。
您可以在這裡查看工作流程。我們首先進行初始設置,定義聯賽名稱,並告知工作流程從哪裡取得資料。我將逐步演示給您看。接下來,我們將針對聯賽的每一年執行以下步驟。我們將打開一個選秀表。我們將打開一個球隊表。
現在,對於我們的選秀表,我們將按聯盟用戶數量進行子集劃分,以獲取與特定用戶關聯的選秀順位。抱歉,結果大致如下。接下來,我們將把這個數據表與我們的球隊表連接起來,得到一個類似這樣的表格,其中包含該球員或聯盟成員的勝場數以及他們在選秀中的順位。我們將對聯盟的每一年都進行此操作,並將表格連接起來以進行分析。
接下來我會詳細介紹剩餘的步驟。有些表格會在另一個螢幕上顯示,但我這裡只展示最終的輸出表格和分析結果。正如您在這張圖中看到的,X軸代表我們的預測號碼,Y軸代表球隊的勝場數和最終排名。
從這張圖表來看,我並沒有發現選秀順位和最終成績之間有顯著差異或相關性。我主要關注的是勝場數。我們可以看到,如果你在選秀初期就選擇靠前的順位,那麼在我聯賽的歷史數據中,平均勝場數可能會略高一些,然後在選秀中後期可能會出現下滑。我的理解是,無論你的選秀順位如何,你都有機會贏得你所在聯盟的冠軍。
現在讓我們來看看在我所在的聯盟九年的歷史中,選秀策略發生了哪些變化。為了節省時間,我將直接展示我們使用的步驟。我們基本上是打開所有的選秀表格,然後將它們合併,再進行一些子集處理。為了節省時間,我將直接演示整個流程並展示結果。
這裡有兩個輸出圖表。我們仔細看看。我先講解這個主要的圖表,如果你有興趣,可以看看旁邊的圖表。這只是一個選秀順位細分圖表。簡單來說,X軸代表年份,Y軸代表在前四輪選秀中特定位置被選中的球員人數。
從這張圖表可以看出,這是全聯盟的數據,也就是整個聯盟在前四輪選秀中選中的四分衛、跑衛、近端鋒和外接手的數量。我們可以看到,從2015年到2020年,跑衛的選秀人數有所增加,但在過去三年裡有所下降,也就是說,在前四輪選秀中被選中的跑衛數量減少了。外接手的選秀趨勢與跑衛類似,其選秀人數在此趨於穩定,略高於跑衛。我們可以看到,四分衛在選秀早期的受歡迎程度有所下降,但最近略有回升。
近幾年,近端鋒的數量一直保持穩定,只有略微增長。正如你在這張圖表中看到的,我們有逐輪的詳細數據,如果你想更深入地了解,我可以把這張圖表分享給社群。
現在,我們已經了解了選秀策略這些年來的變化,接下來我想探討的是,改變選秀策略是否有效?為了進行這項分析,我們將檢視過去三年中前六輪選秀中每個位置被選中的球員人數。您可以在這裡看到分析步驟。我將運行設定步驟。對於每一年,我們將打開選秀表格,並打開球隊表格。我們將篩選出前六輪的選秀數據。然後,我們將建立一個總計表,顯示每個使用者在每個位置上選中的球員人數。我們將對每一年都進行此操作,然後將結果合併以進行分析。
我們先來看看這張圖表。可以看出,前六輪選秀中被選中的跑衛數量與球隊的勝場數呈現輕微負相關。這印證了我們上次分析中觀察到的趨勢,即跑衛被選中的數量呈下降趨勢。我們還可以看到外接手的數量在前六輪達到峰值,有兩名外接手被選中,之後略有下降,最後有三名外接手被選中。
這裡我們看到斜率最陡的是近端鋒,我們稍後會再詳細討論。這表明,在前六輪選秀中選擇近端鋒與賽季預期勝場數往往呈現相當正相關。四分衛的情況也類似,但斜率略低一些。讓我們用擬合模型,以更統計的方式來分析這個問題。可以看到,近端鋒的斜率非常陡峭。看看左下角的參數估計值。
實際上,從統計學角度來看,在前六輪選秀中選擇近端鋒與賽季預期勝場數之間存在相當強的正相關性。我認為這項分析最重要的結論是:雖然你應該減少選擇跑衛,正如你從這種負相關性中看到的那樣,但在前六輪選擇近端鋒與預測賽季勝場數之間存在相當強的相關性。
現在我想看看頂級球員的表現是否具有可預測性。更具體地說,我想看看每個位置排名前 12 名的夢幻球員中,每年都有哪些球員是同一批人,並以此來判斷你在選秀時應該重點關注哪些球員。
為了節省時間,我將直接示範這個工作流程。您可以在旁邊看到運行過程中的步驟。運行過程只需一點時間。接下來,我將講解使用工作流程進行分析的優勢。它允許您逐步迭代地完成分析的各個步驟,並嘗試找出問題所在。
此外,如果你的同事能夠非常方便地存取你正在處理的數據,他們就能輕鬆地重現你的分析及其步驟。我將在這裡展示該分析產生的圖表和數據。你可以查看旁邊的數據,這些數據主要顯示了每年排名前 12 名的選手中,每個位置的選手與前一年相同的百分比。
從這張圖表來看,我認為跑衛的數量(圖中藍線所示)在過去幾年呈下降趨勢。這意味著與前一年相比,跑衛的年產量預測性降低。而外接手和近端鋒的預測性則有所提高。例如,在2023年,我們看到的頂級跑衛中,過去兩年排名前12位的球員的持球衝鋒次數僅佔總衝球次數的33%。這些位置的球員可能比外接手和近端鋒更難預測。
這是我們的最後一個分析。接下來,我們將探討選秀時應該選擇哪些球員。我們會分析所有這些趨勢和模式。我們的選秀策略應該是什麼?本次分析將著重檢視選秀價值,以及那些選秀順位過高但表現超乎預期的球員如何影響球隊的成績。我想更詳細地介紹一下這個分析,因為它相當有趣。
設定完成後,我們將再次重複每年的操作。首先,我們將打開選秀表和球隊表。接下來的兩個步驟可以忽略,它們只是一些準備工作。現在,我們將對選秀表進行雙變量分析,以查看特定球員的選秀順位與其總得分之間的關係。
透過變數分析,我們可以按位置進行細分,X軸顯示的是球員的選秀順位,Y軸顯示的是球員的總得分。我特別關注圖中那些高於和低於預期值(或迴歸分析得出的該位置預期值)的點。
我想看看這些高於和低於預測線性擬合值的表現會如何影響我們的獲勝幾率。這就是接下來分析的目的。我們會把這些迴歸值和殘差從這些圖表中保存到我們的選秀表中,就像你在這裡看到的那樣。然後我們會把選秀輪次按早期、中期和後期分組。這裡快速重新編碼一下輪次列。
現在我們已經有了早期、中期和晚期的細分數據。我們可以看到,按輪次類別劃分的超常發揮和表現不佳的球員如何影響我們的勝率。接下來我會繼續分析剩餘部分。請稍等片刻,數據正在加載中。抱歉耽擱了。我們快完成了。現在您可以看到,我們得到了一個匯總資料表,其中包含了全年的所有資料。現在,我們統計了每個用戶在特定年份中按輪次類別劃分的超常發揮球員的數量,並且我們擁有所有年份的此類數據。這項分析的目的是了解在特定輪次中表現超常或表現不佳的球員如何影響我們的勝率。
我們可以看一下這個擬合模型圖。我認為這是今天最有趣的分析。我們可以看看這裡的一些槓桿圖,特別關注中期輪次表現極佳的球員和早期輪次表現極差的球員。我正在查看這裡的參數估計值,我們可以看到,統計上顯著,中期輪次表現極佳的球員數量與預測賽季勝場數呈相當正相關。中期輪次表現極佳的球員越多,你贏得更多夢幻聯賽勝利的幾率就越大。
相反,在選秀初期選到表現極差的球員,與你預測的賽季勝場數呈現非常負面的相關性。由此可見,在選秀中期,你應該大膽嘗試,爭取選到那些能打出全壘打的球員,而不必過於擔心選錯。如你所見,在選秀中期選到表現極差的球員似乎不會造成太大的損失。
你不妨放手一搏,爭取選中那些能提升聯賽排名、最大限度增加奪冠幾率的球員,畢竟即使沒選到他們,也不會受到太大的懲罰。相反,如果在選秀初期就錯過了某個球員,或者選中了一個極易受傷的球員,那麼你的夢幻橄欖球之旅將會遭遇巨大的挫折。
感謝您耐心看完這些分析,以下是我的一些總結。去年的情況永遠不會重演。正如我們在先前的分析中所看到的,上賽季的頂級夢幻球員,尤其是跑衛,每個賽季的預測難度都會大大增加。
在典型的聯賽模式中,跑衛的價值正在下降,而且正如我之前提到的,他們的表現也越來越難以預測;而外接手的價值則略有上升,而且他們的表現也比跑衛更加穩定。我們不能再忽視四分衛,尤其是近端鋒的位置。正如我們所見,在選秀初期選擇一名近端鋒往往能提高聯盟的勝率。選秀初期的順位並不能保證你贏得聯賽冠軍,但卻可能導致你輸掉比賽,而聯賽的勝負往往在中段輪次才真正見分曉。
基於我之前討論過的原因,要敢於冒險選擇高潛力球員。現在輪到你們了。我已經提供了我用來將 Sleeper 和 ESPN 資料匯入 JMP 的類別和 API。你們可以使用這些 API 在 JMP 社群中分享自己的分析。如果你們的夢幻聯賽沒有使用 Sleeper 或 ESPN,你們可以參考 Python 整合的概要,使用任何找到的 Python 程式碼庫將資料匯入 JMP 並進行分析。
非常感謝各位今天抽空來這裡。我很期待看到你們的分析,希望你們能幫助我贏得下一場夢幻橄欖球聯賽。謝謝!