#python #pandas
#python #pandas
Вопрос:
Итак, у меня есть столбец «Имена». Если я сделаю:
df['Names'].value_counts()
Я понимаю это:
Mr. Richard Vance 1
Mrs. Angela Bell 1
Mr. Stewart Randall 1
Mr. Andrew Ogden 1
Mrs. Maria Berry 1
..
Mrs. Lillian Wallace 1
Mr. William Bailey 1
Mr. Paul Ball 1
Miss Pippa Bond 1
Miss Caroline Gray 1
Все в порядке… Есть много РАЗНЫХ имен. Но я хочу, чтобы это value_counts() выполнялось только для первых символов, пока оно не перейдет к пустому символу (т.Е. пробелу, Который разделяется, например, мисс или миссис от Лилиан Уоллес), чтобы результат был, например:
Миссис 1000 Мистер 2000 Мисс 2000
Просто чтобы узнать, сколько различных вариантов существует в именах столбцов, чтобы на 2-м этапе создать другую переменную (а именно пол) на основе этих вариантов.
Комментарии:
1.
df['Names'].str.split().str.get(0).value_counts()
Ответ №1:
Вы можете использовать value_counts(dropna=False)
on str[0]
после str.split()
:
df = pd.DataFrame({'Names': ['Mr. Richard Vance','Mrs. Angela Bell','Mr. Stewart Randall','Mr. Andrew Ogden','Mrs. Maria Berry','Mrs. Lillian Wallace','Mr. William Bailey','Mr. Paul Ball','Miss Pippa Bond','Miss Caroline Gray','']})
df.Names.str.split().str[0].value_counts(dropna=False)
# Mr. 5
# Mrs. 3
# Miss 2
# NaN 1
# Name: Names, dtype: int64
Ответ №2:
Если вы хотите знать уникальные значения и всегда ли есть пробел, вы можете сделать это.
df = pd.DataFrame(['Mr. Richard Vance',
'Mrs. Angela Bell',
'Mr. Stewart Randall',
'Mr. Andrew Ogden',
'Mrs. Maria Berry',
'Mrs. Lillian Wallace',
'Mr. William Bailey',
'Mr. Paul Ball',
'Miss Pippa Bond',
'Miss Caroline Gray'], columns=['names'])
df['names'].str.split(' ').str[0].unique().tolist()
Вывод — это список:
['Mr.', 'Mrs.', 'Miss']
Комментарии:
1. Почти есть… Просто нужно подсчитать этот список. Ваше решение лучше, потому что в моем наборе данных я вижу: [‘Mr.’, ‘Miss’, ‘Mrs.’, nan] . Теперь мне нужно знать, сколько из этих 4 возможностей существует.
Ответ №3:
Вот решение. Вы можете использовать регулярное выражение:
#Dataset
Names
0 Mr. Richard Vance
1 Mrs. Angela Bell
2 Mr. Stewart Randall
3 Mr. Andrew Ogden
4 Mrs. Maria Berry
5 Mrs. Lillian Wallace
df['Names'].str.extract(r'(w .s)').value_counts()
#Output:
Mr. 3
Mrs. 3
Примечание: (w .s)
будет извлекать части Mr. и Mrs. (или любое название, например, Dr.) из имен