Pandas DataFrame
DataFrame 是 Pandas 最核心的資料結構,是一個二維的表格,由列(row)和欄(column)組成。你可以把它想像成 Excel 試算表或資料庫的表格。
建立 DataFrame
從 dict 建立
最常見的方式是用 dictionary,每個 key 是欄位名稱,value 是該欄位的資料:
import pandas as pd
data = {
'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30, 35],
'city': ['Taipei', 'Tokyo', 'Seoul']
}
df = pd.DataFrame(data)
print(df)
輸出:
name age city
0 Alice 25 Taipei
1 Bob 30 Tokyo
2 Charlie 35 Seoul
從 list of dicts 建立
每個 dict 代表一列資料:
data = [
{'name': 'Alice', 'age': 25, 'city': 'Taipei'},
{'name': 'Bob', 'age': 30, 'city': 'Tokyo'},
{'name': 'Charlie', 'age': 35, 'city': 'Seoul'}
]
df = pd.DataFrame(data)
print(df)
從二維 list 建立
data = [
['Alice', 25, 'Taipei'],
['Bob', 30, 'Tokyo'],
['Charlie', 35, 'Seoul']
]
df = pd.DataFrame(data, columns=['name', 'age', 'city'])
print(df)
自訂索引
df = pd.DataFrame(data, columns=['name', 'age', 'city'], index=['a', 'b', 'c'])
print(df)
輸出:
name age city
a Alice 25 Taipei
b Bob 30 Tokyo
c Charlie 35 Seoul
DataFrame 基本屬性
data = {
'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30, 35],
'city': ['Taipei', 'Tokyo', 'Seoul']
}
df = pd.DataFrame(data)
print(df.shape) # (3, 3) - 3 列 3 欄
print(df.columns) # Index(['name', 'age', 'city'], dtype='object')
print(df.index) # RangeIndex(start=0, stop=3, step=1)
print(df.dtypes) # 各欄位的資料型別
print(len(df)) # 3(列數)
選取欄位
# 選取單一欄位,回傳 Series
print(df['name'])
# 選取多個欄位,回傳 DataFrame
print(df[['name', 'age']])
選取列
# 用 loc 以索引標籤選取
print(df.loc[0]) # 第一列
print(df.loc[0:1]) # 第 0 到 1 列
# 用 iloc 以位置選取
print(df.iloc[0]) # 第一列
print(df.iloc[0:2]) # 前兩列
選取特定儲存格
# loc[列, 欄]
print(df.loc[0, 'name']) # Alice
# iloc[列位置, 欄位置]
print(df.iloc[0, 0]) # Alice
新增欄位
# 新增固定值欄位
df['country'] = 'Asia'
# 新增計算欄位
df['age_plus_10'] = df['age'] + 10
print(df)
刪除欄位
# 刪除欄位
df = df.drop('age_plus_10', axis=1)
# 或使用 del
del df['country']
刪除列
# 刪除特定索引的列
df = df.drop(0) # 刪除索引為 0 的列
條件過濾
# 篩選 age > 25 的資料
result = df[df['age'] > 25]
print(result)
輸出:
name age city
1 Bob 30 Tokyo
2 Charlie 35 Seoul
修改資料
# 修改單一值
df.loc[0, 'age'] = 26
# 修改整個欄位
df['age'] = df['age'] + 1
DataFrame vs dict
| 特性 | DataFrame | dict |
|---|---|---|
| 結構 | 二維表格 | key-value |
| 選取 | 支援欄位、列、條件篩選 | 只能用 key 存取 |
| 運算 | 支援向量化運算 | 需要迴圈 |
| 統計 | 內建統計方法 | 需要自己計算 |
| 檔案讀寫 | 直接讀寫 CSV、Excel 等 | 需要轉換 |
DataFrame 是 Pandas 的核心,後續的教學都會圍繞著 DataFrame 的操作展開。