輕鬆學習 Python |從基礎到應用,成為初級資料分析師
# Python常用數據工具及技巧
使用套件:Pandas、Numpy
## Pandas套件 [Link](https://colab.research.google.com/drive/1EwanBuLmgsrdUO5_QmU-PH0u25cyY37H#scrollTo=fGoqyDBYuoLt)
Pandas 的主要功能
### 1. 讀取與寫出資料(I/O 操作)
支援多種資料格式,如 CSV、Excel、JSON、SQL 等。
```
import pandas as pd
df = pd.read_csv("/content/sample_data/california_housing_train.csv")
print(df.head())
```
### 2. 資料清洗與整理
例如:處理缺失值、刪除欄位、合併資料、資料轉換等。
```
# 處理缺失值
df = df.dropna() # 移除有缺失值的列
# 或
df = df.fillna(0) # 將缺失值填 0
```
### 3. 資料篩選(Filtering)
可以根據條件選取資料。
例:選出分數大於 80 的學生
```
df[df["score"] > 80]
```
### 4. 統計與描述統計
常用於快速了解資料。
例:取得平均值、標準差
```
df["score"].mean()
df.describe() # 整體統計摘要
```
### 5. 資料分組(GroupBy)
常用於計算分類的統計數據,例如每個班級平均分數。
例:按「班級」分組後計算平均分數
```
df.groupby("class")["score"].mean()
```
### 6. 合併與串接資料(Merge / Join / Concatenate)
類似 SQL 的 join 操作。
例:依照 id 合併兩個表格
```
merged = pd.merge(df1, df2, on="id")
```
### 7. 資料轉換(Pivot Table、Reshape)
可進行資料透視、寬表與長表轉換。
例:建立樞紐分析表
```
df.pivot_table(values="score", index="class", columns="gender", aggfunc="mean")
```
### 8. 時間序列處理
Pandas 對日期時間處理非常強大,可以做重采樣、滑動平均等。
例:將資料按月統計
```
df.resample("M").sum()
```
## NumPy 的主要功能 [Link](https://colab.research.google.com/drive/1EJnqEWMJrrmi7-kPfX48viDu_WObUmRG#scrollTo=bgoc194c_hIo)
### 1. 高效能多維陣列(ndarray)
NumPy 的陣列比 Python list 更快、佔用記憶體更小。
```
#例:建立陣列
import numpy as np
a = np.array([1, 2, 3])
b = np.array([[1, 2], [3, 4]])
```
### 2. 向量化運算(Vectorization)
可直接對整個陣列做運算,不必寫 for 迴圈。
```
例:陣列加法
a = np.array([1, 2, 3])
a * 2
# → array([2, 4, 6])
```
### 3. 統計與數學運算
NumPy 有大量內建函式可對陣列做統計。
```
例:平均、總和、標準差
arr = np.array([1, 2, 3, 4])
arr.mean() # 2.5
arr.sum() # 10
arr.std() # 標準差
```
## QUIZ
題目:
A:早餐50元, 中餐120元, 晚餐80元
B:早餐70元, 中餐60元, 晚餐150元
誰的總餐費超過260元?
```
import pandas as pd
import numpy as np
data = {
'A': [50, 120, 80],
'B': [70, 60, 150],
}
df = pd.DataFrame(data, index=['早餐', '中餐', '晚餐'])
print("--- 原始資料 ---")
print(df)
```
total_expense = df.___()
who_exceeds = total_expense[total_expense > 250]
Answer:
```
total_expense = df.sum()
who_exceeds = total_expense[total_expense > 250]
print("\n--- 餐費超過 250 元的人 ---")
print(who_exceeds)
```