Python 两组大熊猫在6周内的增量消费

Python 两组大熊猫在6周内的增量消费,python,pandas,increment,cumsum,Python,Pandas,Increment,Cumsum,我有一个包含以下信息的excel数据 df.head() User_id Group Week Spend Purchases Group 170309867 Test 2014-10-13 794.66 2 Test-NonRed 57954586 Test 2014-10-13 55.99 1 Test-Red 118068583 Test 2014-10-13 40.87 1 Test-NonRed 51

我有一个包含以下信息的excel数据

df.head()
   User_id  Group   Week    Spend   Purchases   Group
170309867   Test    2014-10-13  794.66  2   Test-NonRed
57954586    Test    2014-10-13  55.99   1   Test-Red
118068583   Test    2014-10-13  40.87   1   Test-NonRed
516478393   Test    2014-10-13  17.5    2   Test-NonRed
457873235   Test    2014-10-13  20.44   1   Test-Red
根据以上信息,我需要计算六周内总测试组红色测试和非红色测试与对照组的增量支出。我需要绝对美元和%的价格。 我试过把熊猫当宠物

  df2= df.groupby(by=['Group','Week']).sum().abs().groupby(level=[0]).cumsum()
我有以下结果

df2.head()
然后我计算出每组的总和为

    df2.groupby(by=['group2']).sum()
df2.head()
我想让他们知道我在abs尝试过的绝对值的增量支出,以及我需要的绝对百分比。任何帮助都将不胜感激

预期结果是计算总试验组红色试验和非红色试验与对照组在六周内的增量花费。我需要绝对支出,然后是百分比。6周的增量支出。像这样的,

 Group   incremental_spend  incremental_%       
    Control     11450175         #%
    test-NonRed 50288158         #%
    test-Red    12043938         #%
所以我真正的问题是, 1.上述方法是否是计算专栏组从专栏周支出开始的6周内增量支出的正确方法?
2.另外,我需要绝对计数和绝对百分比的所有结果。

我想这里有几个问题让你的答案很难理解

词汇 你所说的增量支出只是总和。 您在两个步骤中所做的是累计sum.cumsum.sum的总和,这是不对的

此外,我不确定您是否需要abs,abs-1给出的绝对值为1,因此只有在数据中存在负值时才会产生影响。 不幸的是,样本数据集不够大,无法得出结论

数据集 您的数据集有两个名称相同的列组,这很容易出错

缺失信息 您希望以比率%的形式获得最终值总和,但不指明此比率的参考值。 这是对照组的总花费吗

势解
它看起来像你想要的吗?

你能详细说明问题是什么吗?@AndrewL,我已经编辑了我的问题。你确定你要总结一个累积的总和吗?这似乎不对。
>>> df  # Sample dataframe with one entry as 'Control' group
Out[]:
     User_id Group        Week   Spend  Purchases      Group.1
0  170309867  Test  2014-10-13  794.66          2  Test-NonRed
1   57954586  Test  2014-10-13   55.99          1     Test-Red
2  118068583  Test  2014-10-13   40.87          1  Test-NonRed
3  516478393  Test  2014-10-13   17.50          2      Control
4  457873235  Test  2014-10-13   20.44          1     Test-Red


df2 = pd.DataFrame(df.groupby('Group.1').Spend.sum())  # Get 'Spend' sum for each group

>>> df2
Out[]:
              Spend
Group.1
Control       17.50
Test-NonRed  835.53
Test-Red      76.43

control_spend_total = df2.loc['Control'].values  # Get total spend for 'Control' group

>>> control_spend_total
Out[]: array([ 17.5])


df2['Spend_%'] = df2.Spend / control_spend_total * 100  # Add 'Spend_ratio' column

>>> df2
Out[]:
              Spend      Spend_%
Group.1
Control       17.50   100.000000
Test-NonRed  835.53  4774.457143
Test-Red      76.43   436.742857