如何解决在 Python 中计算归一化 Gibbs 熵
我正在处理一个数据集,其中包含有关拥有 2 到 17 名经理的团队的信息。对于每个团队经理,数据集包含一列,指定经理的教育背景,名为“ISCED 分类经理 1”、“ISCED 分类经理 2”......“ISCED 分类经理 17”。教育背景分为从0到11编号的类别。
我想计算每个团队的教育背景多样性。为此,我使用归一化吉布斯熵,它具有以下公式:
Normalised Gibbs Entropy Formula 该公式中,Pi为具有一类教育背景的团队比例,N为团队规模,在“Team size 2015”列中指定。
我想用 Python 编写一个公式来创建一个新列,其中说明了每行(以及每个团队)的归一化吉布斯熵。对于每个教育类别(0-10),公式应经过“ISCED Categorization Manager 1”列直到“ISCED Categorization Manager 17”列,计算团队中具有该类别的经理的比例,并计算公式(pi * ln(pi) / ln(N) )
我尝试使用 Countif 函数在 Excel 中计算这个,但公式变得非常长和缓慢。因此,我想在 Python 中找到解决方案。
希望这个解释是清楚的。
编辑:
这是一些示例数据:
+-------------+-----------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
| Team Number | Team Size | ISCED Categorization Manager 1 | ISCED Categorization Manager 2 | ISCED Categorization Manager 3 | ISCED Categorization Manager 4 | ISCED Categorization Manager 5 | ISCED Categorization Manager 6 | ISCED Categorization Manager 7 | ISCED Categorization Manager 8 | ISCED Categorization Manager 9 | ISCED Categorization Manager 10 | ISCED Categorization Manager 11 | ISCED Categorization Manager 12 | ISCED Categorization Manager 13 | ISCED Categorization Manager 14 | ISCED Categorization Manager 15 | ISCED Categorization Manager 16 | ISCED Categorization Manager 17 |
+-------------+-----------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
| 1 | 3 | 1 | 5 | 9 | | | | | | | | | | | | | | |
| 2 | 5 | 9 | 9 | 9 | 9 | 9 | | | | | | | | | | | | |
| 3 | 17 | 2 | 2 | 4 | 2 | 4 | 4 | 2 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 |
| 4 | 5 | 3 | 3 | 5 | 6 | 5 | | | | | | | | | | | | |
+-------------+-----------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
在python中,所有空单元格都是NaN。 对于此数据,归一化吉布斯熵输出应为:
团队 1:1
团队 2:0
第三队:0.338.... --> =-1*SUM(((10/17)*LN(10/17)/LN(17)),((4/17)*LN(4) /17)/LN(17)),((3/17)*LN(3/17)/LN(17)))
第 4 队:0.6554.... --> =-1*SUM(((2/5)*LN(2/5)/LN(5)),((2/5)*LN(2) /5)/LN(5)),((1/5)*LN(1/5)/LN(5)))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。