带列的数据透视表 pandas 中的百分比计算

2024-04-09

我有一个数据集,其中包含来自不同供应商、地点、日期和产品的多个销售登记册。 数据集是这样的:

local   categoria   fabricante   tipo      consistencia    peso         pacote   ordem vendas_kg
AREA I  SABAO       ASATP        DILUIDO   LIQUIDO         1501 A 2000g PLASTICO 1    10
AREA I  SABAO       TEPOS        DILUIDO   LIQUIDO         1501 A 2000g PLASTICO 1    20
AREA I  SABAO       ASATP        CAPSULA   LIQUIDO         1501 A 2000g PLASTICO 1    20
AREA I  SABAO       TEPOS        CAPSULA   LIQUIDO         1501 A 2000g PLASTICO 1    30
AREA I  SABAO       ASATP        DILUIDO   LIQUIDO         1501 A 2000g PLASTICO 2    20
AREA I  SABAO       TEPOS        DILUIDO   LIQUIDO         1501 A 2000g PLASTICO 2    30
AREA I  SABAO       ASATP        CAPSULA   LIQUIDO         1501 A 2000g PLASTICO 2    20
AREA I  SABAO       TEPOS        CAPSULA   LIQUIDO         1501 A 2000g PLASTICO 2    30
AREA II SABAO       ASATP        DILUIDO   LIQUIDO         1501 A 2000g PLASTICO 1    10
AREA II SABAO       TEPOS        DILUIDO   LIQUIDO         1501 A 2000g PLASTICO 1    15
AREA II SABAO       ASATP        CAPSULA   LIQUIDO         1501 A 2000g PLASTICO 1    25
AREA II SABAO       TEPOS        CAPSULA   LIQUIDO         1501 A 2000g PLASTICO 1    35
AREA II SABAO       ASATP        DILUIDO   LIQUIDO         1501 A 2000g PLASTICO 2    20
AREA II SABAO       TEPOS        DILUIDO   LIQUIDO         1501 A 2000g PLASTICO 2    25
AREA II SABAO       TEPOS        CAPSULA   LIQUIDO         1501 A 2000g PLASTICO 2    20
AREA II SABAO       TEPOS        CAPSULA   LIQUIDO         1501 A 2000g PLASTICO 2    30

我使用以下代码来旋转该数据集:

temp_df = pd.pivot_table(df,index=['local','tipo','ordem'], values=['vendas_kg'] , aggfunc=[np.sum], columns=['fabricante'], fill_values=0, margins=True, margins_name= 'Total')

我得到这个输出:

                                       sum           sum
                                 vendas_kg     vendas_kg
fabricante                           ASATP         TEPOS      Total
local          tipo      ordem 
AREA I         DILUIDO     1          10            20         30
                           2          20            30         50
               CAPSULA     1          10            20         30
                           2          20            30         50
AREA II        DILUIDO     1          10            15         25
                           2          20            25         45
               CAPSULA     1          25            35         55
                           2          20            30         50

我想计算每个 ['ordem'] 的百分比以及每个段的百分比。 order、tipo 和 local,如下所示:

                                       sum           sum
                                 vendas_kg     vendas_kg
fabricante                           ASATP         TEPOS     % segment  Total
local          tipo      ordem 
AREA I         DILUIDO     1          33%            66%         50%     30
                           2          40%            60%         50%     50
               CAPSULA     1          33%            66%         50%     30
                           2          40%            60%         50%     50
AREA II        DILUIDO     1          40%            60%        31.25%   25
                           2         44.44%         55.56%      47.37%   45
               CAPSULA     1         43.64%         57.36%      53.63%   55
                           2          40%            60%        53.63%   50

因此,AREA I DILUIDO 1 的总销售额为 30,ASATP 销售额占其中的 33%,TEPOS 占 66%,而在 AREA I 1 的总销售额中,DILUIDO 销售额占 50%,依此类推。

我还想比较 ['ordem'] 之间的销售差异,例如段和 ['fabricante'] 的增长百分比并存储在新表中,如下所示:

                               % change in   % change in
                                 vendas_kg     vendas_kg   % change in  % change in
fabricante                           ASATP         TEPOS     % segment        Total
AREA I  DILUIDO 1                      0             0          0                 0                 
                2                     +7%           -6%         0                20
                3                      0             0          0                 0
AREA I  CAPSULA 1                      0             0          0                 0 
                2                     +7%           -6%         0                20
                3                      0             0          0                 0
AREA II DILUIDO 1                      0             0          0                 0 
                2                    +4.44%        -4.44%    +16.12%             20
                3                      0             0          0                 0
AREA II CAPSULA 1                      0             0          0                 0  
                2                    -3.64%        +3.64%          0              5
                3                      0             0          0                 0

在过去的 5 天里,我陷入了困境,我在 ['fabricante']['tipo'] 和 ['local'] 中有更多类别,因此它必须适用于每个类别中的两个以上类别。 提前感谢您的帮助,如有疑问,请随时与我联系。


取百分比:

df_percent = temp_df.iloc[:, [0,1]].apply(lambda x: round(x / x.sum() * 100, 2), axis = 1)

要获取变化,请使用diff

df_diff_percent = df_percent.groupby(level=[0,1]).diff().fillna(0)

                    sum
                    vendas_kg
      fabricante    ASATP   TEPOS
local   tipo    ordem       
AREA I  CAPSULA 1   0.00    0.00
                2   0.00    0.00
DILUIDO         1   0.00    0.00
                2   6.67    -6.67
AREA II CAPSULA 1   0.00    0.00
                2   -41.67  41.67
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带列的数据透视表 pandas 中的百分比计算 的相关文章

随机推荐

  • 无法通过 Git Pull 更新我的 Git 本地存储库

    我删除了本地 Git 存储库中的一个文件 我希望通过更新我的 Git 存储库来找回该文件 我运行以下命令失败 git pull 它说 upToDate 但我没有获得最新的文件 github上的公共仓库不使用SVN 因此问题不可能是SVN 如
  • 无法启动服务器:绑定到 TCP/IP 端口:无法分配请求的地址 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我昨天重新启动了服务器 不幸的是mysql现在无法启动 错误日志如下 root site digger var log mysql cat error
  • Swift SpriteKit:在 GameScene 中访问 UIViewController 的最佳实践[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我想了解从 GameScene 访问 UIViewController 方法的最佳实践是什么 现在我一直在使用 NSNotificationCe
  • Asp.net Button 组件在 Twitter-Bootstrap 主题下不起作用

    我一直在为我的 asp net 网站主题使用 twitter bootstrap 并且在尝试让一个简单的按钮执行事件时遇到了一些麻烦 该按钮是一个 asp 组件 从我在论坛中读到的内容来看 bootstrap 不能很好地管理 asp net
  • 在随机端口上运行微服务时,Eureka 无法找到端口

    我在 Spring Boot 应用程序中使用 eureka 进行服务发现 使用功能区进行负载平衡 当我在修复端口上运行在 eureka 注册的微服务时 它工作正常 但是当我在随机端口上运行它们时 尽管我可以看到在 eureka 仪表板上注册
  • 将 Link 组件与 ListItem 和 Typescript 结合使用

    我正在使用material ui v3 5 1 我想让 ListItem 使用 Link 组件 如下所示
  • Mac 上的 USB 调试 Moverio

    我刚刚买了一台 Moverio BT 100 Epson 看起来就像一个纸袋一样有用 有没有人设法让 USB 调试 ADB 在 Mac 上看到它 Burf 您必须转到 android 文件夹 要找到它 只需打开终端并写入 cd cd and
  • 将随机范围从 1–5 扩大到 1–7

    给定一个产生 1 到 5 范围内的随机整数的函数 编写一个产生 1 到 7 范围内的随机整数的函数 这相当于 Adam Rosenfield 的解决方案 但对于某些读者来说可能更清楚一些 它假设 rand5 是一个返回 1 到 5 含 范围
  • 仅 React-Bootstrap 关闭按钮样式不起作用

    对于我与 React Bootstrap 一起使用的所有组件 所有样式都有效 除了模态 警报等中内置的关闭按钮 示例如下 警报组件 预期 我看到的警报组件 模态组件 预期 我看到的模态组件 我正在使用的构建在 React Bootstrap
  • 覆盖自定义 UITableViewCell

    我有一个习惯UITableViewCell我这样使用 AppTableCell cell tableView dequeueReusableCellWithIdentifier CellIdentifier if cell nil NSAr
  • 从动词列表中检索动词

    我有一个全是动词的字符串列表 我需要获取每个动词的词频 但我想将 想要 想要 想要 和 想要 等动词计为一个动词 形式上 动词 被定义为 4 个单词的集合 其形式为 X Xs Xed Xing 或形式为 X Xes Xed Xing 其中
  • Excel VBA - 工作表属性未按应有的方式分配字段

    VBA 新手 尝试使用 Sheet 属性 就像在 OOP 语言中使用 Getters 和 Setters 一样 我在 Sheet1 中有以下代码 为了清晰起见 进行了简化 Option Explicit Private bAllowChan
  • NSArray或NSMutableArray的removeAllObjects方法会释放内存吗?

    我需要知道 NSArray 或 NSMutableArray 的 removeAllObjects 方法是否释放内存 如果我的数组有 10000 个元素 我可以使用 array removeAllObjects 释放内存并用其他元素重新加载
  • 获取服务器端时间和客户端时间之间的差异并显示它[重复]

    这个问题在这里已经有答案了 可能的重复 如何将 JavaScript 倒计时与服务器时间同步 https stackoverflow com questions 5357719 how to sync a javascript countd
  • 在 Glide 中查找并加载缓存的图像

    我是 glide 新手 想要将我的应用程序从 universalimageloader 迁移到 glide 我想将磁盘上的缓存图像转换为图像文件 并将其显示到 ImageView 中 当我使用universalimageloader时 我可
  • 100% CSS 布局,带页眉和页脚

    我正在尝试创建一个带有页眉和页脚 两者都有固定高度 以及它们之间的内容 div 的布局 该内容填充剩余空间 在 content div 中 我想要具有基于百分比值的高度的 div 以 content div 的 heihgt 作为父级 我不
  • 如何在 NS-3/ndnSIM 中模拟过程延迟?

    我想在发送兴趣包之前在消费者节点上添加一些进程延迟 我发现 Simulator Schedule 函数可以实现这个目的 但我不确定如何使用它 因为 ndnSIM 有自己的协议流程 如果我安排一个新事件 可能会导致一些意外的结果 或者是否有其
  • Swig:将Java中的字节数组传递给C

    我正在尝试创建 Java 实现 以便使用 Swig 将 byte 传递给 C Swig include typemaps i apply char STRING int LENGTH char buff int len inline typ
  • Java EE 5 和 Hibernate

    我可以将哪个版本的 Hibernate 与 Java EE 5 一起使用 我可以使用最新版本吗 See http www hibernate org http www hibernate org 它说最新的4 1 4版本可以与Java EE
  • 带列的数据透视表 pandas 中的百分比计算

    我有一个数据集 其中包含来自不同供应商 地点 日期和产品的多个销售登记册 数据集是这样的 local categoria fabricante tipo consistencia peso pacote ordem vendas kg AR