使用pandas处理时间变量

在使用Python进行数据分析时 , 经常会遇到时间日期格式处理和转换 , 特别是分析和挖掘与时间相关的数据 。Pandas提供了强大的日期数据处理的功能 , 下面整理了一些使用pandas处理时间变量的常用技巧 。
1.生成时间序列
import pandas as pdimport numpy as nprng_day = pd.date_range('1/1/2011', periods=24, freq='D')rng_month=pd.date_range('1/1/2011', periods=24, freq='M')

使用pandas处理时间变量

文章插图
 
【使用pandas处理时间变量】  pandas主要提供pd.data_range()和pd.period_range()两个方法 , 给定参数有起始时间、结束时间、生成时期的数目及时间频率(freq='M’月 , 'D’天 , ‘W’ , 周 , 'Y’年)等 。
  两种主要区别在于pd.date_range()生成的是DatetimeIndex格式的日期序列;pd.period_range()生成的是PeriodIndex格式的日期序列 。
2.转化日期格式 2.1 字符串转时间 方法一:使用pd.to_datetime()
## 方法一:使用pd.to_datetime()series1=pd.to_datetime(['2020-07-22 20:07:30', '2020.07.23'])series2=pd.to_datetime(['2020-07-22', '2020.07.23'])print(series1)print(series2)
使用pandas处理时间变量

文章插图
 
方法二:使用datetime包的strptime方法
datestr = '2020-07-22 20:07:30'date1 = datetime.datetime.strptime(datestr,'%Y-%m-%d %H:%M:%S')print(date1)
使用pandas处理时间变量

文章插图
 
  使用strptime方法时 , 转化的格式必须和字符串的格式一样 。见上图 , 如果转换格式不一致将报错 。
datestr = '2020-07-22 20:07:30'date2 = datetime.datetime.strptime(datestr[0:7],'%Y-%m')print(date2)2.2日期转字符串
## 利用str或者strftime方法可以将datetime对象转换成字符串date = datetime.datetime(2020,7,22,19,59,00)datestr1 = datetime.datetime.strftime(date,'%Y-%m-%d %H:%M:%S')datestr2 = datetime.datetime.strftime(date,'%Y-%m')print(datestr1)print(datestr2)
使用pandas处理时间变量

文章插图
 
  使用strftime方法将日期转成字符串时 , 可以调整字符串的格式 , 并不是需要严格对应 。
3.日期加减 3.1 日期加一天
date=datetime.date.today()print(datetime.date.today()+datetime.timedelta(days=1))
使用pandas处理时间变量

文章插图
 
3.2日期加一个月
## 日期加一个月,需要使用第三方库from dateutil.relativedelta import relativedelta datetime_now = datetime.datetime.now()datetime_three_month_ago = datetime_now + relativedelta(months=+1)print(datetime_three_month_ago)
使用pandas处理时间变量

文章插图
 
4.计算日期之差
date_end=datetime.datetime.now()date_start=pd.to_datetime('2020/01/01')date_interval=date_end-date_startprint(date_interval)print(f'时间相隔{date_interval.days}天')print(f'时间相隔{date_interval/np.timedelta64(1,"M")}月')print(f'时间相隔{date_interval/np.timedelta64(1,"D")}天')print(f'时间相隔{int(date_interval/np.timedelta64(1,"D"))}天')
使用pandas处理时间变量

文章插图
 
【作者】:Labryant
【原创公众号】:风控猎人
【简介】:某创业公司策略分析师 , 积极上进 , 努力提升 。乾坤未定 , 你我都是黑马 。
【转载说明】:转载请说明出处 , 谢谢合作!~




    推荐阅读