python数据分析时间序列如何提取一个月的数据

Python011

python数据分析时间序列如何提取一个月的数据,第1张

python做数据分析时下面就是提取一个月数据的教程1. datetime库

1.1 ​​datetime.date​​

1) ​​datetime.date.today()​​ 返回今日,输出的类型为date类

import datetime

today = datetime.date.today()

print(today)

print(type(today))

–>输出的结果为:

2020-03-04

<class 'datetime.date'>

将输出的结果转化为常见数据类型(字符串)

print(str(today))

print(type(str(today)))

date = str(today).split('-')

year,month,day = date[0],date[1],date[2]

print('今日的年份是{}年,月份是{}月,日子是{}号'.format(year,month,day))

–>输出的结果为:(转化为字符串之后就可以直接进行操作)

2020-03-04

<class 'str'>

今日的年份是2020年,月份是03月,日子是04号

2) ​​datetime.date(年,月,日)​​,获取当前的日期

date = datetime.date(2020,2,29)

print(date)

print(type(date))

–>输出的结果为:

2020-02-29

<class 'datetime.date'>

1.2 ​​datetime.datetime​​

1) ​​datetime.datetime.now()​​输出当前时间,datetime类

now = datetime.datetime.now()

print(now)

print(type(now))

–>输出的结果为:(注意秒后面有个不确定尾数)

2020-03-04 09:02:28.280783

<class 'datetime.datetime'>

可通过​​str()​​转化为字符串(和上面类似)

print(str(now))

print(type(str(now)))

–>输出的结果为:(这里也可以跟上面的处理类似分别获得相应的数据,但是也可以使用下面更直接的方法来获取)

2020-03-04 09:04:32.271075

<class 'str'>

2) 通过自带的方法获取年月日,时分秒(这里返回的是​​int​​整型数据,注意区别)

now = datetime.datetime.now()

print(now.year,type(now.year))

print(now.month,type(now.month))

print(now.day,type(now.day))

print(now.hour,type(now.hour))

print(now.minute,type(now.minute))

print(now.second,type(now.second))

print(now.date(),type(now.date()))

print(now.date().year,type(now.date().year))

–>输出的结果为:(首先注意输出中倒数第二个还是上面的​​datetime.date​​​对象,这里是用来做时间对比的,同时除了这里的​​datetime.datetime​​​有这种方法,​​datetime.date​​​对象也有。因为此方法获取​​second​​是取的整型数据,自然最后的不确定尾数就被取整处理掉了)

2020 <class 'int'>

3 <class 'int'>

4 <class 'int'>

9 <class 'int'>

12 <class 'int'>

55 <class 'int'>

2020-03-04 <class 'datetime.date'>

2020 <class 'int'>

这里我们要用到的是python的内置模块,time模块。

顾名思义,这是一个和时间有关的模块。

导入time模块。

import time

第一步要做的就是从1970纪元后到目前为止度过的秒数(浮点类型)。

其实想要获得这个秒数,只有一个方法,就是通过time模块内的time方法来获得。

即time.time()

但是,time.time返回的这个高精度浮点数我们并不能准确的得到我们想要的当前时间。我们只知道这是从1970到目前为止已经过了多少秒。

这里我们还需要使用一个方法来把秒数变成当前的时间戳。

这时我们就要用到另外一个方法,localtime方法,该方法的参数为我们刚刚所说的1970年到目前为止的秒数,返回值为一个叫struct_time结构体,如果不懂什么叫结构体,没关系,也可以理解为localtime方法返回一个struct_time对象。

time.localtime(time.time())

可以看到localtime方法的返回结果,从单词的字面上我们也能大概了解到:

前缀tm为time,year为年份,mon为月份,mday为日,hour为时,min为分,sec为秒等等

但是我们想要的并不是这种结果,我们想要获得一个易于理解的数据。

常见的asctime类型,例如显示结果如Wed Feb 13 15:46:11 2018

如果小伙伴常用Linux对这种类型显然不会陌生,在linux上,我们使用date命令,不进行时间格式化的话,就会输出这种形式的时间。

例如小编这里虚拟机内的linux,运行date的输出结果如图。

格式为:星期几 月份 日数 时:分:秒 年份

注意的是,在linux上的date默认会输出时间区域,例如默认的美国时间EDT,或者修改为我们大陆的北京时间CTS。

这里提供两种方法进行struct_time数据格式化。

第一种就是第4步讲述的asctime格式,我们调用time模块内的asctime方法即可,参数为struct_time对象数据,返回字符串,即asctime格式当前日期时间。

time.asctime(time.localtime(time.time()))

'Wed Apr  4 20:27:15 2018'

翻译成中文是:

星期三 四月 4 20:27:15 2018

还有一个数据格式化的方法是time模块内提供的strftime方法。

str time.strftime(格式转化字符,时间戳)

格式转化字符如下:

%y 两位数的年份表示(00-99)

%Y 四位数的年份表示(000-9999)

%m 月份(01-12)

%d 月内中的一天(0-31)

%H 24小时制小时数(0-23)

%I 12小时制小时数(01-12)

%M 分钟数(00=59)

%S 秒(00-59)

%a 本地简化星期名称

%A 本地完整星期名称

%b 本地简化的月份名称

%B 本地完整的月份名称

%c 本地相应的日期表示和时间表示

%j 年内的一天(001-366)

%p 本地A.M.或P.M.的等价符

%U 一年中的星期数(00-53)星期天为星期的开始

%w 星期(0-6),星期天为星期的开始

%W 一年中的星期数(00-53)星期一为星期的开始

%x 本地相应的日期表示

%X 本地相应的时间表示

%Z 当前时区的名称

%% %号本身

这里常用的小编就进行了加粗,其实常用的就是这几个。一定要记住的是:

%Y = 年,%m = 月,%d = 日,%H = 24制时,%M = 分,%S = 秒。

那么知道转化符的意义之后,我们做起来就很简单了。

例如我们可以获得当前时间和日期,然后获得当前是一年中的第几天,然后获得当前的时区

time.strftime("当前日期:%Y年%m月%d日",time.localtime(time.time()))

#获得当前日期

time.strftime("当前时间:%H时%M分%S秒",time.localtime(time.time()))

#获得当前时间

time.strftime("今天是%Y年的第%j天,时区为%Z",time.localtime(time.time()))

代码只能在python3中有效运行,python2需要使用print输出(否则中文会变成16进制字符)。

python2运行如下,加上print即可:

print(time.strftime("当前日期:%Y年%m月%d日",time.localtime(time.time())))

#获得当前日期

print(time.strftime("当前时间:%H时%M分%S秒",time.localtime(time.time())))

#获得当前时间

print(time.strftime("今天是%Y年的第%j天,时区为%Z",time.localtime(time.time())))