本篇筆記著重在將損益表變數套進Sankey Chart三大結構/四大元素(因為前面的抓取資料還沒搞懂,暫時無法分享(>人<;),會分享
Threads上大神分享的練習題,不能只看還要操作。本系列學習筆記會實作大神分享的程式碼,加上自己的註解跟邏輯。
https://www.threads.net/@dn.ape/post/DDbPst7pAId?xmt=AQGzB518N9F6BXd0SA2DruCtASNpfCZ0wp9S1TGd5CiRrQ
留言處原作者提供程式原始碼下載本次練習的步驟與目標 (數遊原人DigNo Ape 提供)
- 獲取 WMT 財報Excel連結 ➡ Nasdag 獲取數據財報 (但因我爬蟲失敗嗚嗚,所以先用大神的檔案練習後面Pandas的部分)
- 匯入 Excel (urllib) 並轉換成 Pandas dataframe ➡Google Colab Python Notebook (這部分我也卡住,應該是CSV 檔找不到的問題)
- 定位財報細項、營收細項等。➡OpenPy XL (作者有提供 Excel)
- 將損益表變數套進Sankey Chart三大結構/四大元素 。本筆記只能從這裡開始。
- 目標做出 Sankey Chart (如下圖)


作者提供的程式碼檔案
分析師結論:FY25Q4 財報 - 本季營收達到$180.55B,YOY增長 4.1%,略高於市場預期 。 - EPS為$0.66 ,略高於預期。 - 電子商務增長 16%,美國的線上銷售額增長 20%,全球電子商務目前佔銷售額的 18% - 全球廣告業務增長 27%,$4.4B - 全球會員業務增長 21%,$3.8B - Walmart Marketplace 業務增長 37%,約45% 的訂單由 WFS 配送 - Capex $23.8B,用於店鋪改造、新店擴編和供應鏈自動化
每個檔案所代表的意義(照順序執行)
13F Berkshire Hathaway sent.ipynb
,它爬取網頁波克夏的持股資訊,不依賴其他 Notebook。在這個檔案中,用Pandas DataFrame (df_data
),轉換資料並進行處理。- 我試過網站打不開,程式可能無法正常運行。
- duckdb.ipynb → Pandas SQL sent.ipynb
- 這兩個檔案處理財務資料,duckdb先把 CSV 檔變成
df
這個變數,再用Pandas處理。 - 這兩個檔案的用途我有問 ChatGPT 😣
- 這兩個檔案處理財務資料,duckdb先把 CSV 檔變成
- 直接執行 WMT_Sankey_Chart_Sent.ipynb,因為它處理 Excel,不依賴其他 Notebook。主要透過 OpenPyXL 解析財報 (Excel),並繪製 Sankey Diagram。正常來說,應該將前面三個檔案都處理過,才有辦法產生 Excel財務報告,但是原作者將 OpenPyXL 解析財報 (Excel) 做成連結,所以跳過前兩的資料分析步驟也可以繪製圖表。
- 為什麼我會知道?因為我一執行 WMT_Sankey_Chart_Sent.ipynb 就可以畫圖,剛好碰巧可以產生圖表。
ipynb 檔案介紹
ipynb
(Jupyter Notebook)是一種 互動式 Python 環境,常用在Google Colab 的環境,檔案會包含
- 程式碼單元格(Code Cells):可以執行 Python、SQL、Markdown 等語言,每個區塊可以獨立執行。
- 文字單元格(Markdown Cells):用來寫筆記或說明(可以顯示粗體、標題)
- 筆記 + 說明 ➝ 用 Markdown Cell
- Python 註解 ➝ 用
#
- SQL 註解 ➝ 用
--
或/* ... */
- 執行輸出(Outputs):顯示圖表、數據表、錯誤訊息等
- 元數據(Metadata):包含 Notebook 設定資訊
如果要用 VS code 需要安裝 Jupyter Extension
準備環境
Google Colab Python Notebook 是比較適合的環境,因為可以在網頁上使用,許多套件也已經安裝好了。我選擇用 VS code (可先到官網下載) 呈現,目的是帶著大家一起學會安裝環境。
小技巧:開啟行數顯示,VS Code tips — Enable line numbers in Jupyter notebooks
一開始就跟我說 MissingModuleSource

如何安裝:pip
的錯誤訊息顯示 bs4
(BeautifulSoup) 無法被解析,通常是因為函式庫未安裝或環境未正確設定。以下是解決步驟:
確認 bs4
是否已安裝
在 VS Code 終端機 (Terminal) 中執行:
pip show bs4
如果沒有安裝,則執行:
pip install beautifulsoup4
或python -m pip install beautifulsoup4

還有很多套件沒有被安裝,有沒有比較快的方法呢?
在 VS Code 的終端機執行:
python -m pip list
看看這些套件是否已經安裝:
beautifulsoup4
簡稱 bs4
- 如果財報數據是 HTML 表格 或 XML 格式,
bs4
可以用來擷取數據。
- 如果財報數據是 HTML 表格 或 XML 格式,
requests
- 網頁爬蟲的工具,Python 最常用的 HTTP 請求庫
- 發送 GET 請求到財報數據網站 (如 SEC、Yahoo Finance)。
pandas
- 讀取 JSON、CSV、Excel 或從
requests
爬取的數據。 - 清理數據,例如刪除空值、重新命名欄位、計算財務指標 (ROE, EPS...)。
- 轉換數據格式,讓它適合 Sankey Chart。
- 讀取 JSON、CSV、Excel 或從
numpy
- 數值計算,財報中可能涉及 比率計算 (毛利率、淨利率、EBITDA)。
- 進行 數學運算 (例如標準差、回歸分析) 來評估財務狀況。
numpy
提供更快的數據處理,比pandas
更高效。

我自己的版本(需要等個5秒才會跑出來)
如果 python -m pip list
沒有列出這些套件,表示你的 Python 環境可能不對,請嘗試:
- 在 VS Code 左下角的 Python 版本 (狀態列) 點擊,選擇正確的 Python 環境。
- 在終端機中執行:
python -m pip install beautifulsoup4 requests pandas numpy
2. 確保所有需要的套件都已安裝
如果有缺少的套件,可以手動安裝:(可以用空格一鍵安裝)
pip install beautifulsoup4 requests pandas numpy
結論:這些套件的功能
pandas
來整理這些數據,可能透過 requests + bs4
來爬取財報數據,再透過 numpy
進行數據轉換,最後用 plotly
或 matplotlib
畫出 Sankey Chart。
但如果你的數據已經在 Excel / CSV,其實 requests
& bs4
不一定要用,但如果你要從網頁爬取財報數據,那這些工具會很有幫助!