Индекс разнообразия Бриллюэна - PullRequest
0 голосов
/ 13 июня 2018

Я пытаюсь рассчитать индекс разнообразия Бриллюэна в группах в Python по столбцу «а», используя панд и numpy.Но что-то пошло не так.

import pandas as pd
import numpy as np
def Brillouin_Index(x):
    for i in range(len(x)):
        x["Brillouin_Index"] = (np.log10(np.math.factorial(np.sum(x))) - np.sum(np.log10(np.math.factorial(x[i])))) / np.sum(x)
        return x
a = list("ABCDEADECS")
b = [12,23,12,12,32,34,21,2,10,5]
c = {"a":a,"b":b}
data = pd.DataFrame(c)
data
data.groupby("a").apply(Brillouin_Index)

Я выполнил приведенный выше код и есть две ошибки.

TypeError: cannot convert the series to <class 'int'>
AttributeError: 'int' object has no attribute 'log10'

Конкретную формулу см. По следующей ссылке Индекс разнообразия Бриллюэна

Я использовал другое программное обеспечение для расчета значений каждой группы

  1. H_A = 0,2965
  2. H_B = 0
  3. H_C = 0,264
  4. H_D = 0,259
  5. H_E = 0,08085
  6. H_S = 0

Большое спасибо!

1 Ответ

0 голосов
/ 13 июня 2018

Я использую R для расчета индекса разнообразия Бриллюэна в группах. Код ниже:

Brillouin_Diversity_Index <- function(x)
{  N <- sum(x)

 (log10(factorial(N)) - sum(log10(factorial(x)))) / N

}

dt <- data.table(x = c("A","B","C","D","E","A","D","E","C","S"),
y = c(12,23,12,12,32,34,21,2,10,5))
dt[,Brillouin_Diversity_Index(y),by = .(x)]
  1. x V1
  2. A 0.23021887
  3. B 0.00000000
  4. C 0,26412121
  5. D 0,25909105
  6. E 0,08085185
  7. S 0,00000000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...