Series
編碼過程
將vec看作爲一個變量的4次抽樣得到向量:
- 查看該變量可以取幾種值 num = len(set(vec)),這裏num=3;最終的編碼結果用num位表示,這裏用3爲表示:xxx;
- 變量的不同取值按自然順序(數字大小,字母先後)進行排序:seq = sorted(set(vec));
- 取每次抽樣的取值,放到第二步得到的序列中,看該值在序列的哪一位相同,就將該位設置爲1,其餘的設置爲0.
代碼示例
import pandas as pd
if __name__ == '__main__':
# vec = ('c', 'a', 'b', 'a')
vec = list('caba')
s = pd.Series(vec)
print(pd.get_dummies(s))
運行結果
DataFrame
編碼過程
將matrix看作3個變量的4次抽樣——每列代表一個變量,每行是對3個變量的一次抽樣:
- 列舉每個變量的抽樣的不同取值,將其按自然順序排序後,按變量出現的次序進行拼接得到序列;
- 遍歷矩陣行,行中出現了哪些值,就將上步得到的序列的相應位置記爲1,其餘位置記爲0.
代碼示例
import pandas as pd
if __name__ == '__main__':
matrix= [list('abc'), list('bdc'), list('bac'), list('acc')]
df = pd.DataFrame(matrix)
print(pd.get_dummies(df))