Объединение rat ios в фрейм данных - PullRequest
0 голосов
/ 13 июля 2020

Это скорее математическая задача, но мне было интересно, как суммировать отношение, чтобы значение оставалось точным. У меня есть фреймворк статистики самоубийств для каждой страны, который выглядит так:

   per100k continent  year     country
   6.71    Europe  1987     Albania     
   5.0     Europe  1987     Germany

Я собираюсь сгруппировать этот фреймворк по континентам, и мне было интересно, как лучше всего "суммировать" на 100 тысяч (количество самоубийств на 100к жителей), чтобы сохранить это соотношение. Я мог бы пересчитать это значение, поскольку у меня есть доступ к необработанному количеству жителей и общему количеству самоубийств, но я бы предпочел сделать это с помощью функции pandas groupby. Я просмотрел список функций в методе groupby , но ни одна из них не подходит для моего варианта использования.

Ответы [ 2 ]

1 голос
/ 13 июля 2020

Я обращаюсь к этой ссылке для справки о том, почему "среднее от среднего" является НЕПРАВИЛЬНЫМ подходом для этого.

Если у вас есть данные, лучше суммировать совокупности и события и разделите их.

Пример:

df = pd.DataFrame({
    'continent':['europe', 'europe', 'america', 'america'], 'year':[1987, 1987, 1987, 1987], 'country': ['albania','germany', 'canada', 'mexico'], 'population': [50, 100, 60, 70], 'events':[8, 10, 7, 4]
})

df['ratio'] = df.events / df.population

ratio_BAD = df.groupby('continent')['ratio'].mean().reset_index()

Это выведет:

continent   ratio
0   america 0.086905
1   europe  0.130000

Теперь, в качестве альтернативы, давайте просуммируем значения и разделим:

continents = df.groupby('continent')[['population', 'events']].sum().reset_index()

continents['ratio_GOOD'] = population.events / population.population

continent   

            population  events  ratio_GOOD
0   america     130     11      0.073333
1   europe      150     18      0.120000

Значит, значения разные, и вы бы предпочли последний подход.

0 голосов
/ 13 июля 2020

Эти данные не будут значимыми, если не будет другой весовой точки, например, населения et c. Если вы можете добавить другие показатели, такие как общее количество самоубийств и население, к соотношению, вы можете указать вес. Вы можете проверить это:

https://pbpython.com/weighted-average.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...