我有一张大桌子,里面有销售数据.每一行都包含几个销售信息,但对于我们的讨论,它包含一个日期时间列和一个销售值.

我一直在try 使用Grouper按5分钟频率的时间序列对销售额进行分组.

import pandas as pd
import datetime

data = pd.DataFrame({
    'date' : [datetime.datetime(2022,11,1,0,10,0), datetime.datetime(2022,11,1,0,25,0),datetime.datetime(2022,11,1,0,35,0)],
    'gmv' : [10,20,40]})
df = data.groupby([pd.Grouper(key='date', freq='5Min', origin='start_day', convention = 'start', dropna = False, sort=True, closed = 'left')]).aggregate({'gmv' :'sum'}).reset_index()
df["cum_sale"]=df.groupby([df['date'].dt.date])['gmv'].cumsum(axis=0)

但是,尽管我要求5分钟的频率,第一个结果是延迟10分钟.我知道前5分钟没有任何交易,但一个怎么可能"强迫"它存在呢?

enter image description here

有没有更好的方法来组织这样的数据?在打开它的日累计销售额后,我正在绘制它,但上面的"10分钟"偏移量打破了我的图表.


Update for futher questions

这是我的源表VALUE_COUNTS()

enter image description here

我正在try 应用建议的答案

tdf = teste[['data', 'marca','gmv']]
tdf = tdf.astype({'marca':'str'}) #("marca" was a category type)
dti = pd.date_range(tdf['data'].min().normalize(), tdf['data'].max(), freq='5min', name='data')
df = tdf.set_index('data').reindex(dti, fill_value=0).reset_index()
df['cum_sale'] = df.resample('D', on='data')['gmv'].cumsum()
df

但现在我的桌子几乎空空如也.

enter image description here

推荐答案

Pandas 使用start_date作为origin来计算分组,并从第一个值到最后一个值进行内插,但它不会在其范围之外推断丢失的日期.您必须手动处理::

dti = pd.date_range(data['date'].min().normalize(), data['date'].max(), freq='5min', name='date')
df = data.resample('5min', on='date')['gmv'].sum().reindex(dti, fill_value=0).reset_index()
df['cum_sale'] = df.resample('D', on='date')['gmv'].cumsum()

输出:

>>> df
                 Date  gmv  cum_sale
0 2022-11-01 00:00:00    0         0
1 2022-11-01 00:05:00    0         0
2 2022-11-01 00:10:00   10        10
3 2022-11-01 00:15:00    0        10
4 2022-11-01 00:20:00    0        10
5 2022-11-01 00:25:00   20        30
6 2022-11-01 00:30:00    0        30
7 2022-11-01 00:35:00   40        70

Python相关问答推荐

Python:记录而不是在文件中写入询问在多文件项目中记录的最佳实践

过载功能是否包含Support Int而不是Support Int?

如何使用stride_tricks.as_strided逆转NumPy数组

拆分pandas列并创建包含这些拆分值计数的新列

滚动和,句号来自Pandas列

如何让剧作家等待Python中出现特定cookie(然后返回它)?

发生异常:TclMessage命令名称无效.!listbox"

Telethon加入私有频道

对所有子图应用相同的轴格式

如何使用表达式将字符串解压缩到Polars DataFrame中的多个列中?

名为__main__. py的Python模块在导入时不运行'

让函数调用方程

用渐近模计算含符号的矩阵乘法

如何在Python请求中组合多个适配器?

在numpy数组中寻找楼梯状 struct

简单 torch 模型测试:ModuleNotFoundError:没有名为';Ultralytics.yolo';

如何使用加速广播主进程张量?

合并相似列表

如何编辑此代码,使其从多个EXCEL文件的特定工作表中提取数据以显示在单独的文件中

Django在一个不是ForeignKey的字段上加入'