Pandas —— get_dummies( )和 factorize( )的区别

Pandas.get_dummies( )

当频繁出现的几个独立变量时,可以使用pandas.get_dummies( )将定性变量转换为 Dummy 变量

1、传入Series

>>> pd.get_dummies(pd.Series(list('abcaa')))
   a  b  c
0  1  0  0
1  0  1  0
2  0  0  1
3  1  0  0
4  1  0  0

2、传入DataFrame

>>> df = pd.DataFrame({'A': ['a', 'b', 'a'], 'B': ['b', 'a', 'c'],
...                    'C': [1, 2, 3]})
>>> pd.get_dummies(df, prefix=['col1', 'col2'])
   C  col1_a  col1_b  col2_a  col2_b  col2_c
0  1       1       0       0       1       0
1  2       0       1       1       0       0
2  3       1       0       0       0       1

Pandas.factorize( )

当有多个变量出现时,可以使用pandas.factorize( )创建一些数字,来表示类别变量,对每一个类别映射一个ID,这种映射最后只生成一个特征,不像dummy那样生成多个特征。

>>> pd.factorize(pd.Series(list('abcaadedffg')))
(array([0, 1, 2, 0, 0, 3, 4, 3, 5, 5, 6]), Index(['a', 'b', 'c', 'd', 'e', 'f', 'g'], dtype='object'))