У меня есть набор данных, и я хочу вычислить взвешенную сводную статистику для категориальной переменной.(Аналогично этому вопросу, но с категориальными данными, например, yes
/ no
/ maybe
).
Пример набора данных:
import pandas as pd
import numpy as np
np.random.seed(43)
## prep mock data
N = 100
country = np.random.choice(['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff'], N)
response = np.random.choice(['yes','no','maybe','do not know'], N)
weight = np.random.randint(low = 5, high = 40, size = N)
df = pd.DataFrame({'country': country, 'response': response, 'weight': weight})
Iтеперь хотелось бы получить нормализованные значения для ответов, скорректированные по столбцу weight
и сгруппированные по столбцу country
.
невзвешенный способ сделать это -
new_df = df['response'].groupby(df['country']).value_counts(normalize = True).unstack(fill_value = 0)
Я знаю, что должен «просто» использовать «счетчики взвешенных значений», но, похоже, не могу его найти.Я уверен, что это прямо здесь - кто-то может указать мне правильное направление?Спасибо за тонну.