
🐼什麼是Pandas?
Pandas 是 Python 最重要的資料處理與分析工具,名稱來自 "Panel Data"(跨時間的結構化資料),由 Wes McKinney 開發。 它提供兩個核心資料結構: Series:一維的資料列(類似 list) DataFrame:二維表格資料結構(像 Excel + SQL 的合體)
Pandas能做什麼?
只要你是針對"結構化資料"做處理,那麼只要你想得到的Pandas都能做!!!

為什麼資料科學家一定要學Pandas?
1. 🚀 效率高:數據前處理的瑞士刀
在模型訓練前,資料通常是:
- 有缺失值
- 欄位混亂
- 格式不一致
- 包含噪音
這些都可以透過 Pandas 快速清理、轉換、篩選。 🎯丟入模型訓練前的資料一定要先處理過喔!!!
2. 💡 可結合其他套件
Pandas 是資料科學的中樞神經,可與以下套件無縫整合:
- 📊 Matplotlib / Seaborn(視覺化)
- 🤖 Scikit-learn(機器學習)
- 🔢 NumPy(數值處理)
- 🧪 Statsmodels / SciPy(統計分析) 💡 跟NumPy一樣,許多應用套件也是基於Pandas的資料處理架構來開發的,可以適用於很多常用套件。
3. 👩💻 寫法類似 SQL + Excel
如果你熟悉 Excel 表格或 SQL,學 Pandas 將會得心應手:
df[df["Age"] > 30] # 相當於 SQL 的 WHERE Age > 30
df.groupby("Region").mean() # 相當於 GROUP BY + AVG
4. Pandas在資料科學中的位置
[ 原始數據 ] → Pandas → [ 清理 / 結構化 ] → NumPy / Sklearn / XGBoost / 可視化 💡 由此可看出Pandas在整個資料處理流程中是不可或缺的一部分!!!
小節: 為什麼要學Pandas?
- ✔ 是所有資料工作的基礎
- ✔ 比 Excel / SQL 更靈活強大
- ✔ 實務中無可替代:90% 的時間都用來處理資料
- ✔ 與 Python 生態系無縫整合(ML、統計、視覺化)
初識Pandas: Data Cleaning & Filtering
1. 資料結構: pd.Series
Series 是 一維的標籤化陣列,像是加了index的 list 或 numpy.array。
import pandas as pd
s = pd.Series([10, 20, 30], index=['a', 'b', 'c']) # 建立pd.Series
print(s)
print(s['a']) # 取出 a 索引值
print(s.mean()) # 計算平均
print(s + 5) # 每個元素加
#輸出
a 10
b 20
c 30
dtype: int64
10
20.0
[15, 25, 35]
2. 資料結構: pd.DataFrame
DataFrame 是二維表格資料結構,就像是 Excel 表格或 SQL 資料表。
# 建立方法一
data = {
'Name': ['Amy', 'Ben', 'Cara'],
'Age': [22, 24, 23],
'Score': [85, 90, 88]
}
df = pd.DataFrame(data)
# 建立方法二(用Series)
s1 = pd.Series(['Amy', 'Ben', 'Cara'])
s2 = pd.Series([22, 24, 23])
s3 = pd.Series([85, 90, 88])
df = pd.DataFrame({'Name':s1 ,'Age':s2, 'Score':s3})
print(df)
# 輸出
Name Age Score
0 Amy 22 85
1 Ben 24 90
2 Cara 23 88
說明
建立DataFrame的方法其實有滿多種,但是都大同小異,只要使用自己方便順手的即可!!!
3. 找出缺失值: df.isnull()/df.isna() 與 df.notnull()
df = pd.DataFrame({
"Name": ["Tom", "Jerry", None],
"Age": [25, None, 30]
})
print(df.isnull())
# 輸出
Name Age
0 False False
1 False True
2 True False
說明
在資料處理過程中,找出缺失值跟空值是非常重要的事!!!
💡實際上,空值(None)和缺失值(NaN)是不同東西,在Python中一般以"None"代表空值,而"NaN"代表缺失值。在專案中使用時要特別注意兩者的使用時機與差異!!! 其差異與比較我會在另一篇文章中說明。
4. 處理缺失值: df.dropna() 與 df.fillna()
df.dropna() # 刪除有缺失值的列
df.fillna(0) # 將 NaN 填入指定數值
說明
- df.dropna(axis=0, how='any', inplace=False)
- axis: 0為按照row刪;1為按照column刪
- how: 'any'代表有一個na就刪;'all'代表全都na才刪
- inplace: 是否直接替換原df中的值
- df.fillna('要補上的值')
5. 條件篩選
df = pd.DataFrame({
"Name": ["Tom", "Jerry", None],
"Age": [25, None, 30]
})
df[df['Age'] > 25]
# 輸出
Name Age
2 None 30.0
說明
- df['Age']: 透過欄位名稱來取值
- df['Age'] > 25: 是一個布林值的條件
- df[condition]: 把條件放入df中即可進行篩選值
6. 重設索引
df = df.reset_index(drop=True)
說明
- df經過不同的操作之後,每一筆資料的index已經不再是從0開始的連續排序,尤其經過df.dropna()之後中間都會是一洞一洞的。
- 透過df.reset_index()可將處理好的df重新編index,使其名符其實的成為一個新df。
- 例如:
- dropna()後的index: [1, 3, 5, 6, 8]
- reset_index()後的index: [0, 1, 2, 3, 4]