Парсинг женских имен в датасете "Titanic"

data['col1'] = data['Name'].str.split(',').str.get(0)
data['col1'].groupby(data['col1']).value_counts()

Есть таблица, в которой нужно выбрать самое популярное женское имя (first name).
Разделение на имя и фамилию есть, также есть и группировка имён. В таблице около 1000 строк.

Как можно сделать фильтр по полу и как вывести имя, которое повторяется больше всего раз?

таблица train.csv


Ответы (1 шт):

Автор решения: MaxU

Задача не совсем тривиальная, как может показаться на первый взгляд. Вот пример женских имен из датасета "Titanic":

введите сюда описание изображения

Обратите внимание, что у замужних женщин чаще всего после "Mrs." стоит имя мужа, а имя и фамилия женщины располагаются в скобках.

Предлагаю сначала парсить имена замужних женщин из скобок, а потом все оставшиеся:

def parse_first_name_female(name):
    first = name.str.extract(r"Mrs\.\s+[^(]*\((\w+)", expand=False)
    first.loc[first.isna()] = name.str.extract(r"\.\s+(\w+)", expand=False)
    return first

Результат:

введите сюда описание изображения

→ Ссылка