Python数据分析学习笔记-pandas库学习8

时间处理

time

当前时间显示

import time
a=time.time()  #当前时间戳,浮点数
b=time.localtime(int(a))
c=time.strftime('%Y-%m-%d %H:%M:%S',b)
print(a,'\n',b,'\n',c)

1641284471.598204
time.struct_time(tm_year=2022, tm_mon=1, tm_mday=4, tm_hour=16, tm_min=21, tm_sec=11, tm_wday=1, tm_yday=4, tm_isdst=0)
2022-01-04 16:21:11

时间的格式定义

d=time.strptime('2021-11-23 23:22','%Y-%m-%d %H:%M')
dtime=time.mktime(d)  #转换为时间戳
print(d,'\n',dtime)

time.struct_time(tm_year=2021, tm_mon=11, tm_mday=23, tm_hour=23, tm_min=22, tm_sec=0, tm_wday=1, tm_yday=327, tm_isdst=-1)
1637680920.0

datetime

当前时间

from datetime import datetime
now = datetime.now()
print(now.year,now.month,now.day,now.hour,now.minute,'\n',now.strftime('%Y-%m-%d %H:%M:%S'),'\n',now.timestamp())

2022 1 4 17 1
2022-01-04 17:01:08
1641286868.439845

时间格式定义

e=datetime.strptime('2022/01/01 12:22:11','%Y/%m/%d %H:%M:%S')
print(e)

2022-01-01 12:22:11

时间戳转换

f=datetime.fromtimestamp(1641368524)
print(f)

2022-01-05 15:42:04

时间差

delta = datetime.now()-datetime(2021,12,23,3)  #自定义时间
print(delta,'\n',delta.days,'\n',delta.seconds,'\n',delta.microseconds)

13 days, 12:50:39.891292
13
46239
891292

pandas时间序列

初始化时间序列

根据起始时间初始化

timeidex=pd.date_range('2020-08-02','2022-01-03')
print(timeidex)

DatetimeIndex([‘2020-08-02’, ‘2020-08-03’, ‘2020-08-04’, ‘2020-08-05’,
‘2020-08-06’, ‘2020-08-07’, ‘2020-08-08’, ‘2020-08-09’,
‘2020-08-10’, ‘2020-08-11’,

‘2021-12-25’, ‘2021-12-26’, ‘2021-12-27’, ‘2021-12-28’,
‘2021-12-29’, ‘2021-12-30’, ‘2021-12-31’, ‘2022-01-01’,
‘2022-01-02’, ‘2022-01-03’],
dtype=‘datetime64[ns]’, length=520, freq=‘D’)

*频率D代表日,频率W为周,M为月,Q为季,H为小时,T为分,S为秒

timeidex=pd.date_range('2020-08-02','2022-01-03',freq='w')
print(timeidex)

DatetimeIndex([‘2020-08-02’, ‘2020-08-09’, ‘2020-08-16’, ‘2020-08-23’,
‘2020-08-30’, ‘2020-09-06’, ‘2020-09-13’, ‘2020-09-20’,
‘2020-09-27’, ‘2020-10-04’, ‘2020-10-11’, ‘2020-10-18’,
‘2020-10-25’, ‘2020-11-01’, ‘2020-11-08’, ‘2020-11-15’,
‘2020-11-22’, ‘2020-11-29’, ‘2020-12-06’, ‘2020-12-13’,
‘2020-12-20’, ‘2020-12-27’, ‘2021-01-03’, ‘2021-01-10’,
‘2021-01-17’, ‘2021-01-24’, ‘2021-01-31’, ‘2021-02-07’,
‘2021-02-14’, ‘2021-02-21’, ‘2021-02-28’, ‘2021-03-07’,
‘2021-03-14’, ‘2021-03-21’, ‘2021-03-28’, ‘2021-04-04’,
‘2021-04-11’, ‘2021-04-18’, ‘2021-04-25’, ‘2021-05-02’,
‘2021-05-09’, ‘2021-05-16’, ‘2021-05-23’, ‘2021-05-30’,
‘2021-06-06’, ‘2021-06-13’, ‘2021-06-20’, ‘2021-06-27’,
‘2021-07-04’, ‘2021-07-11’, ‘2021-07-18’, ‘2021-07-25’,
‘2021-08-01’, ‘2021-08-08’, ‘2021-08-15’, ‘2021-08-22’,
‘2021-08-29’, ‘2021-09-05’, ‘2021-09-12’, ‘2021-09-19’,
‘2021-09-26’, ‘2021-10-03’, ‘2021-10-10’, ‘2021-10-17’,
‘2021-10-24’, ‘2021-10-31’, ‘2021-11-07’, ‘2021-11-14’,
‘2021-11-21’, ‘2021-11-28’, ‘2021-12-05’, ‘2021-12-12’,
‘2021-12-19’, ‘2021-12-26’, ‘2022-01-02’],
dtype=‘datetime64[ns]’, freq=‘W-SUN’)

从一个日期开始生成往后10个季度的序列

timeidex=pd.date_range('2020-8-2',freq='W',periods=10)
print(timeidex)

DatetimeIndex([‘2020-08-02’, ‘2020-08-09’, ‘2020-08-16’, ‘2020-08-23’,
‘2020-08-30’, ‘2020-09-06’, ‘2020-09-13’, ‘2020-09-20’,
‘2020-09-27’, ‘2020-10-04’],
dtype=‘datetime64[ns]’, freq=‘W-SUN’)

应用练习

#生成一个时间与cpu的关联表
data={'time':pd.date_range('2021-10-22',periods=20000,freq='T'),
      'cpu':np.random.randn(20000)+10   #random生成的随机数平均值为0,方差小于1
      }
ddf = pd.DataFrame(data)  
#时间序列生成时间索引
i=pd.to_datetime(ddf.time)
ddf.index=i
ddf = ddf.drop('time',axis=1) 

这里是引用

通过索引筛选一段时间内的数据

print(ddf['2021-11-01 8:00:00':'2021-11-01 8:10:00'])

这里是引用

通过索引查看某一天的数据

print(ddf.loc['2021-11-02'])  #不需要带时分秒,新版本必须用.loc方法

这里是引用

根据索引分组统计

print(ddf.groupby(ddf.index.date).mean())   #每天的平均值
print(ddf.groupby(ddf.index.hour).mean())   #所有日期,每小时的平均值

这里是引用
在这里插入图片描述
在这里插入图片描述

为了查看1个小时内cpu占用情况,将1分钟采样数据,改造成5分钟一次时间作为索引,求5分钟的平均值

print(ddf.resample('5T').mean())

这里是引用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值