Python 两组大熊猫在6周内的增量消费
我有一个包含以下信息的excel数据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
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