Sean talks

Attitude is everything

0%

[Note][Pandas] .unique, .isna, .any, .get_dummies, .Serise

簡單的紀錄一下近期複習 pandas 用到的 method 筆記,
舉例來說,今天有個 credit record 如下:

1
2
3
4
5
6
7
8
9
10
11
12
record.info()
>>>
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1048575 entries, 0 to 1048574
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 ID 1048575 non-null int64
1 MONTHS_BALANCE 1048575 non-null int64
2 STATUS 1048575 non-null object
dtypes: int64(2), object(1)
memory usage: 24.0+ MB

Method

.unique

透過 .unique() 得到 Series 中的唯一值

1
2
3
record['STATUS'].unique()
>>>
array(['X', '0', 'C', '1', '2', '3', '4', '5'], dtype=object)

.isna

.isna() 找出漏失欄位

1
2
3
4
5
6
7
8
9
record.isna()   # 列出所有 row
>>>
ID MONTHS_BALANCE STATUS
0 False False False
1 False False False
... ... ... ...
... ... ... ...
1048574 False False False
1048575 rows × 3 columns

.any

.any() 找出任何是空的 columns

  • axis : {0 or ‘index’, 1 or ‘columns’, None}, default 0
1
2
3
4
5
6
record.isna().any()
>>>
ID False
MONTHS_BALANCE False
STATUS False
dtype: bool

.Series

舉例來說,今天有個日期紀錄如下:

1
2
3
4
5
6
7
8
9
d = {'date':['2020-01-12', '2020-01-22', '2020-01-31'], 'col':[2, 3, 1]}
date = pd.DataFrame(
data=d
)
>>>
date col
0 2020-01-12 2
1 2020-01-22 3
2 2020-01-31 1

.Series.str.split 可以對 Series 字串分割,並返還指定序列。

1
2
3
4
5
6
7
8
9
# apply function 遊歷每一行數據
date['day'] = date['date'].apply(
lambda x:int(x.split('-')[2])
)
>>>
date col day
0 2020-01-12 2 12
1 2020-01-22 3 22
2 2020-01-31 1 31

One-hot encoding

將 STATUS 做 one-hot 編碼

為什麼要做 one-hot:

  • 離散特徵之間沒有大小關係意義,比如此資料中的 STATUS 代表某一種 情況,或例如某種產品之顏色特徵。

.get_dummies

.get_dummies() 可以對離散特徵進行 one-hot 編碼,以下術為例可得狀態 0~5, C, X 的 one-hot 編碼。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
pd.get_dummies(
record['STATUS'],
prefix = 'sta'
).head(n=10)
>>>
sta_0 sta_1 sta_2 sta_3 sta_4 sta_5 sta_C sta_X
0 0 0 0 0 0 0 0 1
1 1 0 0 0 0 0 0 0
2 1 0 0 0 0 0 0 0
3 1 0 0 0 0 0 0 0
4 0 0 0 0 0 0 1 0
5 0 0 0 0 0 0 1 0
6 0 0 0 0 0 0 1 0
7 0 0 0 0 0 0 1 0
8 0 0 0 0 0 0 1 0
9 0 0 0 0 0 0 1 0

Reference: