Как я могу использовать Python для объединения данных от нескольких директоров в разных компаниях в одну цифру на компанию, используя индекс Блау? - PullRequest
3 голосов
/ 16 апреля 2019

У меня есть датафрейм, который содержит классифицированные данные об образовании директоров нескольких компаний. В настоящее время каждая компания (записанная по ее тикеру) имеет несколько записей, по одной на директора, и df выглядит примерно так:

Ticker  Education
ABC     1
ABC     1
ABC     5
ABC     7
ABC     5
DEF     3
DEF     4
DEF     4
DEF     4
DEF     6

Я хочу использовать формулу индекса Блау (такую ​​же, как индекс Джини-Симпсона), чтобы создать новый фрейм данных с одной записью на компанию следующим образом:

Ticker  Education Diversity
ABC     0.64
DEF     0.56

Используется формула (1 - ∑p i 2 ), где p i - доля директоров в каждой из i категорий образования; например для компании ABC, p 1 = 2 / 5.

Может кто-нибудь помочь мне реализовать это в Python (3.7)? Любая помощь будет принята с благодарностью!

1 Ответ

4 голосов
/ 16 апреля 2019

Вы можете попробовать реализовать свой собственный def, затем использовать groupby.apply.Наконец, Series.reset_index, чтобы вернуться в DataFrame формат:

def blaus_index(arr):
    return 1 - sum((arr.value_counts() / len(arr)) ** 2)

df.groupby('Ticker')['Education'].apply(blaus_index).reset_index(name='Education Diversity')

  Ticker  Education Diversity
0    ABC                 0.64
1    DEF                 0.56
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...