Pandas Series
Series 是 Pandas 的一維資料結構,類似於 Python 的 list,但每個元素都有一個索引標籤(index)。你可以把 Series 想像成一個有標籤的陣列,或是 DataFrame 中的一個欄位。
建立 Series
從 list 建立
import pandas as pd
# 從 list 建立 Series
s = pd.Series([10, 20, 30, 40])
print(s)
輸出:
0 10
1 20
2 30
3 40
dtype: int64
左邊的數字是索引(index),右邊是對應的值。
自訂索引
s = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])
print(s)
輸出:
a 10
b 20
c 30
d 40
dtype: int64
從 dict 建立
data = {'apple': 100, 'banana': 200, 'orange': 150}
s = pd.Series(data)
print(s)
輸出:
apple 100
banana 200
orange 150
dtype: int64
Dictionary 的 key 會自動成為索引。
存取元素
使用索引標籤
s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print(s['a']) # 10
print(s[['a', 'c']]) # 取多個元素
使用位置
s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print(s[0]) # 10
print(s[-1]) # 30
print(s[0:2]) # 切片
Series 屬性
s = pd.Series([10, 20, 30], index=['a', 'b', 'c'], name='numbers')
print(s.values) # array([10, 20, 30])
print(s.index) # Index(['a', 'b', 'c'], dtype='object')
print(s.dtype) # int64
print(s.name) # numbers
print(len(s)) # 3
Series 運算
Series 支援向量化運算,可以對所有元素同時進行計算:
s = pd.Series([10, 20, 30, 40])
print(s + 5) # 每個元素加 5
print(s * 2) # 每個元素乘 2
print(s > 20) # 布林運算
輸出:
0 15
1 25
2 35
3 45
dtype: int64
0 20
1 40
2 60
3 80
dtype: int64
0 False
1 False
2 True
3 True
dtype: bool
常用方法
s = pd.Series([3, 1, 4, 1, 5, 9, 2, 6])
print(s.sum()) # 31(總和)
print(s.mean()) # 3.875(平均)
print(s.max()) # 9(最大值)
print(s.min()) # 1(最小值)
print(s.std()) # 標準差
print(s.unique()) # [3 1 4 5 9 2 6](不重複的值)
print(s.value_counts()) # 各值出現的次數
處理缺失值
s = pd.Series([1, 2, None, 4, None])
print(s.isnull()) # 找出缺失值
print(s.dropna()) # 刪除缺失值
print(s.fillna(0)) # 用 0 填補缺失值
Series vs List
| 特性 | Series | List |
|---|---|---|
| 索引 | 可自訂標籤索引 | 只能用數字索引 |
| 資料型別 | 單一型別 | 可混合型別 |
| 運算 | 支援向量化運算 | 需要迴圈 |
| 效能 | 較快(底層是 NumPy) | 較慢 |
Series 是 DataFrame 的組成單位。當你從 DataFrame 取出一個欄位時,得到的就是一個 Series。在實務上,你更常操作的會是 DataFrame。