---
# System prepended metadata

title: 社課1-3_Python資料視覺化與範例

---

輕鬆學習 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
* 動作： 將歷史數據、線性趨勢、模擬的平均路徑、悲觀與樂觀區間畫在同一張圖上。
