Панды get_dummies генерирует несколько столбцов для одной и той же функции
Я использую серию панд и пытаюсь преобразовать их в одну горячую кодировку. Я использую describe
метод, чтобы проверить, сколько уникальных категорий в серии. Выход:
input['pattern'].describe(include='all')
count 9725
unique 7
top 1
freq 4580
Name: pattern, dtype: object
Когда я пытаюсь:
x = pd.get_dummies(input['pattern'])
x.describe(include= 'all')
Я получаю 18 классов с 12 классами, которые являются полностью нулями. Как получилось get_dummies
произведенные классы, которые не встречались ни разу на входе?
1 ответ
Решение
Из обсуждения в комментариях было установлено, что ваш столбец содержит смесь строк и целых чисел.
Например,
s = pd.Series(['0', 0, '0', '6', 6, '6', '3', '3'])
s
0 0
1 0
2 0
3 6
4 6
5 6
6 3
7 3
dtype: object
Теперь звоню pd.get_dummies
приведет к нескольким таким столбцам одной и той же функции.
pd.get_dummies(s)
0 6 0 3 6
0 0 0 1 0 0
1 1 0 0 0 0
2 0 0 1 0 0
3 0 0 0 0 1
4 0 1 0 0 0
5 0 0 0 0 1
6 0 0 0 1 0
7 0 0 0 1 0
Исправление заключается в том, чтобы все элементы были одного типа. Я бы рекомендовал, для этого случая, преобразовать в str
,
s.astype(str).str.get_dummies()
0 3 6
0 1 0 0
1 1 0 0
2 1 0 0
3 0 0 1
4 0 0 1
5 0 0 1
6 0 1 0
7 0 1 0