Pandas 比较每年年底的累计销售额

Pandas 比较每年年底的累计销售额,pandas,seaborn,Pandas,Seaborn,使用此示例数据帧: np.random.seed(1111) df = pd.DataFrame({ 'Category':np.random.choice( ['Group A','Group B','Group C','Group D'], 10000), 'Sub-Category':np.random.choice( ['X','Y','Z'], 10000), 'Sub-Category-2':np.random.choice( ['G','F','I'], 10000), 'Prod

使用此示例数据帧:

np.random.seed(1111)
df = pd.DataFrame({
'Category':np.random.choice( ['Group A','Group B','Group C','Group D'], 10000),
'Sub-Category':np.random.choice( ['X','Y','Z'], 10000),
'Sub-Category-2':np.random.choice( ['G','F','I'], 10000),
'Product':np.random.choice( ['Product 1','Product 2','Product 3'], 10000),
'Units_Sold':np.random.randint(1,100, size=(10000)),
'Dollars_Sold':np.random.randint(100,1000, size=10000),
'Customer':np.random.choice(pd.util.testing.rands_array(10,25,dtype='str'),10000),
'Date':np.random.choice( pd.date_range('1/1/2016','12/31/2020',  
                      freq='M'), 10000)})
我试图将12个月的时间框架与seaborn地块进行比较,作为一个类别分组。例如,我想比较截至4-30年的每年累计12个月与每年同期的情况。我不知道如何获得每年(5/1/17-4/30/18、5/1/18-4/30/19、5/1/19-4/30/20)的连续数据总量。这些日期只是例子——我希望能够比较不同的年终数据点,甚至更好的是能够比较365天。例如,我想比较3/15/19-3/14/20和3/15/18-3/14/19,等等

我设想为每个“类别”(a、B、C、D)绘制一个图表,其中各年份的线条表示从5月1日开始,一直到明年4月30日的运行总数。x轴是月份(从5月1日开始),y轴是增长时的“售出单位”


任何帮助都将不胜感激

将日期转换为会计季度并提取会计年度的一种方法:

df = pd.DataFrame({'Date':pd.date_range('2019-01-01', '2019-12-31', freq='M'),
                   'Values':np.arange(12)})
df['fiscal_year'] = df.Date.dt.to_period('Q-APR').dt.qyear
输出:

         Date  Values  fiscal_year
0  2019-01-31       0         2019
1  2019-02-28       1         2019
2  2019-03-31       2         2019
3  2019-04-30       3         2019
4  2019-05-31       4         2020
5  2019-06-30       5         2020
6  2019-07-31       6         2020
7  2019-08-31       7         2020
8  2019-09-30       8         2020
9  2019-10-31       9         2020
10 2019-11-30      10         2020
11 2019-12-31      11         2020

现在你可以随心所欲地按会计年度分组。

谢谢,广!一个问题-为什么你用“Q-APR”代替“A-APR”?我也不知道如何将这些信息带到图表中。谢谢你的帮助!老实说,我不知道
'A-APR'
是一件事:D.这当然是一个更好的解决方案,所以你不需要做
dt.qyear
:-)