
在真實世界的資料專案中,我們很少處理乾淨完美的數學矩陣,更多的是充滿缺失值、混合字串與數字的表格資料 (Tabular Data)。這時,NumPy 就稍顯吃力了。
Pandas 建立在 NumPy 之上,提供了更高級的 DataFrame 結構,讓我們能用類似 Excel 或 SQL 的方式處理資料。
1. 兩大核心:Series 與 DataFrame
Series (序列)
一維陣列,帶有標籤 (Index)。可以想像成是 Excel 的「一欄」或者更強大的 Dict。
import pandas as pd
s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print(s['a']) # 10
DataFrame (資料框)
二維表格,也就是多個 Series 的集合。這就是我們最常用的結構。
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Paris', 'London']
}
df = pd.DataFrame(data)
print(df)
輸出:
Name Age City
0 Alice 25 New York
1 Bob 30 Paris
2 Charlie 35 London
2. 讀取資料 (I/O)
Pandas 支援超多格式,最常見的是 CSV 和 Excel。
# 讀取 CSV
df = pd.read_csv('data.csv')
# 讀取 Excel (需安裝 openpyxl)
df = pd.read_excel('sales.xlsx', sheet_name='Q1')
# 匯出資料
df.to_csv('output.csv', index=False)
3. 檢視資料
拿到資料的第一件事,就是看看它長什麼樣子。
print(df.head()) # 看前 5 筆
print(df.info()) # 查看欄位型別、記憶體用量、是否有缺失值
print(df.describe()) # 快速統計 (平均、標準差、最大最小值)
print(df.shape) # (列數, 欄數)
4. 資料選取 (Selection)
Pandas 提供了兩種選取方式:loc (標籤) 與 iloc (位置)。
假設我們有以下資料:
Name Score
Index
101 Alice 90
102 Bob 85
選取欄位 (Column)
# 回傳 Series
print(df['Name'])
# 回傳 DataFrame (雙中括號)
print(df[['Name', 'Score']])
使用 loc (Label-based)
# 選取 Index 為 101 的那一列
print(df.loc[101])
# 選取 101 的 'Name'
print(df.loc[101, 'Name'])
使用 iloc (Integer-based)
# 選取第 0 列 (不管 Index 是什麼,就是第一列)
print(df.iloc[0])
# 選取第 0~2 列
print(df.iloc[0:2])
5. 條件篩選 (Filtering)
這跟 NumPy 的布林索引很像,但更直觀。
# 找出 Score > 85 的人
high_score = df[df['Score'] > 85]
# 多重條件 (注意要用括號 & |)
target = df[(df['Score'] > 80) & (df['City'] == 'London')]
6. 總結
Pandas 是 Python 資料分析的靈魂。今天我們學會了:
- 建立 DataFrame。
- 讀寫 CSV。
- 使用
loc與iloc切片。 - 基礎篩選。
下一章,我們將進入 Pandas 的深水區——資料清洗 (Data Cleaning) 與 聚合分析 (Group By),這佔據了資料科學家 80% 的工作時間!
延伸閱讀: