輕鬆學習 Python |從基礎到應用,成為初級資料分析師 # Python資料視覺化 使用套件:Matplotlib ## 🎨 Matplotlib 套件 Matplotlib 是 Python 中最常用的 資料視覺化套件,用來畫圖、呈現資料趨勢與結果。 ### 1. 繪製基本圖表 例如:折線圖、長條圖、散佈圖、圓餅圖。 ``` # 例:折線圖 import matplotlib.pyplot as plt x = [1, 2, 3, 4] y = [10, 20, 15, 25] plt.plot(x, y) plt.title("Line Chart") plt.xlabel("X") plt.ylabel("Y") plt.show() ``` ![image](https://hackmd.io/_uploads/Syd536kbZg.png) ### 2. 繪製客製化統計圖表 箱形圖、直方圖、多個子圖 可調整顏色、樣式、字體、刻度等。 ``` # 例:直方圖 import numpy as np import matplotlib.pyplot as plt plt.hist(np.random.randn(1000), bins=30) plt.title("Histogram") plt.show() ``` ![image](https://hackmd.io/_uploads/BJzT3aybbx.png) # 範例 ## 股市預測程式 一、 程式架構解析 (Architecture Breakdown)程式碼邏輯呈現線性的 ETL + Analysis + Modeling + Visualization 流程: 1. 資料獲取與清洗 (Data ETL) * 工具: yfinance, pandas * 動作: 下載台積電 (2330.TW) 過去 5 年數據,並只保留 Adj Close (還原權值收盤價)。 * 目的: 建立分析基底。 *選用還原權值是因為台積電有配息,若只看純收盤價會造成股價「假性下跌」,影響報酬率計算。* 2. 統計特徵工程 (Statistical Feature Engineering) * 工具: numpy, pandas * 動作: * 計算 對數報酬率 (Log Returns):$ln(P_t / P_{t-1})$。總報酬率可以簡單地通過將各個時間段的對數報酬率相加得到! * 計算 年化漂移率 (Drift, $\mu$):預期未來的平均成長速度。股價走勢的關鍵參數,代表了在排除隨機波動後,資產在一年內的平均期望報酬。$\mu$ 用於估計資產的長期回報潛力。 * 計算 年化波動率 (Volatility, $\sigma$):股價上下震盪的劇烈程度。$\sigma$ 是金融領域中最常用的風險衡量指標。波動率越高,股價的變動幅度越大,潛在的風險也越高。 * 目的: 將雜亂的股價數據,轉化為數學模型可以理解的參數(平均值與標準差)。 4. 確定性模型:線性回歸 (Deterministic Model - Linear Regression) * 工具: sklearn.linear_model * 動作: 將「日期」作為 X,「股價」作為 Y,畫出一條直線。 * 目的: 提供一個「如果不考慮波動,長期趨勢平均會怎麼走」的基準線 (Baseline)。這代表的是一種絕對的趨勢預測。 5. 隨機性模型:蒙地卡羅模擬 (Stochastic Model - Monte Carlo & GBM) * 工具: numpy * 動作: 使用 幾何布朗運動 (Geometric Brownian Motion, GBM) 公式。公式:$S_t = S_{t-1} \cdot e^{(\mu - \frac{\sigma^2}{2})dt + \sigma\sqrt{dt}Z_t}$利用亂數產生器生成 1000 條可能的平行宇宙路徑。 * 目的: 這是核心預測部分。它承認「未來是不確定的」,因此不只給一個價格,而是給出一個機率分佈範圍(90% 信賴區間)。 6. 視覺化 (Visualization) * 工具: matplotlib * 動作: 將歷史數據、線性趨勢、模擬的平均路徑、悲觀與樂觀區間畫在同一張圖上。