Pandas-Series接口第十讲 Datetime 属性

154 阅读3分钟

Series第十讲 Datetime 属性

本节课将讲解Pandas-Series中关于Datetime的属性。

Datetime 属性

  • Series.dt.date
  • Series.dt.time
  • Series.dt.timetz
  • Series.dt.year
  • Series.dt.month
  • Series.dt.day
  • Series.dt.hour
  • Series.dt.minute
  • Series.dt.second
  • Series.dt.microsecond
  • Series.dt.nanosecond
  • Series.dt.week
  • Series.dt.dayofweek
  • Series.dt.weekday
  • Series.dt.dayofyear
  • Series.dt.quarter
  • Series.dt.is_month_start
  • Series.dt.is_month_end
  • Series.dt.is_quarter_start
  • Series.dt.is_quarter_end
  • Series.dt.is_year_start
  • Series.dt.is_year_end
  • Series.dt.is_leap_year
  • Series.dt.daysinmonth
  • Series.dt.days_in_month
  • Series.dt.tz
  • Series.dt.freq

详细介绍

首先导入所需依赖包,创建一个时间类型的Index

In [1]: import numpy as np                                                               
In [2]: import pandas as pd

In [3]: index = pd.date_range('1/1/2000', periods=4, freq='T')
In [6]: index                                                                   
Out[6]: 
DatetimeIndex(['2000-01-01 00:00:00', '2000-01-01 00:01:00',
               '2000-01-01 00:02:00', '2000-01-01 00:03:00'],
              dtype='datetime64[ns]', freq='T')

1. Series.dt.date

返回python datetime.date(年/月/日)对象的numpy数组。

In [4]: index.date                                                              
Out[4]: 
array([datetime.date(2000, 1, 1), datetime.date(2000, 1, 1),
       datetime.date(2000, 1, 1), datetime.date(2000, 1, 1)], dtype=object)                                                       

2. Series.dt.time

返回datetime.time(时/分)的numpy数组。

In [5]: index.time                                                              
Out[5]: 
array([datetime.time(0, 0), datetime.time(0, 1), datetime.time(0, 2),
       datetime.time(0, 3)], dtype=object)

3. Series.dt.timetz

返回datetime.time的numpy数组,其中还包含时区信息(如果有时区的话).

In [7]: index.timetz                                                            
Out[7]: 
array([datetime.time(0, 0), datetime.time(0, 1), datetime.time(0, 2),
       datetime.time(0, 3)], dtype=object)

In [35]: index.tz_localize('UTC').timetz                                        
Out[35]: 
array([datetime.time(0, 0, tzinfo=<UTC>),
       datetime.time(0, 1, tzinfo=<UTC>),
       datetime.time(0, 2, tzinfo=<UTC>),
       datetime.time(0, 3, tzinfo=<UTC>)], dtype=object)

4. Series.dt.year

哪年。

In [8]: index.year                                                              
Out[8]: Int64Index([2000, 2000, 2000, 2000], dtype='int64')

5. Series.dt.month

哪月。

In [9]: index.month                                                             
Out[9]: Int64Index([1, 1, 1, 1], dtype='int64')

6. Series.dt.day

哪日。

In [10]: index.day                                                              
Out[10]: Int64Index([1, 1, 1, 1], dtype='int64')

7. Series.dt.hour

小时。

In [11]: index.hour                                                             
Out[11]: Int64Index([0, 0, 0, 0], dtype='int64')

8. Series.dt.minute

分钟。

In [12]: index.minute                                                           
Out[12]: Int64Index([0, 1, 2, 3], dtype='int64')

9. Series.dt.second

秒。

In [13]: index.second                                                           
Out[13]: Int64Index([0, 0, 0, 0], dtype='int64')

10. Series.dt.microsecond

微秒。

In [14]: index.microsecond                                                      
Out[14]: Int64Index([0, 0, 0, 0], dtype='int64')

11. Series.dt.nanosecond

纳秒。

In [15]: index.nanosecond                                                       
Out[15]: Int64Index([0, 0, 0, 0], dtype='int64')

12. Series.dt.week

一年中的第几周。

In [19]: index.week                                                             
Out[19]: Int64Index([52, 52, 52, 52], dtype='int64')

13. Series.dt.dayofweek

周几,星期一= 0,星期日= 6。

# 周六
In [20]: index.dayofweek                                                        
Out[20]: Int64Index([5, 5, 5, 5], dtype='int64')

14. Series.dt.weekday

同dayofweek。

15. Series.dt.dayofyear

一年中的第几天。

In [21]: index.dayofyear                                                        
Out[21]: Int64Index([1, 1, 1, 1], dtype='int64')

16. Series.dt.quarter

属于第几个季度,1/2/3月为1季度,4/5/6为2季度。

In [22]: index.quarter                                                          
Out[22]: Int64Index([1, 1, 1, 1], dtype='int64')

17. Series.dt.is_month_start

日期是否为每月的第一天。

In [23]: index.is_month_start                                                   
Out[23]: array([ True,  True,  True,  True])

18. Series.dt.is_month_end

日期是否为每月的最后一天。

In [24]: index.is_month_end                                                     
Out[24]: array([False, False, False, False])

19. Series.dt.is_quarter_start

日期是否为一个季度的第一天。

In [25]: index.is_quarter_start                                                 
Out[25]: array([ True,  True,  True,  True])

20. Series.dt.is_quarter_end

日期是否为一个季度的最后一天。

In [26]: index.is_quarter_end                                                   
Out[26]: array([False, False, False, False])

21. Series.dt.is_year_start

日期是否为一年的第一天。

In [27]: index.is_year_start                                                    
Out[27]: array([ True,  True,  True,  True])

22. Series.dt.is_year_end

日期是否为一年的最后一天。

In [28]: index.is_year_end                                                      
Out[28]: array([False, False, False, False])

23. Series.dt.is_leap_year

是否属于闰年。

In [29]: index.is_leap_year                                                     
Out[29]: array([ True,  True,  True,  True])

24. Series.dt.daysinmonth

该月份一共有几天。

In [30]: index.daysinmonth                                                      
Out[30]: Int64Index([31, 31, 31, 31], dtype='int64')

25. Series.dt.days_in_month

同daysinmonth。

26. Series.dt.tz

返回时区(如果有)。

# 返回None,因为未设置时区
In [32]: index.tz 

# 通过tz_localize转换为指定时区 tz_localize方法上一讲有介绍
In [34]: index.tz_localize('UTC').tz                                            
Out[34]: <UTC>

27. Series.dt.freq

返回此PeriodArray的频率对象,即创建对象时的freq值。

In [31]: index.freq                                                             
Out[31]: <Minute>