Python 计算类别所代表的百分比
首先我很抱歉我不习惯用英语交流,但我要解释一下我的问题 我有两个分类变量,第一个代表损伤等级,它有3个值1-2-3 第二个表示楼层数 首先,我对2个变量进行分组,然后计算一个值,结果如下Python 计算类别所代表的百分比,python,pandas,Python,Pandas,首先我很抱歉我不习惯用英语交流,但我要解释一下我的问题 我有两个分类变量,第一个代表损伤等级,它有3个值1-2-3 第二个表示楼层数 首先,我对2个变量进行分组,然后计算一个值,结果如下 damage number floors 1 2 12593 1 8969 3 2537 2
damage number floors
1 2 12593
1 8969
3 2537
2 2 93968
3 28479
1 20798
楼层数从1层到9层我没有写所有的东西
我数了数每层楼的总数
1 40441
2 156623
3 55617
我的想法是要一张这样的桌子
damage number floors percentage
1 2 (12593/156623)*100
1 (8969/40441)*100
3 (2537/55617)*100
如果你有一个很好的图来翻译这张表
我将不胜感激。使用:
#possible solution for count
#s = df.groupby(['damage','number floors']).size()
print (s)
damage number floors
1 2 12593
1 8969
3 2537
2 2 93968
3 28479
1 20798
Name: c, dtype: int64
对于多索引的第二级求和
,请使用:
print (s.sum(level=1))
number floors
2 106561
1 29767
3 31016
Name: c, dtype: int64
然后除以第二级,再乘以100
:
s = s.div(s.sum(level=1), level=1).mul(100)
print (s)
damage number floors
1 2 11.817644
1 30.130682
3 8.179649
2 2 88.182356
3 91.820351
1 69.869318
Name: c, dtype: float64
对于重塑用途:
因此,您可以通过以下方式进行绘图:
使用:
对于多索引的第二级求和
,请使用:
print (s.sum(level=1))
number floors
2 106561
1 29767
3 31016
Name: c, dtype: int64
然后除以第二级,再乘以100
:
s = s.div(s.sum(level=1), level=1).mul(100)
print (s)
damage number floors
1 2 11.817644
1 30.130682
3 8.179649
2 2 88.182356
3 91.820351
1 69.869318
Name: c, dtype: float64
对于重塑用途:
因此,您可以通过以下方式进行绘图:
非常感谢,你的答案正是我想要的。非常感谢,你的答案正是我想要的