У меня есть фрейм данных df
, который содержит информацию о транзакциях от отдельного человека Name_Give
к другому Name_Receive
, например:
df
Name_Give Name_Receive Amount
0 John Tom 300
1 Eva Tom 700
2 Sarah Tom 100
3 John Tom 200
4 Tom Eva 700
5 John Eva 300
6 Carl Eva 250
для каждого Name_Receive
j
Я хотел бы вычислить энтропию Шеннона как S_j = -sum_i p_i \log p_i
, где p_i
- это сумма, деленная на сумму суммы для пользователя j
S_Tom = - (300/1300 * np.log(300/1300) + 700/1300 * np.log(700/1300) + 100/1300 * np.log(100/1300) + 200/1300 * np.log(200/1300))
S_Eva = - (700/1250 * np.log(700/1250) + 300/1250 * np.log(300/1250) + 250/1250 * np.log(250/1250)
S_Tom = 1.157
S_Eva = 0.99
Я хотел бы иметь фрейм данных df1
, как показано ниже
df1
Name Entropy
0 Tom 1.157
1 Eva 0.99