前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >时间序列

时间序列

作者头像
见贤思齊
发布2020-08-05 15:50:07
2K0
发布2020-08-05 15:50:07
举报
文章被收录于专栏:初见Linux初见Linux

一、获取当前时刻的时间

1.返回当前时刻的日期和时间
代码语言:javascript
复制
from datetime import datetime

#返回当前时刻的日期和时间
datetime.now()
    #datetime.datetime(2020, 5, 16, 14, 13, 37, 179143),日期、时间一起显示
    #                   年   月  日  时  分   秒  微妙  可通过属性取出来每个部分
2.返回当前时刻的年、月、日
代码语言:javascript
复制
#返回当前时刻的年
datetime.now().year
    #2020
    
#返回当前时刻的月
datetime.now().month
    #5

#返回当前时刻的日
datetime.now().day
    #16
3.返回当前时刻的周数

与当前时刻的周相关的数据有两个,一个是当前时刻是一周中的周几;一个是返回当前时刻所在的周在全年的周里面是第几周

(1)返回周几 weekday()
代码语言:javascript
复制
weekday():
    '''
        功能: 当前时刻是一周中的**周几**。
        参数:
        返回值: 数字(表示周几)
    '''
 注意:Python中周几是从0开始数的(例:周日返回6,所以得在后面+1)   
代码语言:javascript
复制
from datetime import datetime

datetime.now().weekday()+1 
(2)返回周数
代码语言:javascript
复制
isocalendar():
    '''
        功能: 前时刻所在的周在**全年的周里面是第几周**。
        参数:
        返回值: 元组(年,第几周,日)
    '''
 注意:返回的是一个元组,含年、第几周、日,所以取第几周时加上索引值[1]     
代码语言:javascript
复制
from datetime import datetime

datetime.now().isocalendar()[1]

二、指定日期和时间的格式

使用 now() 函数日期和时间都会显示出来,但有时我们想单独看日期,单独看时间,或者自定义日期和时间显示格式,这时就需要用到 day()、time()、strftime() 函数。

1.date() 将日期和时间设置成只显示日期
代码语言:javascript
复制
from datetime import datetime

datetime.now().date()
2.time() 将日期和时间设置成只显示时间
代码语言:javascript
复制
from datetime import datetime

datetime.now().time()
3.strftime() 自定义日期和时间的格式
代码语言:javascript
复制
datetime.now().strftime("%Y-%m-%d")

datetime.now().strftime("Y-%m-%d %H:%M:%S")
4.自己手动写入
代码语言:javascript
复制
from datetime import datetime

datetime(2020,5,19,9,46)  #自己手动指定了年、月、日、时、分

三、字符串、时间格式相互转换

1.将时间格式转换为字符串格式 str()
代码语言:javascript
复制
now = datetime.now()
str(now)
type( str(now) )
2.将字符串格式转换为时间格式 parse()
代码语言:javascript
复制
str_name = "2020-5-16"

from dateutil.parser import parse  #得导入一个包

parse(str_name)
type( parse(str_name) )

四、时间索引

时间索引就是根据时间对时间格式的字段进行数据选取的一种索引方式。 Python中可以选取具体的某一时间对应的值,也可以选某一段时间内的值。 新建一个时间索引的 DataFrame,如下:

代码语言:javascript
复制
import pandas as pd
import numpy as np

#单独创建时间行索引
index = pd.DatetimeIndex(['2020-5-19','2020-5-20','2020-5-21','2020-5-22'])

#创建一个以时间为行索引,数据从1到4的 DataFrame 表格型数据。
data = pd.DataFrame(np.arange(1,5),columns=["数字"],index=index)
    #ValueError: Shape of passed values is (1, 10), indices imply (1, 4) 注意索引个数和数据相同
    
#查看整个数据
data

#获取2020年数据
data['2020']

#获取2020年5月的数据
data['2020-5']

#获取2020年5月19日到2020年5月21日的数据
data['2020-5-19':'2020-5-21']

#获取2020年5月20日的数据
data['2020-5-20':'2020-5-20']

上述的索引方法适用于索引是时间的情况下,但是并不是所有情况下时间都可以做索引,比如订单表中订单号是索引,成交时间只是一个普通列,这时想选取某一段时间内的成交订单怎么办? 因为时间也是有大小关系的,所以可通过索引方式中的布尔索引来对非索引列的时间进行选取

代码语言:javascript
复制
import pandas as pd
from datetime import datetime

df = pd.DataFrame({"客户姓名":["初见","思齐","小淘","齐齐"],"唯一标识码":[99,100,101,102],"年龄":[18,19,20,21],"成交时间":['2020-5-19','2020-5-20','2020-5-21','2020-5-22']},index=["A1","A2","A3","A4"])

#选取成交时间为2020-5-20的订单
df[df["成交时间"] == datetime(2020,5,20) ]  

#选取成交时间为2020-5-20以后的订单
df[df["成交时间"] > datetime(2020,5,20) ]

#选取成交时间为2020-5-20以前的订单
df[df["成交时间"] < datetime(2020,5,20) ]

#选取成交时间为2020-5-20到2020-5-22之间的订单
df[(df["成交时间"] > datetime(2020,5,20)) & (df["成交时间"] < datetime(2020,5,22)) ]

#具体形式如此,这个的成交时间是对象不好使

五、时间运算

1.两个时间之差

经常会用到计算两个时间的差,比如一个用户在某一平台上的生命周期(即用最后一次登录时间 - 首次登陆时间) Python中两个时间做差会返回一个 timedelta 对象,该对象包含天数、秒、微秒三个等级,若是要获取小时、分钟,则需要进行换算。

代码语言:javascript
复制
import datetime import datetime

cha = datetime(2020,5,19,9,46) - datetime(2020,5,18,7,0) #手动输入了年月日时分
    #返回 datetime.timedelta(days=1, seconds=9960) 无论是差了几年等,都只会返回天数、秒、微秒这三     个等级,这块微妙我没具体指明,所以没有。

#因为timedelta 对象包含天数、秒、微秒这三个等级,所以可通过属性获取出来
cha.days      #获取天数的时间差
    #1
    
cha.seconds  #获取秒的时间差
    #9960
    
cha.seconds/3600   #将秒换算成小时的时间差
    #2.7666666666666666
2.时间偏移

时间偏移指给时间往前推或往后推一段时间(即加减一段时间)。 Python中实现时间偏移的方式有两种: 第一种借助 timedelta(该对象包含天数、秒、微秒三个等级,所以只能偏移天数、秒、微秒单位的时间) 第二种是用Pandas中的日期偏移量(date offset

(1)timedelta

timedelta只支持 天、秒、微妙 单位的时间运算,若是其他单位的时间运算,则需要换算成天、秒、微妙三种单位的一种方可进行偏移。

代码语言:javascript
复制
from datetime import timedelta

date = datetime(2020, 5, 19, 10, 42)

#往后推一天
date + timedelta(days = 1)

#往后推10秒
date + timedelta(seconds = 10)
(2)date offset

date offset 可直接实现天、小时、分钟单位的时间偏移,不需要换算,相比timedelta更方便。

代码语言:javascript
复制
from pandas.tseries.offsets import Day,Hour,Minute
'''
    功能:时间偏移
    返回值:时间戳
'''
代码语言:javascript
复制
date = datetime(2020, 5, 19, 10, 42)

#往后推一天
date + Day(1)
    #Timestamp('2020-05-21 10:42:00'),返回的是时间戳
    
#往后推一小时
date + Hour(1)
    #Timestamp('2020-05-20 11:42:00')
    
#往后推10分钟
date + Minute(10)
    #Timestamp('2020-05-20 10:52:00')
    
#往前推就是减
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、获取当前时刻的时间
    • 1.返回当前时刻的日期和时间
      • 2.返回当前时刻的年、月、日
        • 3.返回当前时刻的周数
        • 二、指定日期和时间的格式
          • 1.date() 将日期和时间设置成只显示日期
            • 2.time() 将日期和时间设置成只显示时间
              • 3.strftime() 自定义日期和时间的格式
                • 4.自己手动写入
                • 三、字符串、时间格式相互转换
                  • 1.将时间格式转换为字符串格式 str()
                    • 2.将字符串格式转换为时间格式 parse()
                    • 四、时间索引
                    • 五、时间运算
                      • 1.两个时间之差
                        • 2.时间偏移
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档