Python 计算类别所代表的百分比

Python 计算类别所代表的百分比,python,pandas,Python,Pandas,首先我很抱歉我不习惯用英语交流,但我要解释一下我的问题 我有两个分类变量,第一个代表损伤等级,它有3个值1-2-3 第二个表示楼层数 首先,我对2个变量进行分组,然后计算一个值,结果如下 damage number floors 1 2 12593 1 8969 3 2537 2

首先我很抱歉我不习惯用英语交流,但我要解释一下我的问题 我有两个分类变量,第一个代表损伤等级,它有3个值1-2-3 第二个表示楼层数

首先,我对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
对于重塑用途:

因此,您可以通过以下方式进行绘图:


非常感谢,你的答案正是我想要的。非常感谢,你的答案正是我想要的