一、创建数据源
resample 函数的作用,是将时间序列,按一定频率进行分割
DataFrame.resample(rule, how=None, axis=0, fill_method=None,
closed=None, label=None,
convention='start', kind=None, loffset=None, limit=None,
base=0, on=None, level=None)
二、对参数 closed 和 label 的解释
rng = pd.date_range('20180103', periods=12)
ts = pd.Series(np.arange(1,13), index=rng)
ts
# 2018-01-03 1
# 2018-01-04 2
# 2018-01-05 3
# 2018-01-06 4
# 2018-01-07 5
# 2018-01-08 6
# 2018-01-09 7
# 2018-01-10 8
# 2018-01-11 9
# 2018-01-12 10
# 2018-01-13 11
# 2018-01-14 12
1、closed 参数:决定分割区间的开闭方向
默认参数:label=left,closed=left
ts.resample("5D").sum()
# 2018-01-03 15
# 2018-01-08 40
# 2018-01-13 23
# Freq: 5D, dtype: int32
""" 解释:closed 参数默认值为 left,左闭右开 """
ts的时间段为:2018-01-03 至 2018-01-14,以 5天为频率进行分割
[3, 8) 求和:1+2+3+4+5 = 15
[8, 13) 求和:6+7+8+9+10 = 40
[13, 18) 求和:11+12 = 23
label=left,closed=right
ts.resample("5D", closed="right").sum()
# 2017-12-29 1
# 2018-01-03 20
# 2018-01-08 45
# 2018-01-13 12
# Freq: 5D, dtype: int32
""" 解释:closed="right"时,为 “左开右闭” """
ts的时间段为:2018-01-03 至 2018-01-14,以 5天为频率进行分割
(3, 8] 求和:2+3+4+5+6 = 20
(8, 13] 求和:7+8+9+10+11 = 45
(13, 18] 求和:12 = 12
由于 时间序列的第一个数据:2018-01-03 不在分割区间内,
所以会提前几天,则分割区间的第一个为:
(29, 3] 即 2017-12-29 ~ 2018-01-03 求和:1
2、label 参数:决定标签的取值方向
默认参数:label=left,closed=left
ts.resample("5D").sum()
# 2018-01-03 15
# 2018-01-08 40
# 2018-01-13 23
# Freq: 5D, dtype: int32
""" 解释:label 参数默认值为 left,取分割区间左边的值作为标签 """
ts的时间段为:2018-01-03 至 2018-01-14,以 5天为频率进行分割
[3, 8) 标签:2018-01-03
[8, 13) 标签:2018-01-08
[13, 18) 标签:2018-01-13
label=right,closed=left
ts.resample("5D", label="right").sum()
# 2017-12-29 1
# 2018-01-03 20
# 2018-01-08 45
# 2018-01-13 12
# Freq: 5D, dtype: int32
""" 解释:label="right"时,为 “左开右闭” """
ts的时间段为:2018-01-03 至 2018-01-14,以 5天为频率进行分割
(3, 8] 标签:2018-01-03
(8, 13] 标签:2018-01-08
(13, 18] 标签:2018-01-13
由于 时间序列的第一个数据:2018-01-03 不在分割区间内,
所以会提前几天,则分割区间的第一个为:
(29, 3] 即 2017-12-29 ~ 2018-01-03 标签:2017-12-29
两个参数均为 right时,即 label=right,closed=right
ts.resample("5D", label="right", closed="right").sum()
# 2018-01-03 1
# 2018-01-08 20
# 2018-01-13 45
# 2018-01-18 12
# Freq: 5D, dtype: int32
分割区间 标签 求和
(29, 3] 2018-01-03 1
(3, 8] 2018-01-08 20
(8, 13] 2018-01-13 45
(13, 18] 2018-01-18 12
本文详细解释了pandas库中resample函数的closed和label参数。closed参数决定了时间序列分割区间的开闭方向,而label参数则影响了标签的取值方向。默认情况下,两者都为'left',但可以分别设置为'right',改变区间和标签的行为。

6354

被折叠的 条评论
为什么被折叠?



