【发布时间】:2021-02-16 14:36:42
【问题描述】:
我有一个数据集 df,我试图在其中计算特定组在一段时间内的百分比增长。这是数据集:
date size type
1/1/2020 1 a
1/1/2020 1 a
1/1/2020 3 a
1/1/2020 1 b
1/1/2020 2 b
1/1/2020 0 b
2/1/2020 5 a
2/1/2020 6 a
2/1/2020 3 a
2/1/2020 20 b
2/1/2020 21 b
2/1/2020 30 b
期望的输出
date increase diff type
1/1/2020 200% 2 a
1/1/2020 -40% -2 a
2/1/2020 -100 -1 b
2/1/2020 50% 10 b
Percent Increase/Change is final-inital/initial * 100
example for a , we start at 1 then end at 3,
which is a 200% increase in the month of January
这就是我正在做的:
import pandas as pd
import numpy as np
df['date'] = pd.to_datetime(df['date'])
df1=df.groupby(['type', pd.Grouper(key='date', freq='1D')])['size'].sum()
df1['increase'] = df1['size'].pct_change().mul(100)
df1['diff'] = df1['size'].diff()
但是,我的日期没有正确分组。由于我只有每月第一天的连续日期,我想我可以使用 freq = '1D'
date
1/1/2020
1/1/2020
1/1/2020
1/1/2020
我想我必须按类型和日期分组,但我不确定,我仍在研究这个。
欢迎提出任何建议。
更新
我有一个数据集 df,我希望在其中计算特定组的总和在一段时间内的百分比增长。这是数据集:
date size type
1/1/2020 1 a
1/1/2020 1 a
1/1/2020 1 a
1/1/2020 2 b
1/1/2020 5 b
1/1/2020 6 b
2/1/2020 20 a
2/1/2020 21 a
2/1/2020 10 a
2/1/2020 1 b
2/1/2020 4 b
2/1/2020 5 b
期望的输出
(grouping by type and date to find sum)
date size type
1/1/2020 3 a
2/1/2020 51 a
1/1/2020 13 b
2/1/2020 10 b
我相信这会在第一部分完成:
df.groupby(['date','type']).sum()
(按类型查找增量和差异)
最终期望的输出:
date type increase diff
2/1/2020 a 1600% 48
2/1/2020 b -23.07% -3
Percent Increase/Change is final-inital/initial * 100
【问题讨论】:
-
能否请您详细说明这个问题和您之前的问题的区别?例如你如何定义组
a的最终和初始,因为它们只有多个相同的date。是不是对于dates 组,您选择最后一个索引作为最终索引,将第一个索引作为初始索引? -
谢谢。我对日期感到困惑
标签: python pandas numpy time-series