← 課程總覽

📊 第8堂課:資料分析與視覺化

程式學習第八堂課:Python pandas DataFrame、CSV/Excel 讀寫、matplotlib 圖表、股價走勢分析專案
含語音講解(約 60 分鐘),附互動小測驗

📖 第一階段:pandas 基礎(約 25 分鐘)

1. DataFrame:程式中的 Excel

⏱ 15 分鐘
# pip install pandas
import pandas as pd

data = {"姓名": ["丁丁","小美","大雄"],
        "年齡": [25, 22, 28],
        "分數": [85, 92, 78]}
df = pd.DataFrame(data)
print(df)
print(df.describe())  # 統計摘要

print(df["分數"])              # 選取單欄
print(df[df["分數"] > 80])     # 篩選
print(df.sort_values("分數", ascending=False))  # 排序

2. 讀寫檔案

⏱ 10 分鐘
# CSV
df = pd.read_csv("data.csv", encoding="utf-8")
df.to_csv("output.csv", index=False, encoding="utf-8-sig")

# Excel
df = pd.read_excel("data.xlsx")
df.to_excel("output.xlsx", index=False)

# 資料處理
df["新欄位"] = df["分數"] * 1.1
df.dropna(inplace=True)  # 刪除空值

📖 第二階段:視覺化(約 20 分鐘)

3. matplotlib:畫出你的資料

⏱ 15 分鐘
# pip install matplotlib
import matplotlib.pyplot as plt

months = ["1月","2月","3月","4月","5月","6月"]
revenue = [12000, 15000, 11000, 18000, 22000, 25000]

plt.figure(figsize=(10, 5))
plt.plot(months, revenue, marker='o', linewidth=2)
plt.title("上半年營收趨勢")
plt.grid(True, alpha=0.3)
plt.savefig("revenue.png", dpi=150)

📖 第三階段:實戰(約 15 分鐘)

4. 專案:股價走勢分析

⏱ 10 分鐘
import pandas as pd; import numpy as np

dates = pd.date_range("2026-01-01", periods=100, freq="B")
np.random.seed(42)
price = 500
prices = []
for _ in range(100):
    price *= (1 + np.random.normal(0.0005, 0.015))
    prices.append(round(price, 2))

df = pd.DataFrame({"日期": dates, "收盤價": prices})
df["5日均線"] = df["收盤價"].rolling(5).mean()
df["20日均線"] = df["收盤價"].rolling(20).mean()

print(f"最高: {df['收盤價'].max()}, 最低: {df['收盤價'].min()}")
📊 短短幾行完成專業級分析:統計摘要、技術指標、視覺化——Python 資料科學的威力!

🔍 pandas 資料分析實戰

⏱ 15 分鐘
import pandas as pd

# 讀取各種格式
df = pd.read_csv("sales.csv")           # CSV
df = pd.read_excel("report.xlsx")       # Excel

# 快速瀏覽資料
print(df.head(10))      # 前 10 筆
print(df.info())        # 欄位型別、缺失值
print(df.describe())    # 統計摘要(平均、標準差、四分位數)

# 資料篩選
high_sales = df[df["sales"] > 10000]              # 單條件
special = df[(df["sales"] > 5000) & (df["region"] == "North")]  # 多條件

# 群組與聚合
by_region = df.groupby("region")["sales"].sum()    # 各地區總銷售額
by_month = df.groupby(df["date"].dt.month)["sales"].mean()  # 每月平均

# 處理缺失值
df.dropna()                  # 刪除含缺失值的列
df["price"].fillna(df["price"].mean())  # 用平均值填補
🐼 pandas 是 Python 資料分析的標準工具
📊 describe() 一行看完整體資料分佈,是 EDA 的第一步。

🔍 matplotlib 視覺化進階

⏱ 10 分鐘
import matplotlib.pyplot as plt

# 多圖並排
fig, axes = plt.subplots(1, 3, figsize=(15, 4))

axes[0].plot(dates, values, marker='o', color='#6366f1')
axes[0].set_title('每月銷售趨勢')

axes[1].bar(categories, amounts, color=['#4ade80','#f472b6','#fbbf24'])
axes[1].set_title('產品類別銷售')

axes[2].pie(sizes, labels=labels, autopct='%1.1f%%')
axes[2].set_title('市場佔有率')

plt.tight_layout()
plt.savefig('report.png', dpi=150, bbox_inches='tight')
🎨 中文字型:Windows 用 'Microsoft JhengHei',Mac 用 'PingFang TC'
📐 subplots 多圖並排比單獨畫圖更專業,適合做報告。

🧪 小測驗:你學會了嗎?

5 題選擇題,選完按「交卷」看成績
第 1 / 5 題
pandas DataFrame 最像哪種工具?
第 2 / 5 題
df[df["分數"] > 80] 做了什麼?
第 3 / 5 題
df["收盤價"].rolling(5).mean() 計算的是?
第 4 / 5 題
plt.savefig() 做什麼?
第 5 / 5 題
df.describe() 回傳什麼?
你的得分
0/5

🎯 第8堂課,你學會了什麼?

pandasCSV/Excelmatplotlib股價分析

資料科學家的日常工具你已經會用了——讀取、清洗、分析、視覺化,一條龍完成。

→ 前往第9堂課