欢迎关注微信公众号:excelwork
“ 通常我们拿到数据,首先要确认的就是数据完整性和可用性,比如数据范围、数据项缺失情况、数据格式是否统一、脏数据等。同样,面对时间格式数据,我们根据所使用的工具和环境,同样要确立是否可统一进行处理、分析等”
本篇介绍主要为以下几项内容:
星期判别
年月日等周期提取
时间增加或减少
时间差计算
数据示例如下:
01 返回星期几
我们做趋势分析,通过会拉一段时间出来,这时,某些场景加上星期判别的列,会让我们更直观对比日期变化。这里我们可以利用pandas的day_day_name函数:
rawalldata['weekdate']=rawalldata['下单时间'].dt.day_name()
得到的结果如下:
02 年月日等周期提取
通过日期进行日、月、年度统计的步骤在很多分析开始前不可缺少,因此,我们要提取出日期中的年份、季度、月份等。
print(rawalldata['下单时间'].dt.year)
print(rawalldata['下单时间'].dt.quarter)
print(rawalldata['下单时间'].dt.month)
结果如下:
得到年-月样式:
rawalldata['下单时间'].apply([lambda x:x.strftime('%Y-%m')])
03 时间增加或减少
这里说的意思的,比如想拿到2020-01-01的上周、上月、去年或未来的日期,如何快速计算拿到呢? 如果想返回指定天数差异的日期,可利用datetime库的timedelta函数,可选参数如下:datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
比如weeks=1,表示下周的日期、-1表示上周的日期;days=-1,表示昨天的日期、1表示明天的日期;
rawalldata['日期加减']=rawalldata['下单时间']+dt.timedelta(days=-1)
结果如下:
04 时间差计算
这如果已经是时间格式数据,直接相减即可,比如这样:
print(rawalldata['日期加减']-rawalldata['下单时间'])
得到结果:
如果是2020-01-10和20200101这两种类型的数据相减,一定要注意20200101 的数据格式,如果是数值型,需要转换为字符串类型,否则会按秒计算,然后再进行to_datetime转换。
rawalldata['格式转换']=pd.to_datetime(rawalldata['日期'].apply(lambda s:str(s)))