#python #pandas
#python #панды
Вопрос:
У меня есть набор данных с 12 столбцами, и один из моих столбцов «Устройства» имеет 250 функций — разные имена телефонов.
Что я пытаюсь сделать, так это применить opd.get dummies и создать 3 столбца — один для устройств Apple, 2-й для Samsung и 3-й для всех других имен устройств.
Можно ли это сделать?
Комментарии:
1. что вы пробовали? Покажите свой код. Что вы получили? Вы получили сообщение об ошибке? всегда помещайте полное сообщение об ошибке (начинающееся со слова «Traceback») в вопрос (не комментарий) в виде текста (не скриншота, не ссылки на внешний портал). Есть и другая полезная информация.
2. сначала попробуйте сделать это, а затем задайте вопрос. И если вы уже устали от этого, тогда покажите вам код, а не спрашивайте, можно ли это сделать.
3. df = pd.get_dummies(df, columns=[‘Devices»]) df.head() Попробовал выше, и он создал 27 дополнительных столбцов
4. поместите код под сомнение — он будет более читаемым. И что не так с этим кодом? Вы получаете сообщение об ошибке? Затем покажите это в вопросе. Если вы получите неверный результат, покажите его также под вопросом. Просить
Can this be done?
вас только тратить время, потому что ответyes
. Но если вы не знаете, как это сделать, то хотя бы покажите, о чем идет речь, что вы пробовали.5. Можете ли вы сказать мне, как это сделать, вместо того, чтобы писать большую речь. Как я уже сказал в своем вопросе, мне не нужно несколько столбцов, а только 3 столбца. поскольку я не знаю, как это сделать, я спрашиваю.
Ответ №1:
import pandas as pd
from sklearn.preprocessing import OneHotEncoder
data = {'name': ['Zoe', 'Yvonne', 'Veronique', 'Ruby', 'Mia', 'Matilda', 'Karin', 'Ella', 'Babette', 'Amelia'],
'phone': ['Apple', 'Samsung', 'Samsung', 'HTC', 'Apple', 'Apple', 'Nokia', 'Samsung', 'Motorola', 'Alcatel'],
'car': ['Bentley', 'Bugatti', 'Ford', 'Hummer', 'Honda', 'Jaguar', 'Jeep', 'Lamborghini', 'Landrover', 'Pagani']}
df = pd.DataFrame(data)
df
Допустим, это часть данных:
name phone car
0 Zoe Apple Bentley
1 Yvonne Samsung Bugatti
2 Veronique Samsung Ford
3 Ruby HTC Hummer
4 Mia Apple Honda
5 Matilda Apple Jaguar
6 Karin Nokia Jeep
7 Ella Samsung Lamborghini
8 Babette Motorola Landrover
9 Amelia Alcatel Pagani
Во-первых, повторно классифицируйте данные телефона:
aux = df['phone'].apply(lambda x: x if x in ('Apple', 'Samsung') else 'Other')
Затем нанесите get_dummies
:
cat = pd.get_dummies(aux)
Наконец, объедините фреймы данных и переупорядочьте столбцы:
result = pd.concat([df,cat], axis=1)[['name', 'phone', 'Apple', 'Samsung', 'Other', 'car']]
result
чтобы получить этот результат:
name phone Apple Samsung Other car
0 Zoe Apple 1 0 0 Bentley
1 Yvonne Samsung 0 1 0 Bugatti
2 Veronique Samsung 0 1 0 Ford
3 Ruby HTC 0 0 1 Hummer
4 Mia Apple 1 0 0 Honda
5 Matilda Apple 1 0 0 Jaguar
6 Karin Nokia 0 0 1 Jeep
7 Ella Samsung 0 1 0 Lamborghini
8 Babette Motorola 0 0 1 Landrover
9 Amelia Alcatel 0 0 1 Pagani
Комментарии:
1. Спасибо @lenka_cizkova, это именно то, чего я хотела