Python-计算数据透视表中总计的百分比

塔蒂亚娜

我有一个数据框,已使用pd.pivot_table方法和sum汇总函数将其转换为数据透视表:

summary = pd.pivot_table(df, 
                         index=["Region"], 
                         columns=["Product"], 
                         values=['Price'],
                         aggfunc=[np.sum],
                         fill_value=0,
                         margins=True,
                         margins_name="Total"
                        )

我收到了这样的输出:

样本数据透视表

我想添加另一个数据透视表,显示每个类别在上一个数据透视表中计算出的总计的百分比。所有这些加起来应该是100%,看起来应该像这样。

枢纽分析表,占总数的百分比

我已经尝试过以下在stackoverflow上找到的解决方法:

total = df['Price'].sum()

table = pd.pivot_table(DF, 
                       index=["Region"],
                       columns=["Product"], 
                       values=['Price'],
                       aggfunc=[np.sum, 
                                (lambda x: sum(x)/total*100)
                               ],
                       fill_value=0,
                       margins=True,
                       margins_name="Total"
                      )

这算出了百分比,但它们总共只占85%...

不必在枢轴表之外计算总数,而能够从第一个枢轴调用总计就好了。但是,即使我必须像上面的代码中那样单独计算,只要它加起来等于100%,它仍然会很棒。

先感谢您!

克尔科罗夫

这可以很容易地完成:

    import numpy as np
    import pandas as pd

    # Create table
    table_1 = np.matrix([[100, 200, 650, 950],
                         [200, 250, 350, 800],
                         [400, 500, 200, 200],
                         [700, 950, 1200, 2850]])

    column_labels = ['A', 'B', 'C', 'Region Total']
    idx_labels = ['Region 1', 'Region 2', 'Region 3', 'Product Total']

    df = pd.DataFrame(table_1)
    df.columns = column_labels
    df.index = idx_labels
    df.index.name = 'Sales'

    # Create percentage table
    df_percentage = np.round(df*100/df.iloc[-1, -1], 1)

    print(df_percentage)

                      A     B     C  Region Total
    Sales                                        
    Region 1        3.5   7.0  22.8          33.3
    Region 2        7.0   8.8  12.3          28.1
    Region 3       14.0  17.5   7.0           7.0
    Product Total  24.6  33.3  42.1         100.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用 Python 中的 pct_change 计算数据框中 2 列的百分比变化

如何在Python中透视表并获取每一行的百分比?

数据透视表中总计的百分比

计算数据框 Python 中所有分类变量的频率和频率百分比

Python计算字典中的总值和百分比

Python中整个df的百分比计算

计算python中2个数据帧的匹配百分比

计算百分比差异-python

数据透视表 - 添加总计的百分比

按行数据透视表的总计百分比

Python数据框中的滚动百分比变化

python中的变形百分比

计算相对于整个表的百分比,而不仅仅是python中的行或列

Python如何在数据框中计算布尔值并计算百分比

计算数据框R中的百分比

在Python中按阈值计算和计算每一列的百分比

数据透视表中的条形图,具有总计和每组总计的百分比

在计算熊猫数据框上的对称百分比变化时需要帮助-python

Python%百分比

如何比较数组中的每个元素并计算Python中相同元素的百分比?

在Python Pandas库中计算百分比

Python 逐个计算列表值的百分比

文件列之间的 Python 计算百分比变化

如何在Python中的groupby中计算计数和百分比

在Python中计算字符串中的标点符号百分比

Python / Pandas-性能-计算列中某个值的出现百分比

计算python列表中的字符串匹配百分比

Python:结合groupby计算MultiIndex DataFrame中每列的百分比变化

是否有运算符来计算Python中的百分比?