【问题标题】:Pandas group data by customized time windowPandas 按自定义时间窗口分组数据
【发布时间】:2021-04-11 15:29:31
【问题描述】:

我有一个包含 DateTime 的数据集,我想每 3 周绘制一次数据点的汇总数。

如何以自定义方式(如 3 周或 3 天)按我的数据对 pandas 进行分组?

我知道您可以使用 grouper 将数据按月或按周分组。

数据如下所示。

 {'date': {0: '12/31/20',
  1: '12/31/20',
  2: '12/31/20',
  3: '12/30/20',
  4: '12/30/20',
  5: '12/30/20',
  6: '12/30/20',
  7: '12/30/20',
  8: '12/30/20',
  9: '12/30/20',
  10: '12/30/20',
  11: '12/30/20',
  12: '12/29/20',
  13: '12/29/20',
  14: '12/29/20',
  15: '12/29/20',
  16: '12/29/20',
  17: '12/28/20',
  18: '12/27/20',
  19: '12/26/20',
  20: '12/25/20',
  21: '12/25/20',
  22: '12/23/20',
  23: '12/23/20',
  24: '12/23/20',
  25: '12/23/20',
  26: '12/23/20',
  27: '12/23/20',
  28: '12/23/20',
  29: '12/22/20',
  30: '12/22/20',
  31: '12/22/20',
  32: '12/22/20',
  33: '12/22/20',
  34: '12/21/20',
  35: '12/21/20',
  36: '12/21/20',
  37: '12/21/20',
  38: '12/20/20',
  39: '12/18/20',
  40: '12/18/20',
  41: '12/18/20',
  42: '12/17/20',
  43: '12/17/20',
  44: '12/17/20',
  45: '12/17/20',
  46: '12/17/20',
  47: '12/16/20',
  48: '12/16/20',
  49: '12/16/20',
  50: '12/16/20',
  51: '12/16/20',
  52: '12/16/20',
  53: '12/15/20',
  54: '12/15/20',
  55: '12/15/20',
  56: '12/15/20',
  57: '12/15/20',
  58: '12/15/20',
  59: '12/15/20',
  60: '12/15/20',
  61: '12/14/20',
  62: '12/14/20',
  63: '12/14/20',
  64: '12/14/20',
  65: '12/14/20',
  66: '12/14/20',
  67: '12/14/20',
  68: '12/14/20',
  69: '12/13/20',
  70: '12/13/20',
  71: '12/12/20',
  72: '12/12/20',
  73: '12/12/20',
  74: '12/12/20',
  75: '12/11/20',
  76: '12/11/20',
  77: '12/11/20',
  78: '12/11/20',
  79: '12/11/20',
  80: '12/11/20',
  81: '12/11/20',
  82: '12/11/20',
  83: '12/10/20',
  84: '12/10/20',
  85: '12/10/20',
  86: '12/10/20',
  87: '12/10/20',
  88: '12/9/20',
  89: '12/9/20',
  90: '12/9/20',
  91: '12/9/20',
  92: '12/8/20',
  93: '12/8/20',
  94: '12/8/20',
  95: '12/8/20',
  96: '12/8/20',
  97: '12/8/20',
  98: '12/7/20',
  99: '12/7/20',
  100: '12/7/20',
  101: '12/7/20',
  102: '12/7/20',
  103: '12/7/20',
  104: '12/7/20',
  105: '12/6/20',
  106: '12/6/20',
  107: '12/5/20',
  108: '12/5/20',
  109: '12/5/20',
  110: '12/4/20',
  111: '12/4/20',
  112: '12/4/20',
  113: '12/4/20',
  114: '12/4/20',
  115: '12/4/20',
  116: '12/4/20',
  117: '12/4/20',
  118: '12/4/20',
  119: '12/4/20',
  120: '12/4/20',
  121: '12/3/20',
  122: '12/3/20',
  123: '12/3/20',
  124: '12/3/20',
  125: '12/3/20',
  126: '12/3/20',
  127: '12/2/20',
  128: '12/2/20',
  129: '12/1/20',
  130: '12/1/20',
  131: '12/1/20',
  132: '11/30/20',
  133: '11/29/20',
  134: '11/29/20',
  135: '11/26/20',
  136: '11/25/20',
  137: '11/24/20',
  138: '11/23/20',
  139: '11/21/20',
  140: '11/20/20',
  141: '11/19/20',
  142: '11/19/20',
  143: '11/19/20',
  144: '11/17/20',
  145: '11/17/20',
  146: '11/17/20',
  147: '11/17/20',
  148: '11/16/20',
  149: '11/16/20',
  150: '11/15/20',
  151: '11/15/20',
  152: '11/14/20',
  153: '11/13/20',
  154: '11/9/20',
  155: '11/8/20',
  156: '11/7/20',
  157: '11/5/20',
  158: '11/5/20',
  159: '11/4/20',
  160: '10/28/20',
  161: '10/28/20',
  162: '10/28/20',
  163: '10/28/20',
  164: '10/28/20',
  165: '10/27/20',
  166: '10/27/20',
  167: '10/27/20'
}}

【问题讨论】:

  • 您可以使用 pd.Grouper 的频率,例如 3 天或 3 周,例如pd.Grouper(key='dt', freq='3D') 3 天
  • @perl 谢谢,它有效。虽然它的行为方式很奇怪,就像第一天是在星期三,并且它被分组在一个时间窗口中,从我的数据集中第一天的前三周开始。原点参数不起作用。
  • 根据我在文档中看到的,它应该是offset 参数,而不是origin(虽然没有尝试过,所以不能保证:))

标签: python pandas dataframe group-by data-manipulation


【解决方案1】:

你可以的

df_sampled = df.set_index('date').resample('3M').mean().reset_index()

在示例中,聚合是均值。替换为您的聚合函数。当然,您确实需要一个包含要汇​​总的值的附加列。

在这些步骤之后,您可以使用 df.plot() 或使用 matplotlib 或其他一些库进行绘图

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-02
    • 2015-12-19
    • 2016-03-14
    • 2021-09-05
    • 2013-04-24
    • 2020-04-20
    • 2020-11-23
    • 2021-04-29
    相关资源
    最近更新 更多