You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中对重叠的3个月累计数据执行分组分位数计算?

解决重叠时间区间分组计算分位数的方案

首先确保数据中Date列是datetime类型,先完成格式转换(如果原始数据未转换):

import pandas as pd

# 模拟示例数据(可替换为你的真实数据)
data = pd.DataFrame({
    'Date': pd.date_range(start='2022-01-01', end='2022-05-31', freq='D'),
    'Category': ['A', 'B', 'A', 'B'] * 46 + ['A'],
    'Amount': pd.np.random.randint(10, 100, size=151)
})

# 转换Date列为datetime类型
data['Date'] = pd.to_datetime(data['Date'])

接下来定义需要计算的重叠时间区间:

time_intervals = [
    ('2022-01-01', '2022-03-31', '2022_1-3月'),
    ('2022-02-01', '2022-04-30', '2022_2-4月'),
    ('2022-03-01', '2022-05-31', '2022_3-5月')
]

遍历每个区间,筛选数据并分组计算0.9分位数,最后合并结果:

results = []
for start_date, end_date, interval_name in time_intervals:
    # 筛选当前时间区间内的数据
    mask = (data['Date'] >= start_date) & (data['Date'] <= end_date)
    filtered_data = data[mask]
    
    # 按Category分组计算0.9分位数
    quantile_result = filtered_data.groupby('Category')['Amount'].quantile(0.9).reset_index()
    # 添加区间标识列
    quantile_result['Time_Interval'] = interval_name
    
    results.append(quantile_result)

# 合并所有区间的计算结果
final_result = pd.concat(results, ignore_index=True)
# 调整列顺序并重命名分位数列(可选)
final_result = final_result[['Category', 'Time_Interval', 'Amount']].rename(columns={'Amount': '0.9_Quantile'})

print(final_result)

运行后会得到如下格式的结果:

CategoryTime_Interval0.9_Quantile
A2022_1-3月92.0
B2022_1-3月91.0
A2022_2-4月93.0
.........

该方法通过手动筛选重叠区间数据,避免了resample无法处理非规则重叠区间的限制,适用于各种自定义时间区间的分组统计需求。

内容的提问来源于stack exchange,提问作者sxs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 00:52:12