目录

  • 1 时序中的基本对象
  • 2 时间戳
    • 2.1 Timestamp的构造与属性
    • 2.2 Datetime序列的生成
    • 2.3 dt对象
    • 2.4 时间戳的切片与索引
  • 3 时间差
    • 3.1 Timedelta的生成
    • 3.2 Timedelta的运算
  • 4 日期偏差
    • 4.1 Offset对象
    • 4.2 偏置字符串
  • 5 时序中的滑窗与分组
    • 5.1 滑动窗口
    • 5.2 重采样
  • 6 练习
    • 6.1 太阳辐射数据集
    • 6.2 水果销量数据集

1 时序中的基本对象

  • 【例子】:例如2020年9月7日周一早上8点整需要到教室上课,这个课会在当天早上10点结束
  • 时间戳(Date times):即’2020-9-7 08:00:00’和’2020-9-7 10:00:00’这两个时间点分别代表了上课和下课的时刻。
    • pandas中称为 Timestamp
    • 一系列的时间戳可以组成 DatetimeIndex,而将它放到 Series中后, Series 的类型就变为了 datetime64[ns],如果有涉及时区则为 datetime64[ns, tz],其中tztimezone的简写。
  • 时间差(Time deltas):即上课需要的时间
    • 两个 Timestamp 做差就得到了时间差,pandas中利用 Timedelta 来表示。
    • 类似的,一系列的时间差就组成了TimedeltaIndex, 而将它放到Series中后, Series的类型就变为了timedelta64[ns]
  • 时间段(Time spans):即在8点到10点这个区间都会持续地在上课
    • pandas 利用 Period 来表示。
    • 类似的,一系列的时间段就组成了PeriodIndex, 而将它放到 Series 中后, Series的类型就变为了Period
  • 日期偏置(Date offsets):假设你只知道9月的第一个周一早上8点要去上课,但不知道具体的日期,那么就需要一个类型来处理此类需求
    • pandas 中的 DateOffset
    • 同时,pandas 中没有为一列时间偏置专门设计存储类型,一般来说我们只需要对一批时间特征做一个统一的特殊日期偏置。
概念 单元素类型 数组类型 pandas数据类型
Date times Timestamp DatetimeIndex datetime64[ns]
Time deltas Timedelta TimedeltaIndex timedelta64[ns]
Time spans Period PeriodIndex period[freq]
Date offsets DateOffset None None

2 时间戳

2.1 Timestamp的构造与属性

  • pd.Timestamp函数:单个时间戳的生成利用此函数实现

    • 通过 year, month, day, hour, min, second可以获取具体的数值
    • 【例子】
    ts = pd.Timestamp('2020/1/1')
    ts
    # Timestamp('2020-01-01 00:00:00')
    ts = pd.Timestamp('2020-1-1 08:10:30')
    ts
    # Timestamp('2020-01-01 08:10:30')
    
    ts.year
    # 2020
    ts.second
    # 30
    
  • 时间戳的表示范围: 在 pandas中,时间戳的最小精度为纳秒 ns ,由于使用了64位存储,可以表示的时间范围大约可以如下计算:
    Time Range =264109×60×60×24×365≈585(=\frac{2^{64}}{10^{9} \times 60 \times 60 \times 24 \times 365} \approx 585(=109×60×60×24×365264​≈585( Years )))
    通过 pd.Timestamp.maxpd.Timestamp.min 可以获取时间戳表示的范围:

    pd.Timestamp.max
    # Timestamp('2262-04-11 23:47:16.854775807')
    pd.Timestamp.min
    # Timestamp('1677-09-21 00:12:43.145225')
    pd.Timestamp.max.year - pd.Timestamp.min.year
    # 585
    

2.2 Datetime序列的生成

  • to_datetime函数:能够把一列时间戳格式的对象转换成为datetime64[ns]类型的时间序列

    • 在极少数情况,时间戳的格式不满足转换时,可以强制使用 format进行匹配
    • 【例子】
    pd.to_datetime(['2020-1-1', '2020-1-3', '2020-1-6'])
    #  DatetimeIndex(['2020-01-01', '2020-01-03', '2020-01-06'], dtype='datetime64[ns]', freq=None)
    temp = pd.to_datetime(['2020\\1\\1','2020\\1\\3'],format='%Y\\%m\\%d')
    temp
    # DatetimeIndex(['2020-01-01', '2020-01-03'], dtype='datetime64[ns]', freq=None)
    

    注意:上面由于传入的是列表,而非 pandas 内部的Series ,因此返回的是 DatetimeIndex,如果想要转为datetime64[ns]的序列,需要显式用 Series 转化

    pd.Series(temp).head()
    '''
    0   2020-01-01
    1   2020-01-03
    dtype: datetime64[ns]
    '''
    
    • 还存在一种把表的多列时间属性拼接转为时间序列的to_datetime操作,此时的列名必须和以下给定的时间关键词列名一致
    df_date_cols = pd.DataFrame({'year': [2020, 2020],'month': [1, 1],'day': [1, 2],'hour': [10, 20],'minute': [30, 50],'second': [20, 40]})
    pd.to_datetime(df_date_cols)
    '''
    0   2020-01-01 10:30:20
    1   2020-01-02 20:50:40
    dtype: datetime64[ns]
    '''
    
  • date_range函数:是一种生成连续间隔时间的一种方法
    • 参数:start, end, freq, periods,它们分别表示开始时间,结束时间,时间间隔,时间戳个数。其中,四个中的三个参数决定了

    注意:开始或结束日期如果作为端点则它会被包含

    pd.date_range('2020-1-1','2020-1-21', freq='10D') # 包含
    # DatetimeIndex(['2020-01-01', '2020-01-11', '2020-01-21'], dtype='datetime64[ns]', freq='10D')
    pd.date_range('2020-1-1','2020-2-28', periods=6) # 由于结束日期无法取到,freq不为10天
    '''
    DatetimeIndex(['2020-01-01 00:00:00', '2020-01-12 14:24:00','2020-01-24 04:48:00', '2020-02-04 19:12:00','2020-02-16 09:36:00', '2020-02-28 00:00:00'],dtype='datetime64[ns]', freq=None)
    '''
    
  • asfreq函数:是一种改变序列采样频率的方法,它能够根据给定的 freq对序列进行类似于 reindex的操作
    s = pd.Series(np.random.rand(5),index=pd.to_datetime(['2020-1-%d'%i for i in range(1,10,2)]))
    s.head()
    '''
    2020-01-01    0.836578
    2020-01-03    0.678419
    2020-01-05    0.711897
    2020-01-07    0.487429
    2020-01-09    0.604705
    dtype: float64
    '''
    s.asfreq('D').head()
    '''
    2020-01-01    0.836578
    2020-01-02         NaN
    2020-01-03    0.678419
    2020-01-04         NaN
    2020-01-05    0.711897
    Freq: D, dtype: float64
    '''
    

2.3 dt对象

  • dt 对象:在时序类型的序列上定义了dt对象来完成许多时间序列的相关操作。
  • datetime64[ns] 类型而言,可以大致分为三类操作:取出时间相关的属性、判断时间戳是否满足条件、取整操作。
  • 第一类操作的常用属性包括: date, time, year, month, day, hour, minute, second, microsecond, nanosecond, dayofweek(返回了周中的星期情况,周一为0、周二为1), dayofyear, weekofyear, daysinmonth, quarter ,其中daysinmonth, quarter分别表示月中的第几天和季度。
    s = pd.Series(pd.date_range('2020-1-1','2020-1-3', freq='D'))
    s.dt.daysinmonth
    '''
    0    31
    1    31
    2    31
    dtype: int64
    '''
    s.dt.dayofweek
    '''
    0    2
    1    3
    2    4
    dtype: int64
    '''
    

    注意:通过 month_name, day_name 返回英文的月名和星期名,注意它们是方法而不是属性

    s.dt.month_name()
    '''
    0    January
    1    January
    2    January
    dtype: object
    '''
    s.dt.day_name()
    '''
    0    Wednesday
    1     Thursday
    2       Friday
    dtype: object
    '''
    
  • 第二类判断操作主要用于测试是否为月/季/年的第一天或者最后一天
    s.dt.is_year_start # 还可选 is_quarter/month_start
    '''
    0     True
    1    False
    2    False
    dtype: bool
    '''
    s.dt.is_year_end # 还可选 is_quarter/month_end
    '''
    0    False
    1    False
    2    False
    dtype: bool
    '''
    
  • 第三类的取整操作包含round(), ceil(向上取整), floor(向下取整),它们的公共参数为 freq ,常用的包括 H, min, S(小时、分钟、秒)
    s = pd.Series(pd.date_range('2020-1-1 20:35:00','2020-1-1 22:35:00',freq='45min'))
    s
    '''
    0   2020-01-01 20:35:00
    1   2020-01-01 21:20:00
    2   2020-01-01 22:05:00
    dtype: datetime64[ns]
    '''
    s.dt.round('1H')
    '''
    0   2020-01-01 21:00:00
    1   2020-01-01 21:00:00
    2   2020-01-01 22:00:00
    dtype: datetime64[ns]
    '''
    s.dt.ceil('1H')
    '''
    0   2020-01-01 21:00:00
    1   2020-01-01 22:00:00
    2   2020-01-01 23:00:00
    dtype: datetime64[ns]
    '''
    s.dt.floor('1H')
    '''
    0   2020-01-01 20:00:00
    1   2020-01-01 21:00:00
    2   2020-01-01 22:00:00
    dtype: datetime64[ns]'''
    

2.4 时间戳的切片与索引

  • 一般而言,时间戳序列作为索引使用
  • 选出某个子时间戳序列:第一类方法是利用 dt 对象和布尔条件联合使用;另一种方式是利用切片,后者常用于连续时间戳。
    • 【例子】
    s = pd.Series(np.random.randint(2,size=366),index=pd.date_range('2020-01-01','2020-12-31'))
    idx = pd.Series(s.index).dt
    s.head()
    '''
    2020-01-01    1
    2020-01-02    1
    2020-01-03    0
    2020-01-04    1
    2020-01-05    0
    Freq: D, dtype: int32
    '''
    

    【例子1】每月的第一天或者最后一天

    s[(idx.is_month_start|idx.is_month_end).values].head()
    

    【例子2】双休日

    s[idx.dayofweek.isin([5,6]).values].head()
    

    【例子3】取出单日值

    s['2020-01-01']
    

    【例子4】取出七月

    s['2020-07'].head()
    '''
    2020-07-01    0
    2020-07-02    1
    2020-07-03    0
    2020-07-04    0
    2020-07-05    0
    Freq: D, dtype: int32
    '''
    

    【例子5】取出5月初至7月15日

    s['2020-05':'2020-7-15'].head()
    '''
    2020-05-01    0
    2020-05-02    1
    2020-05-03    0
    2020-05-04    1
    2020-05-05    1
    Freq: D, dtype: int32
    '''
    

3 时间差

3.1 Timedelta的生成

  • pd.Timedelta构造:时间差可以理解为两个时间戳的差

    pd.Timestamp('20200102 08:00:00')-pd.Timestamp('20200101 07:35:00')
    # Timedelta('1 days 00:25:00')
    pd.Timedelta(days=1, minutes=25) # 需要注意加s
    # Timedelta('1 days 00:25:00')
    pd.Timedelta('1 days 25 minutes') # 字符串生成
    # Timedelta('1 days 00:25:00')
    
  • pd.to_timedelta函数:生成时间差序列的主要方式是 pd.to_timedelta,其类型为timedelta64[ns]
    s = pd.to_timedelta(df.Time_Record)
    s.head()
    '''
    0   0 days 00:04:34
    1   0 days 00:04:20
    2   0 days 00:05:22
    3   0 days 00:04:08
    4   0 days 00:05:22
    Name: Time_Record, dtype: timedelta64[ns]
    '''
    
  • timedelta_range函数:与 date_range 一样,时间差序列也可以用此函数生成,它们两者具有一致的参数
    pd.timedelta_range('0s', '1000s', freq='6min')
    #   TimedeltaIndex(['0 days 00:00:00', '0 days 00:06:00', '0 days 00:12:00'], dtype='timedelta64[ns]', freq='6T')
    
  • dt对象:对于 Timedelta 序列,同样也定义了dt对象,上面主要定义了的属性包括 days, seconds, mircroseconds, nanoseconds,它们分别返回了对应的时间差特征。

    注意:这里的seconds不是指单纯的秒,而是对天数取余后剩余的秒数

    s.dt.seconds.head()
    '''
    0    274
    1    260
    2    322
    3    248
    4    322
    Name: Time_Record, dtype: int64
    '''
    
    • 如果不想对天数取余而直接对应秒数,可以使用 total_seconds
    s.dt.total_seconds().head()
    '''
    0    274.0
    1    260.0
    2    322.0
    3    248.0
    4    322.0
    Name: Time_Record, dtype: float64
    '''
    
    • 与时间戳序列类似,取整函数也是可以在dt对象上使用
    pd.to_timedelta(df.Time_Record).dt.round('min').head()
    '''
    0   0 days 00:05:00
    1   0 days 00:04:00
    2   0 days 00:05:00
    3   0 days 00:04:00
    4   0 days 00:05:00
    Name: Time_Record, dtype: timedelta64[ns]
    '''
    

3.2 Timedelta的运算

  • 时间差支持的常用运算有三类:与标量的乘法运算、与时间戳的加减法运算、与时间差的加减法与除法运算

    td1 = pd.Timedelta(days=1)
    td2 = pd.Timedelta(days=3)
    ts = pd.Timestamp('20200101')
    # 乘法运算
    td1 * 2
    # Timedelta('2 days 00:00:00')# 加减法
    td2 - td1
    # Timedelta('2 days 00:00:00')
    
  • 这些运算都可以移植到时间差的序列上
    td1 = pd.timedelta_range(start='1 days', periods=5)
    td2 = pd.timedelta_range(start='12 hours',freq='2H',periods=5)
    ts = pd.date_range('20200101', '20200105')
    td1 * 5
    #  TimedeltaIndex(['5 days', '10 days', '15 days', '20 days', '25 days'], dtype='timedelta64[ns]', freq='5D')
    td1 * pd.Series(list(range(5))) # 逐个相乘
    '''
    0    0 days
    1    2 days
    2    6 days
    3   12 days
    4   20 days
    dtype: timedelta64[ns]
    '''
    td1 - td2
    '''
    TimedeltaIndex(['0 days 12:00:00', '1 days 10:00:00', '2 days 08:00:00','3 days 06:00:00', '4 days 04:00:00'],dtype='timedelta64[ns]', freq=None)
    '''
    

4 日期偏差

4.1 Offset对象

  • 日期偏置:是一种和日历相关的特殊时间差

    • 【例子】如何求2020年9月第一个周一的日期,以及如何求2020年9月7日后的第30个工作日是哪一天。
    pd.Timestamp('20200831') + pd.offsets.WeekOfMonth(week=0,weekday=0)
    # Timestamp('2020-09-07 00:00:00')
    pd.Timestamp('20200907') + pd.offsets.BDay(30)
    # Timestamp('2020-10-19 00:00:00')
    
  • Offset对象:Offset对象在 pd.offsets中被定义。当使用 +时获取离其最近的下一个日期,当使用-时获取离其最近的上一个日期
    pd.Timestamp('20200831') - pd.offsets.WeekOfMonth(week=0,weekday=0)
    # Timestamp('2020-08-03 00:00:00')pd.Timestamp('20200907') - pd.offsets.BDay(30)
    # Timestamp('2020-07-27 00:00:00')pd.Timestamp('20200907') + pd.offsets.MonthEnd()
    # Timestamp('2020-09-30 00:00:00')
    
    • Offset 对象CDay:其中的 holidays, weekmask参数能够分别对自定义的日期和星期进行过滤,前者传入了需要过滤的日期列表,后者传入的是三个字母的星期缩写构成的星期字符串,其作用是只保留字符串中出现的星期
    my_filter = pd.offsets.CDay(n=1,weekmask='Wed Fri',holidays=['20200109'])
    dr = pd.date_range('20200108', '20200111')
    dr.to_series().dt.dayofweek
    '''
    2020-01-08    2
    2020-01-09    3
    2020-01-10    4
    2020-01-11    5
    Freq: D, dtype: int64
    '''
    [i + my_filter for i in dr]
    '''
    [Timestamp('2020-01-10 00:00:00'),Timestamp('2020-01-10 00:00:00'),Timestamp('2020-01-15 00:00:00'),Timestamp('2020-01-15 00:00:00')]
    '''
    

    分析:上面的例子中,n 表示增加一天CDaydr 中的第一天为 20200108,但由于下一天20200109被排除了,并且20200110是合法的周五,因此转为 20200110,其他后面的日期处理类似。

4.2 偏置字符串

  • 前面提到了关于 date_rangefreq取值可用Offset 对象,在 pandas 中几乎每一个Offset 对象绑定了日期偏置字符串( frequencies strings/offset aliases ),可以指定 Offset对应的字符串来替代使用

    pd.date_range('20200101','20200331', freq='MS') # 月初
    #  DatetimeIndex(['2020-01-01', '2020-02-01', '2020-03-01'], dtype='datetime64[ns]', freq='MS')
    pd.date_range('20200101','20200331', freq='M') # 月末
    # DatetimeIndex(['2020-01-31', '2020-02-29', '2020-03-31'], dtype='datetime64[ns]', freq='M')
    pd.date_range('20200101','20200110', freq='B') # 工作日
    '''
    DatetimeIndex(['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-06','2020-01-07', '2020-01-08', '2020-01-09', '2020-01-10'],dtype='datetime64[ns]', freq='B')
    '''
    
    • 上面的这些字符串,等价于使用如下的 Offset对象
     pd.date_range('20200101','20200331',freq=pd.offsets.MonthBegin())
    # DatetimeIndex(['2020-01-01', '2020-02-01', '2020-03-01'], dtype='datetime64[ns]', freq='MS')
    pd.date_range('20200101','20200331',freq=pd.offsets.MonthEnd())
    #  DatetimeIndex(['2020-01-31', '2020-02-29', '2020-03-31'], dtype='datetime64[ns]', freq='M')
    pd.date_range('20200101','20200110', freq=pd.offsets.BDay())
    '''
    DatetimeIndex(['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-06','2020-01-07', '2020-01-08', '2020-01-09', '2020-01-10'],dtype='datetime64[ns]', freq='B')
    '''
    

5 时序中的滑窗与分组

5.1 滑动窗口

  • 滑窗函数:所谓时序的滑窗函数,即把滑动窗口用 freq关键词代替
  • shift 函数:作用在 datetime64 为索引的序列上时,可以指定freq单位进行滑动
    s.shift(freq='50D').head()
    '''
    2020-02-20   -1
    2020-02-21   -2
    2020-02-22   -1
    2020-02-25   -1
    2020-02-26   -2
    dtype: int32
    '''
    

5.2 重采样

  • 重采样对象resample和第四章中分组对象 groupby的用法类似,前者是针对时间序列的分组计算而设计的分组对象

    • 【例子】对上面的序列计算每10天的均值
    s.resample('10D').mean().head()
    '''
    2020-01-01   -2.000000
    2020-01-11   -3.166667
    2020-01-21   -3.625000
    2020-01-31   -4.000000
    2020-02-10   -0.375000
    Freq: 10D, dtype: float64
    '''
    

6 练习

6.1 太阳辐射数据集

现有一份关于太阳辐射的数据集:

In [128]: df = pd.read_csv('data/solar.csv', usecols=['Data','Time',.....:                  'Radiation','Temperature']).....: In [129]: df.head(3)
Out[129]: Data      Time  Radiation  Temperature
0  9/29/2016 12:00:00 AM  23:55:26       1.21           48
1  9/29/2016 12:00:00 AM  23:50:23       1.21           48
2  9/29/2016 12:00:00 AM  23:45:26       1.23           48

1.将 Datetime, Time 合并为一个时间列 Datetime ,同时把它作为索引后排序。

  • 答案:

    df = pd.read_csv('data/solar.csv', usecols=['Data','Time','Radiation','Temperature'])
    solar_date = df.Data.str.extract('([/|\w]+\s).+')[0]
    df['Data'] = pd.to_datetime(solar_date + df.Time)
    df = df.drop(columns='Time').rename(columns={'Data':'Datetime'}).set_index('Datetime').sort_index()
    df.head(3)
    '''Radiation  Temperature
    Datetime
    2016-09-01 00:00:08       2.58           51
    2016-09-01 00:05:10       2.83           51
    2016-09-01 00:20:06       2.16           51
    '''
    

2.每条记录时间的间隔显然并不一致,请解决如下问题:
2.1找出间隔时间的前三个最大值所对应的三组时间戳。

  • 答案:

    s = df.index.to_series().reset_index(drop=True).diff().dt.total_seconds()
    max_3 = s.nlargest(3).index
    df.index[max_3.union(max_3-1)]
    '''
    DatetimeIndex(['2016-09-29 23:55:26', '2016-10-01 00:00:19','2016-11-29 19:05:02', '2016-12-01 00:00:02','2016-12-05 20:45:53', '2016-12-08 11:10:42'],dtype='datetime64[ns]', name='Datetime', freq=None)
    '''
    

2.2是否存在一个大致的范围,使得绝大多数的间隔时间都落在这个区间中?如果存在,请对此范围内的样本间隔秒数画出柱状图,设置 bins=50 。
参考答案
3.求如下指标对应的 Series :
3.1温度与辐射量的6小时滑动相关系数

  • 答案:

    res = df.Radiation.rolling('6H').corr(df.Temperature)
    res.tail(3)
    '''
    Datetime
    2016-12-31 23:45:04    0.328574
    2016-12-31 23:50:03    0.261883
    2016-12-31 23:55:01    0.262406
    dtype: float64
    '''
    

3.2以三点、九点、十五点、二十一点为分割,该观测所在时间区间的温度均值序列

  • 答案:

    res = df.Temperature.resample('6H', origin='03:00:00').mean()
    res.head(3)
    '''
    Datetime
    2016-08-31 21:00:00    51.218750
    2016-09-01 03:00:00    50.033333
    2016-09-01 09:00:00    59.379310
    Freq: 6H, Name: Temperature, dtype: float64
    '''
    

3.3每个观测6小时前的辐射量(一般而言不会恰好取到,此时取最近时间戳对应的辐射量

6.2 水果销量数据集

现有一份2019年每日水果销量记录表:

In [130]: df = pd.read_csv('data/fruit.csv')In [131]: df.head(3)
Out[131]: Date  Fruit  Sale
0  2019-04-18  Peach    15
1  2019-12-29  Peach    15
2  2019-06-05  Peach    19

1.统计如下指标:
1.1每月上半月(15号及之前)与下半月葡萄销量的比值
参考答案
1.2每月最后一天的生梨销量总和

  • 答案:

    df[df.Date.dt.is_month_end].query("Fruit == 'Pear'").groupby('Date').Sale.sum().head()
    '''
    Date
    2019-01-31    847
    2019-02-28    774
    2019-03-31    761
    2019-04-30    648
    2019-05-31    616
    Name: Sale, dtype: int64
    '''
    

1.3每月最后一天工作日的生梨销量总和

  • 答案:

    df[df.Date.isin(pd.date_range('20190101', '20191231',freq='BM'))].query("Fruit == 'Pear'").groupby('Date').Sale.mean().head()
    '''
    Date
    2019-01-31    60.500000
    2019-02-28    59.538462
    2019-03-29    56.666667
    2019-04-30    64.800000
    2019-05-31    61.600000
    Name: Sale, dtype: float64
    '''
    

1.4每月最后五天的苹果销量均值
参考答案
2.按月计算周一至周日各品种水果的平均记录条数,行索引外层为水果名称,内层为月份,列索引为星期。
参考答案
3.按天计算向前10个工作日窗口的苹果销量均值序列,非工作日的值用上一个工作日的结果填充。
参考答案

Pandas10--时序数据相关推荐

  1. LTSM 实现多元素时序数据植物健康预测

    作者 | 李秋键 出品 | AI科技大本营(ID:rgznai100) 引言: 近些年来,"预测"一词在各个领域被频繁提及,所谓预测,实际上就是根据历史规律,推测未来结果.在科学技 ...

  2. Pandas处理时序数据(初学者必会)!

    ↑↑↑关注后"星标"Datawhale每日干货 & 每月组队学习,不错过Datawhale干货 作者:耿远昊,Datawhale成员,华东师范大学 时序数据是指时间序列数据 ...

  3. 积微论坛报告视频+PPT:用微生物组时序数据重现生物膜装配动态过程

    点击阅读原文观看视频!后台回复"王金锋"获得视频和讲稿下载链接. 用微生物组时序数据重现生物膜装配动态过程 主讲人介绍 王金锋,博士.2011年入职中国科学院北京生命科学研究院工作 ...

  4. pandas基于时序数据计算模型预测推理需要的统计数据(累计时间、长度变化、变化率、方差、均值、最大、最小等):范围内的统计量、变化率、获得数据集最后的几条数据的统计量、变化率、获得范围内的统计量

    pandas基于时序数据计算模型预测推理需要的统计数据(累计时间.长度变化.变化率.方差.均值.最大.最小等):范围内的统计量.变化率.获得数据集最后的几条数据的统计量.变化率.获得范围内的统计量 目 ...

  5. R语言window函数提取时序数据数据子集(subset):使用xts包将dataframe数据转化为时间序列数据(time series)、使用window函数从时间序列对象中提取数据子集

    R语言window函数提取时序数据数据子集(subset):使用xts包将dataframe数据转化为时间序列数据(time series).使用window函数从时间序列对象中提取数据子集 目录

  6. pandas基于时序数据计算模型预测推理需要的统计数据(累计时间、长度变化、变化率、方差、均值、最大、最小等):数据持续的时间(分钟)、获得某一节点之后的数据总变化量、获得范围内的统计量

    pandas基于时序数据计算模型预测推理需要的统计数据(累计时间.长度变化.变化率.方差.均值.最大.最小等):数据持续的时间(分钟).获得某一节点之后的数据总变化量.获得范围内的统计量 目录

  7. python使用pandas通过聚合获取时序数据的最后一个指标数据(例如长度指标、时间指标)生成标签并与原表连接(join)进行不同标签特征的可视化分析

    python使用pandas通过聚合获取时序数据的最后一个指标数据(例如长度指标.时间指标)生成标签并与原表连接(join)进行不同标签特征的可视化分析 目录

  8. 手把手教你用Python玩转时序数据,从采样、预测到聚类

    本文经AI新媒体量子位(公众号 ID: QbitAI)授权转载,转载请联系出处 本文约1800字,建议阅读5分钟 如果你有朝一日碰到了时序数据,该怎么用Python搞定它呢? 时序数据,也就是时间序列 ...

  9. 数据蒋堂 | 时序数据从分表到分库

    作者:蒋步星 来源:数据蒋堂 本文共5500字,建议阅读10+分钟. 一个物理表的数据量太大时,就会影响查询和计算的性能. 这里的时序数据泛指一切随时间推移而不断增长的数据,比如通话记录.银行交易记录 ...

  10. 时序数据采样、原始循环神经网络RNN、RNN梯度爆炸原因推导

    时序数据的采样 随机采样 每个样本是原始序列上任意截取的一段序列.相邻的两个随机小批量在原始序列上的位置不一定相毗邻.因此,我们无法用一个小批量最终时间步的隐藏状态来初始化下一个小批量的隐藏状态.在训 ...

最新文章

  1. mysql创建库几种方法_MySQL创建数据库的两种方法
  2. ICRA 2021 | π-LSAM:基于平面优化的激光雷达平滑与建图算法
  3. java中map怎么遍历,Java中怎么遍历Map的所有的元素
  4. CodeGlance
  5. SPOJ 4110 Fast Maximum Flow (最大流模板)
  6. linux内核内存分配(三、虚拟内存管理)
  7. CentOS7安装Jenkins Master
  8. mysql关联查询去重_mysql | 去重查询
  9. 一 集成电路与IP核技术
  10. 几个代码画出漂亮的词云图,python最简单的词云图教程(建议收藏)
  11. 多机器人系统实验室汇总
  12. VS无法定位程序输入点于动态链接库
  13. operands could not be broadcast together with shapes
  14. 读书随笔(6)密码恢复
  15. iPhones刷机怎么备份微信记录 iPhone手机微信记录怎么备份
  16. 【python实战】不让我复制?看我自制个带文字识别的截屏工具
  17. win10家庭版调出组策略(gpedit.msc)要求的函数不受支持
  18. 技术人员近业务,会困死在一条船上吗?
  19. 八字易经算法之用JAVA实现日子吉凶星
  20. 2017年计算机考研408操作系统真题(客观题)

热门文章

  1. 超越微支付:纳米服务的崛起
  2. 9008刷机 小米max2_小米手机9008短接图,可进行深度刷机解锁操作!―远程580快修...
  3. 【分圆多项式及理想、理想格】
  4. 微信跳一跳 可以直接更改分数,跳一跳POST改分数攻略
  5. DJI Terra+EasyEarth让数据获取与应用无缝衔接
  6. 多表查询,字段名重复问题解决
  7. Pepper中级教程:第二章 如何将Python程序部署到机器人内部运行
  8. mysql ecos_ecos代码分析(4)
  9. [学习笔记] Pell方程
  10. 递归:Pell数列C++实现