如何解决与Pandas Groupby的聚类熵?
我试图通过groupby来优化计算熵的方式。
我的数据集看起来像这样,我正在尝试查找每个“ lsoa11cd”区域的熵(代表区域/多边形的英国特定地理空间值)。 k_means_5数据表示k = 5。
test01[['k_means_5','lsoa11cd']].head(10)
k_means_5 lsoa11cd
0 1 E01019240
1 1 E01019240
2 1 E01019238
3 1 E01019240
4 1 E01019240
5 1 E01019240
6 1 E01019316
7 1 E01019316
8 1 E01019316
9 1 E01019316
我可以使用此超级傻//(错误的?)行来获取熵,但是我想更有效地执行此操作,因为要花10天的时间对'lsoa11cd'值进行for循环迭代。
len(test01.loc[test01['lsoa11cd'] == 'E01019238']['k_means_5'])
51
test01.loc[test01['lsoa11cd'] == 'E01019238']['k_means_5'].value_counts()
1 40
2 6
0 5
Name: k_means_5,dtype: int64
test01.loc[test01['lsoa11cd'] == 'E01019238']['k_means_5'].value_counts()/len(test01.loc[test01['lsoa11cd'] == 'E01019238']['k_means_5'])
1 0.784314
2 0.117647
0 0.098039
Name: k_means_5,dtype: float64
from scipy.stats import entropy
test01.loc[test01['lsoa11cd'] == 'E01019238','entropy_k_means_5'] = entropy(test01.loc[test01['lsoa11cd'] == 'E01019238']['k_means_5'].value_counts()/len(test01.loc[test01['lsoa11cd'] == 'E01019238']['k_means_5']),base=5)
我尝试了一下,但是最后一步当然不能与Im发送的对象的形状配合使用。有专家建议吗?
g1 = test01.groupby('lsoa11cd')['k_means_5'].transform('count')
0 172
1 172
2 51
3 172
4 172
...
1758295 70
1758296 59
1758297 87
1758298 87
1758299 122
Name: k_means_5,Length: 1758300,dtype: int64
g2 = test01.groupby('lsoa11cd')['k_means_5'].value_counts()
lsoa11cd k_means_5
E01000001 4 17
3 9
E01000002 3 24
4 22
E01000003 4 13
..
W01001956 0 42
4 3
W01001957 3 23
4 9
W01001958 4 9
Name: k_means_5,Length: 64908,dtype: int64
entropy( g2/g1,base=5) # NOP!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。