gpt4 book ai didi

python - 带有数据透视表的 Pandas 中的差异 DID

转载 作者:行者123 更新时间:2023-12-04 07:41:03 27 4
gpt4 key购买 nike

差异 (DID) 是一种统计技术,它通过比较治疗组结果变量随时间的平均变化来计算治疗对结果的影响 [1]。我有这个数据集,其中 after表示引入治疗的月份和 campaign解释是否在一组商店中应用了处理,我想观察事件对销售的影响:

df = pd.DataFrame()
df['year'] = [2011,2011,2011,2011,2011,2011,2011,2011,2011,2011,2011,2011]
df['month'] = [1,2,3,4,5,6,1,2,3,4,5,6]
df['after'] = [0,0,0,1,1,1,0,0,0,1,1,1]
df['campaign'] = [0,0,0,0,0,0,1,1,1,1,1,1]
df['sales'] = [10000,11000,12000,10500,10000,9500,7000,8000,5000,6000,6000,7000]


year month after campaign sales
0 2011 1 0 0 10000
1 2011 2 0 0 11000
2 2011 3 0 0 12000
3 2011 4 1 0 10500
4 2011 5 1 0 10000
5 2011 6 1 0 9500
6 2011 1 0 1 7000
7 2011 2 0 1 8000
8 2011 3 0 1 5000
9 2011 4 1 1 6000
10 2011 5 1 1 6000
11 2011 6 1 1 7000

df_pv = df.pivot_table(index='campaign',columns = 'after', values = 'sales', aggfunc = np.sum)
df_pv['diff'] = df_pv[1]-df_pv[0]
df_pv['diff_pct'] = ((df_pv[1] - df_pv[0])/df_pv[0]).round(3)*100
df_pv

after 0 1 diff diff_pct
campaign
0 33000 30000 -3000 -9.1
1 20000 19000 -1000 -5.0
即使两家商店的销售额均出现环比(环比)下降,我们也可以说该事件取得了一些成功,因为计算的 DID (-5% - (-9.1%)) = 4.1% 表明该事件取得了成功一些效果。
我希望这两个组件的差异获得4.1并将其放在额外的行中。我可以获得 DID 但如何将结果放在新行中?
DID = df_pv.iloc[1,3] - df_pv.iloc[0,3]

Expected table:
after 0 1 diff diff_pct
campaign
0 33000 30000 -3000 -9.1
1 20000 19000 -1000 -5.0
Total 53000 49000
DID 4.1
如您所见,我猜表格进行了转换,是否可以在表格中添加额外的行并放置文本 DID 和值?
请问,你知道我能做什么吗?如果您了解 DID,您是否知道 Python 中的一个包可以进行此类计算以及如何应用于这种情况?预先感谢您的帮助。
[1] 引用:维基百科( https://en.wikipedia.org/wiki/Difference_in_differences)

最佳答案

这确实是对pandas的滥用,但如果你坚持,下面会产生你想要的结果:

df_pv.loc['Total'] =  [df_pv[0].sum(), df_pv[1].sum(), '', '']
df_pv.loc[''] = ['', '','DID', df_pv.iloc[1,3] - df_pv.iloc[0,3]]

关于python - 带有数据透视表的 Pandas 中的差异 DID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67462060/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com