相关文章推荐
含蓄的山楂  ·  南方周末·  2 月前    · 
爱听歌的手术刀  ·  Laravel提示 A facade ...·  1 年前    · 
酷酷的芹菜  ·  Beyond ...·  1 年前    · 

resample(self, 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)
比较关键的是rule,closed,label下面会随着两个用法说明

对时间数据细粒度增大,可以把每天的数据聚合成一周,可以求和或者均值的方式进行聚合
下面给出列子

times=pd.date_range('20180101',periods=30)
ts=pd.Series(np.arange(1,31),index=times)
2018-01-01     1
2018-01-02     2
2018-01-03     3
2018-01-04     4
2018-01-05     5
2018-01-06     6
2018-01-07     7
2018-01-08     8
2018-01-09     9
2018-01-10    10
2018-01-11    11
2018-01-12    12
2018-01-13    13
2018-01-14    14
2018-01-15    15
2018-01-16    16
2018-01-17    17
2018-01-18    18
2018-01-19    19
2018-01-20    20
2018-01-21    21
2018-01-22    22
2018-01-23    23
2018-01-24    24
2018-01-25    25
2018-01-26    26
2018-01-27    27
2018-01-28    28
2018-01-29    29
2018-01-30    30
Freq: D, dtype: int32
ts_7d=ts.resample('7D').sum()
ts_7d
2018-01-01     28
2018-01-08     77
2018-01-15    126
2018-01-22    175
2018-01-29     59
dtype: int32

我们看看上面代码,就是先给出一个1-30号的series,l然后聚合成左闭右开的5个区间[1,8),[8,15),[15,22),[22-29),[29-5(下个月)),每个区间的值就为单个区间值之和。由于29号往后只有29号和30号有值,所以只有两个值
下面我们看看label和closed的功能

ts_7d=ts.resample('7D',closed='right',label='left').sum()
ts_7d
Out[14]:
2017-12-25      1
2018-01-01     35
2018-01-08     84
2018-01-15    133
2018-01-22    182
2018-01-29     30

上面的代码,将closed改为了right,区间就变成了左开右闭,那么如果从区间还是(1,8],1就取不到,所以往前取,就是(25,1],(1,8],(8,15],(15,22],(22,29],(29,5]这6个区间

ts_7d=ts.resample('7D',closed='right',label='right').sum()
ts_7d
Out[15]:
2018-01-01      1
2018-01-08     35
2018-01-15     84
2018-01-22    133
2018-01-29    182
2018-02-05     30
dtype: int32

上面的代码就可以看出label=right就是指label等于右区间的值,如果label=left就是指label等于左区间的值

降低时间的细粒度,对于重采样,主要是涉及到值的填充。有下面的三种填充方法
不填充。那么对应无值的地方,用NaN代替。对应的方法是asfreq。
用前值填充。用前面的值填充无值的地方。对应的方法是ffill或者pad。
用后值填充。对应的方法是bfill,b代表back。
下面给出代码看一下

ts_7h_asfreq = ts.resample('7H').asfreq()
print(ts_7h_asfreq)
ts_7h_ffill = ts.resample('7H').ffill()
print(ts_7h_ffill)
ts_7h_bfill = ts.resample('7H').bfill()
ts_7h_bfill
2018-01-01 00:00:00    1.0
2018-01-01 07:00:00    NaN
2018-01-01 14:00:00    NaN
2018-01-01 21:00:00    NaN
Freq: 7H, dtype: float64
2018-01-01 00:00:00    1
2018-01-01 07:00:00    1
2018-01-01 14:00:00    1
2018-01-01 21:00:00    1
Freq: 7H, dtype: int32
Out[24]:
2018-01-01 00:00:00    1
2018-01-01 07:00:00    2
2018-01-01 14:00:00    2
2018-01-01 21:00:00    2
Freq: 7H, dtype: int32

重采样和降采样一般用在时间序列里面,合理的使用降低时间维度或者降低时间细粒度多可以成为好的特征。

函数原型resample(self, 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)比较关键的是rule,closed,label下面会随...
Pandasresample方法详解 Pandas的resample,重新采样,是对原样本重新处理的一个方法,是一个对常规时间序列数据重新采样和频率转换的便捷的方法。重新取样时间序列数据。 方便的时间序列的频率转换和重采样方法。对象必须具有类似datetime的索引(DatetimeIndex、PeriodIndex或TimedeltaIndex),或将类似datetime的值传递给on或level关键字。 DataFrame.resample(rule, axis=0, closed=None, la
resample函数 函数语法: df.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) rule:为用来表示频
函数原型 resample(self, 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) 比较关键的是rule,closed,label下面会随着两个用法说明 对时间数据细粒度增大,可以把每天的数据聚合成一周,可以求和或者均值的方式进行聚合 下面给出列子 times=pd.date_range('20180101',period
resample() resample()进行重采样重采样(Resampling)指的是把时间序列的频度变为另一个频度的过程。把高频度的数据变为低频度叫做降采样(downsampling),把低频度变为高频度叫做增采样(upsampling)。 考虑因素: 各区间哪边是闭合的(参数:closed) 如何标记各聚合面元,用区间的开头还是末尾(参数:label) In [232]: ts_index = pd.date_range('2018-08-03',periods =12,freq = 'T') In [233]: ts = pd.Series(np.arange(12),i
#把流量数据每3分钟聚合一次 def flowdata_fusion_3(temp_volume_series, temp_time_series): # print(temp_volume_series) temp_volume_series.index = te... 求图像的梯度,一般是对灰度图像或者彩色图像进行操作。数字图像就是离散的点值谱,也可以叫二维离散函数。图像的梯度就是这个二维离散函数的求导。 // 图像梯度: G(x,y) = dx(i,j) + dy(i,j); dx(i,j) = I(i+1,j) - I(i,j); dy(i,j) = I(i,j+1) - I(i,j); // 其,I是图像像素的值(如:RGB值),(i,j)为像素的坐标。 // 图像梯度一般也可以用值差分: dx(i,j) = [I(i+1,j) - p–重采样之后目标频率; q–待重采样的时间序列频率 采用多相滤波器对时间序列进行重采样,得到的序列y的长度为原来的序列的长度的p/q倍,p和q都为正整数。此时,默认地采用使用FIR方法设计的抗混叠的低通滤波器 2、y=resample(x,p,q,n) n–滤波器长度与n成正比; 采用chebyshevIIR型低通滤波器对时间序列进行重采样,滤波器的长度与n成比例,n缺省值为10. ```pythonimport numpy as np# 创建一个原始数据data = np.array([1,2,3,4,5,6,7,8,9,10]) # 使用resample函数进行降采样,将原始数据每两个元素合并为一个downsampled_data = np.resample(data, len(data)//2) print(downsampled_data) 输出结果为: [1.53.55.57.59.5] 在上述示例,我们使用`resample`函数对原始数据进行了降采样,将每两个元素合并为一个元素。你可以根据需要调整降采样的方式和参数。