Pandas时间序列

import time
time.time()
1542903985.5287802

time.localtime(1542903985)#将时间戳转化为时间对象
time.struct_time(tm_year=2018, tm_mon=11, tm_mday=23, tm_hour=0, tm_min=26, tm_sec=25, tm_wday=4, tm_yday=327, tm_isdst=0)

time.strftime(’%Y-%m-%d %H:%M:%S’,time.localtime(1542903985))将时间对象转化为本地时间
‘2018-11-23 00:26:25’

from datetime import datetime
now = datetime.now() #现在时间
now
datetime.datetime(2018, 11, 23, 0, 28, 58, 498163)

now.year,now.month
(2018, 11)

now.strftime(’%Y-%m-%d %H:%M:%S’) #转化为本地时间
‘2018-11-23 00:28:58’

datetime.strptime(‘2018-11-23 00:28:58’,’%Y-%m-%d %H:%M:%S’) #将本地时间转化为时间对象
datetime.datetime(2018, 11, 23, 0, 28, 58)

now.timestamp() #将时间对象转化为时间戳
1542904138.498163

datetime.fromtimestamp(1542903985) #将时间戳转化为时间对象
datetime.datetime(2018, 11, 23, 0, 26, 25)

delta = datetime.now() - datetime(2018,5,31) #时间间隔计算
delta
datetime.timedelta(176, 2031, 242704)

delta.days
176

delta.seconds
2031

delta.microseconds
242704

#pandas时间使用
import pandas as pd
import numpy as np
pd.date_range(‘2018-05-01’,‘2018-05-10’)
DatetimeIndex([‘2018-05-01’, ‘2018-05-02’, ‘2018-05-03’, ‘2018-05-04’,
‘2018-05-05’, ‘2018-05-06’, ‘2018-05-07’, ‘2018-05-08’,
‘2018-05-09’, ‘2018-05-10’],
dtype=‘datetime64[ns]’, freq=‘D’)

pd.date_range(‘2018-05-01’,‘2018-10-10’,freq=‘W’) #'W’按周间隔
DatetimeIndex([‘2018-05-06’, ‘2018-05-13’, ‘2018-05-20’, ‘2018-05-27’,
‘2018-06-03’, ‘2018-06-10’, ‘2018-06-17’, ‘2018-06-24’,
‘2018-07-01’, ‘2018-07-08’, ‘2018-07-15’, ‘2018-07-22’,
‘2018-07-29’, ‘2018-08-05’, ‘2018-08-12’, ‘2018-08-19’,
‘2018-08-26’, ‘2018-09-02’, ‘2018-09-09’, ‘2018-09-16’,
‘2018-09-23’, ‘2018-09-30’, ‘2018-10-07’],
dtype=‘datetime64[ns]’, freq=‘W-SUN’)

pd.date_range(‘2018-05-01’,‘2018-10-10’,freq=‘m’) #'M’按月间隔
DatetimeIndex([‘2018-05-31’, ‘2018-06-30’, ‘2018-07-31’, ‘2018-08-31’,
‘2018-09-30’],
dtype=‘datetime64[ns]’, freq=‘M’)

pd.date_range(‘2018-05-01’,‘2018-10-10’,freq=‘m’)
DatetimeIndex([‘2018-05-31’, ‘2018-06-30’, ‘2018-07-31’, ‘2018-08-31’,
‘2018-09-30’],
dtype=‘datetime64[ns]’, freq=‘M’)

pd.date_range(‘2018-05-01’,‘2018-10-10’,freq=‘Q’) #'Q’按季度间隔
DatetimeIndex([‘2018-06-30’, ‘2018-09-30’], dtype=‘datetime64[ns]’, freq=‘Q-DEC’)

pd.date_range(‘2018-05-01’,‘2018-05-10’,freq=‘H’) #'H’按小时间隔
DatetimeIndex([‘2018-05-01 00:00:00’, ‘2018-05-01 01:00:00’,
‘2018-05-01 02:00:00’, ‘2018-05-01 03:00:00’,
‘2018-05-01 04:00:00’, ‘2018-05-01 05:00:00’,
‘2018-05-01 06:00:00’, ‘2018-05-01 07:00:00’,
‘2018-05-01 08:00:00’, ‘2018-05-01 09:00:00’,

‘2018-05-09 15:00:00’, ‘2018-05-09 16:00:00’,
‘2018-05-09 17:00:00’, ‘2018-05-09 18:00:00’,
‘2018-05-09 19:00:00’, ‘2018-05-09 20:00:00’,
‘2018-05-09 21:00:00’, ‘2018-05-09 22:00:00’,
‘2018-05-09 23:00:00’, ‘2018-05-10 00:00:00’],
dtype=‘datetime64[ns]’, length=217, freq=‘H’)

pd.date_range(‘2018-05-01’,‘2018-10-10’,freq=‘T’) #'T’按分钟间隔
DatetimeIndex([‘2018-05-01 00:00:00’, ‘2018-05-01 00:01:00’,
‘2018-05-01 00:02:00’, ‘2018-05-01 00:03:00’,
‘2018-05-01 00:04:00’, ‘2018-05-01 00:05:00’,
‘2018-05-01 00:06:00’, ‘2018-05-01 00:07:00’,
‘2018-05-01 00:08:00’, ‘2018-05-01 00:09:00’,

‘2018-10-09 23:51:00’, ‘2018-10-09 23:52:00’,
‘2018-10-09 23:53:00’, ‘2018-10-09 23:54:00’,
‘2018-10-09 23:55:00’, ‘2018-10-09 23:56:00’,
‘2018-10-09 23:57:00’, ‘2018-10-09 23:58:00’,
‘2018-10-09 23:59:00’, ‘2018-10-10 00:00:00’],
dtype=‘datetime64[ns]’, length=233281, freq=‘T’)

pd.date_range(‘2018-05-01’,‘2018-10-10’,freq=‘S’) #'S’按秒间隔,'A’按年间隔
DatetimeIndex([‘2018-05-01 00:00:00’, ‘2018-05-01 00:00:01’,
‘2018-05-01 00:00:02’, ‘2018-05-01 00:00:03’,
‘2018-05-01 00:00:04’, ‘2018-05-01 00:00:05’,
‘2018-05-01 00:00:06’, ‘2018-05-01 00:00:07’,
‘2018-05-01 00:00:08’, ‘2018-05-01 00:00:09’,

‘2018-10-09 23:59:51’, ‘2018-10-09 23:59:52’,
‘2018-10-09 23:59:53’, ‘2018-10-09 23:59:54’,
‘2018-10-09 23:59:55’, ‘2018-10-09 23:59:56’,
‘2018-10-09 23:59:57’, ‘2018-10-09 23:59:58’,
‘2018-10-09 23:59:59’, ‘2018-10-10 00:00:00’],
dtype=‘datetime64[ns]’, length=13996801, freq=‘S’)

pd.date_range(‘2018-05-01’,freq=‘Q’,periods=10) #返回10个周期
DatetimeIndex([‘2018-06-30’, ‘2018-09-30’, ‘2018-12-31’, ‘2019-03-31’,
‘2019-06-30’, ‘2019-09-30’, ‘2019-12-31’, ‘2020-03-31’,
‘2020-06-30’, ‘2020-09-30’],
dtype=‘datetime64[ns]’, freq=‘Q-DEC’)

#列子
data = {‘time’:pd.date_range(‘2018-06-01’,freq=‘T’,periods=2000),‘cpu’:np.random.randn(2000)+10}
df = pd.DataFrame(data,columns=[‘time’,‘cpu’]
df.head()
time cpu
0 2018-06-01 00:00:00 9.934713
1 2018-06-01 00:01:00 8.483242
2 2018-06-01 00:02:00 9.779638
3 2018-06-01 00:03:00 10.075806
4 2018-06-01 00:04:00 9.758604

df.tail()
time cpu
1995 2018-06-02 09:15:00 9.913204
1996 2018-06-02 09:16:00 8.619322
1997 2018-06-02 09:17:00 6.929025
1998 2018-06-02 09:18:00 10.653212
1999 2018-06-02 09:19:00 9.643210

df[(df.time>=‘2018-06-01 08:00:00’) &(df.time<=‘2018-06-01 08:10:00’)]
time cpu
480 2018-06-01 08:00:00 10.593857
481 2018-06-01 08:01:00 9.827494
482 2018-06-01 08:02:00 9.269637
483 2018-06-01 08:03:00 9.335040
484 2018-06-01 08:04:00 9.535949
485 2018-06-01 08:05:00 11.036624
486 2018-06-01 08:06:00 10.431027
487 2018-06-01 08:07:00 10.427869
488 2018-06-01 08:08:00 9.983867
489 2018-06-01 08:09:00 9.520988
490 2018-06-01 08:10:00 8.365431

df2 = df.set_index(‘time’)
df2.head()
cpu
time
2018-06-01 00:00:00 9.934713
2018-06-01 00:01:00 8.483242
2018-06-01 00:02:00 9.779638
2018-06-01 00:03:00 10.075806
2018-06-01 00:04:00 9.758604

df2.head()
cpu
time
2018-06-01 00:00:00 9.934713
2018-06-01 00:01:00 8.483242
2018-06-01 00:02:00 9.779638
2018-06-01 00:03:00 10.075806
2018-06-01 00:04:00 9.758604

df3 = df2.groupby(df2.index.date).mean()
df3.head()
cpu
2018-06-01 10.010145
2018-06-02 10.005693

df3 = df2.groupby(df2.index.hour).mean()
df3.head()
cpu
time
0 10.086535
1 10.027292
2 10.228831
3 9.876972
4 10.066018

df3 = df2.resample(‘90S’).mean() #重新设置为90秒采样并求平均值
df3.head()
cpu
time
2018-06-01 00:00:00 9.208977
2018-06-01 00:01:30 9.779638
2018-06-01 00:03:00 9.917205
2018-06-01 00:04:30 9.523389
2018-06-01 00:06:00 10.422354

df3 = df2.resample(‘5T’).max() #重新设置为5分钟采样并取最大值
df3.head()
cpu
time
2018-06-01 00:00:00 10.075806
2018-06-01 00:05:00 10.443131
2018-06-01 00:10:00 11.154261
2018-06-01 00:15:00 12.466177
2018-06-01 00:20:00 11.038486

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值