机器学习和数据分析-pandas的时间序列

1.datetime
2.date_range
3.set_index
4.resample

1.启动jupyter notebook
2.创建一个新的notebook
在这里插入图片描述

一 : time

1.导入time 模块: import time
2.输出一个时间戳,为1970年到当前时间所经历的秒数: time.time()
在这里插入图片描述
3.将时间戳转化为可阅读形式:time.localtime(1587391523)
在这里插入图片描述
4.转化为固定格式字符串:

time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(1587391523))

在这里插入图片描述
5.字符串转化为结构化的日期

local = time.strptime('2020-04-20 10:13','%Y-%m-%d %H:%M')
local

在这里插入图片描述
6.转化为时间戳

time.mktime(local)

在这里插入图片描述

二 : datetime

1.导入datetime模块: from datetime import datetime
在这里插入图片描述
2.获取当前时间: now = datetime.now()
在这里插入图片描述
3.分别取出年月日: now.year , now.month , now.day
在这里插入图片描述
4.日期格式对象转化为固定字符串格式: now.strftime("%Y-%m-%d %H:%M:%S")
在这里插入图片描述
5.字符转转化为固定格式对象: datetime.strptime(‘2020-04-20 22:18’,’%Y-%m-%d %H:%M’)
在这里插入图片描述
6.自己构建一个日期格式对象:datetime(2020,4,20)
在这里插入图片描述
7.时间戳转化为一个时间格式对象:datetime.fromtimestamp(1587348780)
在这里插入图片描述
8.日期时间对象,转化为一个时间戳: now.timestamp()
在这里插入图片描述

三 : timedelta(时间间隔)

1.获取两个时间的时间间隔对象: delta =datetime.now() - datetime(2018,5,31)
在这里插入图片描述
2.获取两个时间相隔的天数: delta.days
在这里插入图片描述
3.获取两个时间相隔的秒数和毫秒数

#秒数
delta.seconds
#毫秒数
delta.microseconds

在这里插入图片描述

四 : date_range()

1.导入pandas

import pandas as pd

2.pd.date_range(‘2020-05-01’,‘2020-05-10’),得到10个日期值,默认采用频率是以天为单位,freq=‘D’
在这里插入图片描述
3.以周为单位采取时间:pd.date_range(‘2020-05-01’,‘2020-08-1’,freq=‘w’)
在这里插入图片描述
4.以月为单位采取时间:pd.date_range(‘2020-05-01’,‘2020-08-01’,freq=‘M’)
在这里插入图片描述
5.以季度为单位采取时间,pd.date_range(‘2020-05-01’,‘2020-10-01’,freq=‘Q’)
在这里插入图片描述
freq = 'H’表示小时,freq = 'T’表示分,freq = 'S’表示秒,freq = 'A’表示年
6.以季度为周期,返回10个日期:pd.date_range(‘2020-05-01’,freq=‘Q’,periods=10)
在这里插入图片描述

五 : set_index()

1.构建一个数据,每分钟采集cpu的使用率,采集200000次

#1.导入numpy
import numpy as np
#2.创建一个df
data = {
    'time':pd.date_range('2019-01-01',periods=200000,freq='T'),
    'cpu':np.random.randn(200000)+10
}
df = pd.DataFrame(data,columns=['time','cpu'])

在这里插入图片描述
2.获取前5条数据:df.head()
在这里插入图片描述
3.获取最后5条数据,df.tail()
在这里插入图片描述
4.取出某一个时间段的CPU占比,比如:df[(df.time>‘2019-01-01 06:00:00’) & (df.time<‘2019-01-01 06:10:00’) ]
在这里插入图片描述
5.将time设置成索引:

df2 = df.set_index('time')       
df2.head()

在这里插入图片描述
6.设置时间序列还可以用: s = pd.to_datetime(df.time)
在这里插入图片描述
将s设置成df的时间序列

df.index=s 
df.head()

在这里插入图片描述
删除原来的time那列

df = df.drop('time',axis=1)  
df.head()

在这里插入图片描述
7.有了时间序列,直接通过切片的方式取出某段时间CPU的使用率:df[‘2019-01-01 06:00:00’:‘2019-01-01 06:05:00’]
在这里插入图片描述
如果值给了一个起始日期,会取出当天所有数据.

df2 = df['2019-01-01']
df2.head()
df2.tail()

在这里插入图片描述
在这里插入图片描述
8.对索引以天进行分组,求出每天的平均值

df2 = df.groupby(df.index.date).mean()
print(df2.head())
print(df2.tail())

在这里插入图片描述
9.对索引以小时进行分组,求平均值

df2 = df.groupby(df.index.hour).mean()
print(df2.head())
print(df2.tail())

在这里插入图片描述
10.对索引以周进行分组,求平均值

df2 = df.groupby(df.index.week).mean()
print(df2.head())
print(df2.tail())

在这里插入图片描述

六 : resample()重新取样

1.开始以每分钟进行采用,现在改成每一分半钟进行采样:df2 = df.resample(‘90S’).mean()
在这里插入图片描述
2.五分钟进行一次采样,将求平均值改成求最大值:df2 = df.resample(‘5T’).max()
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值