Pandas对时间的深度理解
说明
- 软件:安装有python、pandas
- 对四个时间概念理解、对to_datetime、datetime_range方法的应用
一、 对四个时间概念理解
- 时间戳datetime64[ns]
- 功能:表示时间点
- 方法:dtype=‘datetime64[ns]’ 类型定为datetime64[ns]就可以了
- 例:
- 时间段period[Y | M | D]
- 功能:表示某一段时间
- 方法:dtype=‘period[D]’ 类型设置为period[D]
- 注:Y表示年,M表示月,D表示天
- 例:
- 绝对持续时间Timedelta
- 功能:表示绝对的一段时间,可以用于时间的计算
- 方法:pd.Timedelta(days=nu) 注:nu可以是负数(表示之前几天),也可以是正数(之后几天)
- 例:
注:Timedelta的参数有weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds
- 相对持续时间DateOffset
- 功能:表示相对的一段时间,可以用于时间的计算,但没有类型,计算性能不强
- 方法:pd.DateOffset(days=nu) 注:nu可以是负数(表示之前几天),也可以是正数(之后几天)
- 例:
- 时间戳与绝对时间计算
- 功能:时间戳与绝对时间的计算
- 方法:时间戳±绝对时间
- 例:
二、to_datetime
-
功能:将字符串转化为时间戳
-
方法:pd.to_datetime(str | list_str | series,errors=‘raise’,formate=’%Ystr%mstr%dstr’)
-
errors参数有"raise"抛出错误, "ignore"不能转化时为不转化, "coerce"不能转化的转化为空NaT
-
"raise"抛出错误
-
"ignore"不能转化时为不转化
-
coerce
-
formate参数
注:所有的字符串都必须格式一格,不然会出错
-
例:
三、date_range
-
功能:生成一系列时间
-
方法:pandas.date_range(start=date_str,end=date_str,periods=nu,freq=‘D’
-
参数说明:start开始时间,end结束时间,periods生成时间个数,freq时间步长
-
freq频率
-
例:
四、Datetimelike访问器dt
- 功能:访问Series的属性/方法
- 方法:Datetimelike.dt.<property/method>
- 说明:Datetimelike包含Datetime、Period、Timedelta
- property详细
- method方法详细
五、Period创建和属性访问器
- Period创建
- pandas.period(str_date)
- pandas.period_range(start=str_date,end=str_date,periods=nu,freq=‘D’)
- Period属性访问器
- start_time 开始时间
- end_time 结束时间
- 其它的与Datetimelike访问器的属性及方法一至
六、Timedelta时间间隔创建和访问器
- 创建
- pandas.Timedelta(str_date,unit)
混合使用
#也可以组合使用如 2d3h4t9s
- pandas.to_timedelta(str_date,unit)
注:使用unit时,str_date必须是数字。而str_date是字符串时,unit不起作用 - pandas.timedelta_range(start=str_date,end=str_date,periods=nu,freq=unit)
与date_range的用法是一样的
- .dt访问器
- 属性使用
- 只有seires才可以使用,而TimedeltaIndex不可以使用.dt
- 访问器.dt 访问属性days,seconds
注:days表示日期,seconds而表示秒,还有其它
- components是将各个时间变量转化成DataFrame
- #total_seconds把所有时间变成秒
七、datetimeindex时间序列索引
- 时间序列索引
- 功能:可以通过年月日来索引,注切片可以到时分秒,但时分秒不可用于单个索引。
- 方法:
- 使用datetimeindex来索引
- 年
- 月
- 日
- 注:不可到秒,但可以到时分
- 切片
- 说明:可以是年月日时分秒的任意组合
- 当列与索引同名时,优先列
- 时间索引系乱序时,还是与时间顺序取值。