У меня возникла самая первая проблема с машинным обучением, и я изо всех сил пытаюсь очистить свои категориальные особенности в моем наборе данных.Моя цель - создать систему рекомендаций по скалолазанию.
ПРОБЛЕМА 1:
У меня есть три столбца, связанные с ошибочной информацией:
Чтотеперь он выглядит так:
Как я хочу, чтобы он выглядел следующим образом:
Если вы группируете название местоположения, с этим именем будут связаны разные номера location_id и страны,Однако в каждом из этих несоответствий есть явный победитель / явное большинство.У меня есть набор данных из 2 миллионов записей и режим location_id & location_country GIVEN, где location_name подавляющим, указывая на один ответ (пример: «300» и «USA» для clear_creek).
Использование панд / pythonКак сгруппировать мой набор данных по имени_места, вычислить режим location_id & location_country на основе этого имени местоположения, а затем заменить все столбцы id и страны этими вычислениями режима на основе location_name для очистки моих данных?
Я играл с groupby, заменял, дублировал, но я думаю, что в конечном счете мне нужно будет создать функцию, которая будет делать это, и я, честно говоря, понятия не имею, с чего начать.(Я заранее извиняюсь за свою наивность в кодировании) Я знаю, что должно быть решение, мне просто нужно указать правильное направление.
ПРОБЛЕМА 2:
Кроме того, у кого-нибудь есть предложения по заполнению значений NaN в столбцах моей категории location_name (42 012/2 миллиона) и location_country (46 890/2 миллиона)?Лучше ли держать как неизвестное значение?Я чувствую, что заполнение этих функций на основе частоты будет ужасным смещением для моего набора данных.
data = {'index': [1,2,3,4,5,6,7,8,9],
'location_name': ['kalaymous', 'kalaymous', 'kalaymous', 'kalaymous',
'clear_creek', 'clear_creek', 'clear_creek',
'clear_creek', 'clear_creek'],
'location_id': [100,100,0,100,300,625,300,300,300],
'location_country': ['GRC', 'GRC', 'ESP', 'GRC', 'USA', 'IRE',
'USA', 'USA', 'USA']}
df = pd.DataFrame.from_dict(data)
*** в поисках возврата:
improved_data = {'index': [1,2,3,4,5,6,7,8,9],
'location_name': ['kalaymous', 'kalaymous', 'kalaymous', 'kalaymous',
'clear_creek', 'clear_creek', 'clear_creek',
'clear_creek', 'clear_creek'],
'location_id': [100,100,100,100,300,300,300,300,300],
'location_country': ['GRC', 'GRC', 'GRC', 'GRC', 'USA', 'USA',
'USA', 'USA', 'USA']}
new_df = pd.DataFrame.from_dict(improved_data)