做数据分析时,对于有时间数据的数据来源,在时间维度上的剖析必不可少
比如:
- 在一天的销售时间内,哪些时间段是高峰
- 是否与星期有关
- RFM模型中的R怎么快速计算距离天数
- 如何找出某个时间点或时间段的数据
![883cc6f345eb3c2499c3ac7173dbabd0.png](https://i-blog.csdnimg.cn/blog_migrate/a5292f2bb7a1aaadf1830b799315eecd.jpeg)
以某订单数据为例
![289952272f7e3d3808f05d0d5093e973.png](https://i-blog.csdnimg.cn/blog_migrate/2f715031d15238ae2b006224a5ebdc45.jpeg)
查看时间列,包括日期和时间,从19年到20年,共约4万条数据,注意类型是datetime
![07feb9ea041bf317fe5f39e7946bbd93.png](https://i-blog.csdnimg.cn/blog_migrate/18fc3dd3856f67859101975201751c52.jpeg)
如果类型不是datetime,则后续无法处理时间数据!
如下新建一列类型不是datetime的时间数据,在提取年份时会出错
![8ddf5e61b16cee3e8cd6f4315cf45aa3.png](https://i-blog.csdnimg.cn/blog_migrate/bc6bf72506134008cc645c24e512c5d6.jpeg)
如果时间数据不是默认类型时,需要进行类型转换
![1cb2fb01e10d9ffb62e89bd471791d64.png](https://i-blog.csdnimg.cn/blog_migrate/989dc1f4f3983d6a0cfe02c06f5d54ca.jpeg)
提取年月日、时分秒、第几周,闰年等
![f6ba468bf44bb1aa7c33dfcc11bbe555.png](https://i-blog.csdnimg.cn/blog_migrate/0ef3ec0abf030ace17e80e99a65efb50.jpeg)
提取星期,其中0表示周一
![095566230ee0ff444623dade5f217c18.png](https://i-blog.csdnimg.cn/blog_migrate/3e074d2968bc2e25abdac1ae4a8ca159.jpeg)
想转换成中文,可以做如下:
前面内置函数的笔记有讲到
![ef712e4be8c959287ea329d0dbb71541.png](https://i-blog.csdnimg.cn/blog_migrate/b652baba1a145111f1ba99ed07e03168.jpeg)
首先构造一个字典,这里就可以用到enumerate这一内置函数
![4371510125131b6d07bbe1cd9e86cde4.png](https://i-blog.csdnimg.cn/blog_migrate/c862507e8e34c789a04ff2b4492f27f9.jpeg)
map下即可
![ec180cd23d4a5016314f4a9ad1b304ce.png](https://i-blog.csdnimg.cn/blog_migrate/bf6ea9ff714e0259c749a5236808b6d6.jpeg)
查看星期的平均支付金额
![75f3be4485ff09067a505d3cdfb66c44.png](https://i-blog.csdnimg.cn/blog_migrate/e108a1a52a521b72e91daf56265acd69.jpeg)
在一天的销售时间内,哪些时间段是高峰
![eccf59c9d2d40dd3cbd5da650182843d.png](https://i-blog.csdnimg.cn/blog_migrate/3151e56bd4cba464247185b8973e9039.jpeg)
看来是夜市
分离日期和时间
![4c4e12bfe59b6418847547b6aebe8d26.png](https://i-blog.csdnimg.cn/blog_migrate/a7bb0c94005db87fbe5f7f2d0cbe6cb3.jpeg)
这里日期类型改为datetime,因为后续要计算
计算距离天数,RFM模型中的R
考察结束时间可以是当前时间
![ee9f487860476ce3e7c01ead01f12df6.png](https://i-blog.csdnimg.cn/blog_migrate/dc2990738b7dcacd8369c92b8a7eb2fd.jpeg)
也可以是数据中最大的时间,这里使用数据中最大的日期,注意作差后.days才是距离天数
![144c9e88387d389e1d54c4adc2e620ce.png](https://i-blog.csdnimg.cn/blog_migrate/06151094c66dcbbcc3d02ccfa4539977.jpeg)
计算客户最近一次购买时间距离考察结束时间天数R
![74e286600eeb5946e7916853224eb28d.png](https://i-blog.csdnimg.cn/blog_migrate/4d0037c1c4ec7979cb3204c019defdb1.jpeg)
使用时间索引
这里有个前提,索引必须唯一
就现在使用的这个例子数据,时间一列是有重复值的
![09690314be34f2cc56548a3e97d961ca.png](https://i-blog.csdnimg.cn/blog_migrate/93164519fc25e6a9f6ce2f05fb3ebc25.jpeg)
当index不为时间时:
先导入datetime库
![a1e258d364e524ef6541230ff8a3d175.png](https://i-blog.csdnimg.cn/blog_migrate/90a995287b31e1aadbc38cbccdaf67dc.jpeg)
根据datetime查找数据,其中年月日这三个参数是必须!若想单独年份、月份需用上诉分离
当想精确查找时候,必须加上年月日时分秒参数,除非是日期一列
![1667cb3f44cb61b2c9c31f6a042912a1.png](https://i-blog.csdnimg.cn/blog_migrate/ab4bea30e0069ff7ff8ad41e7c6198d6.jpeg)
模糊查找,9月1日到9月5日数据
![d07ff03e6f7044ba1389ce6cb3ee83be.png](https://i-blog.csdnimg.cn/blog_migrate/081f5fc03e0e5e308925db840948cdd1.jpeg)
查找1号2点到5点的数据
![fe52ec2203fe6896ba27c10d17b5c12b.png](https://i-blog.csdnimg.cn/blog_migrate/97b0bb9634e1be18df948f2c41970c76.jpeg)
当时间数据唯一时,可以用作index:
这里我先去除重复值
![4fcf1cf2dd5ac40e0f8b46c8f7b6204c.png](https://i-blog.csdnimg.cn/blog_migrate/1d1a6ec4d0273c2b0ac95eddf8b6705d.jpeg)
重设索引
![72f8ae1ddfdac03f27a5f5bea6278ca4.png](https://i-blog.csdnimg.cn/blog_migrate/3d7aacca785d9f47760c12046bb38454.jpeg)
这样就能利用时间快速索引,因为相当于减少了一个维度
获取2019年的数据
![bd9b01920d582999ef70dece61600ac7.png](https://i-blog.csdnimg.cn/blog_migrate/e16b75fc9f1b492be6d5428aea48c336.jpeg)
获取年份销售额
![0225005d5221d61bd7cbf30a5ec43d4c.png](https://i-blog.csdnimg.cn/blog_migrate/399445fa8ea9d9abc673ffc3f7530f09.jpeg)
获取2019年销售额前3的省份
![e872fa8079bc36bcc0346ee01c1d1ccd.png](https://i-blog.csdnimg.cn/blog_migrate/761470f188aa70c1aad86c1ae1a11fff.jpeg)
获取日期或时间切片数据,这里的切片包括后部,如下包括2020
![b77664ff311e449bedf4e0b340024dd0.png](https://i-blog.csdnimg.cn/blog_migrate/6e91f1a16a771b0048b8fac661a9eacc.jpeg)
获取5日到6日数据
![03c5cd2ce908ef8662120126e38b0a6a.png](https://i-blog.csdnimg.cn/blog_migrate/8c09a2ca6d11480268ee2861a950fa38.jpeg)
获取5日0点到5点的数据
![e6273c781a492256d84b50f2f085e914.png](https://i-blog.csdnimg.cn/blog_migrate/b38196af03e51e3e000548b28e0ec47a.jpeg)
方便确实方便,但是前提需要注意,索引唯一!