dataframe日期按周、按月、按季度聚合
dataframe中的每一列都是一个Series对象,这个Series对象的index默认是从0开始,步长为1进行递增。
如果你的dataframe中有一列是日期,对于其他列字段需要按照日期字段进行聚合的话,需要将待聚合列的Series对象index属性修改为该日期字段。
关键是这个操作:
offline_ratio = custs.offline_ratio
offline_ratio.index=custs['day_tm'].apply(lambda x:datetime.strptime(x,'%Y-%m-%d'))
offline_ratio_month = offline_ratio.resample('m').mean()
- 修改Series对象的index属性为日期
- resample函数可以通过调整参数,实现按月(m),按周(w),按季度(q)等聚合
import pandas as pd
import matplotlib.pyplot as plt
from impala.dbapi import connect
from impala.util import as_pandas
from datetime import datetimeconn = connect(host='你服务器的ip',port=端口号,user='用户名',password='密码',auth_mechanism='PLAIN')
curs = conn.cursor()curs.execute("""select substring(created_time,1,10) as day_tm,sum(case when date_from in (0,3) then 1 else 0 end) as offline_custs,sum(case when date_from in (0,3) and so_no is not nulland substring(created_time,1,10)= substring(so_date,1,10)then 1 else 0 end) as offline_orders,sum(case when date_from not in (0,3) then 1 else 0 end) as online_custs,sum(case when date_from not in (0,3) and so_no is not nulland substring(created_time,1,10)= substring(so_date,1,10)then 1 else 0 end) as online_ordersfrom 你的表名 cwhere substring(created_time,1,4) >= '2019' group by substring(created_time,1,10)order by substring(created_time,1,10) asc""")
custs_to_orders = as_pandas(curs)custs_to_orders['offline_ratio'] = custs_to_orders['offline_orders']/custs_to_orders['offline_custs']
custs_to_orders['online_ratio'] = custs_to_orders['online_orders']/custs_to_orders['online_custs']offline_ratio = custs_to_orders.offline_ratio
offline_ratio.index=custs_to_orders['day_tm'].apply(lambda x:datetime.strptime(x,'%Y-%m-%d'))
offline_ratio_month = offline_ratio.resample('m').mean()
day_tm
2019-01-31 0.301876
2019-02-28 0.183390
2019-03-31 0.178983
2019-04-30 0.183437
2019-05-31 0.202010
2019-06-30 0.242368
2019-07-31 0.177942
2019-08-31 0.173683
2019-09-30 0.179291
2019-10-31 0.186196
2019-11-30 0.183292
2019-12-31 0.221013
2020-01-31 0.256396
2020-02-29 0.260454
2020-03-31 0.162729
2020-04-30 0.117873
2020-05-31 0.103655
Freq: M, Name: offline_ratio, dtype: float64
dataframe日期按周、按月、按季度聚合相关推荐
- oracle直接将日期转为月份,如何使用Oracle将日期转换为周,月,季度,半年,年...
本文主要向大家介绍了如何使用Oracle将日期转换为周,月,季度,半年,年,通过具体的代码向大家展现,希望对大家学习Oracle有所帮助. 实现当前时间,周,月,季度,半年,年的转换,其中特别注意的是 ...
- Oracle日期转换为周,月,季度,半年,年
实现当前时间,周,月,季度,半年,年的转换,其中特别注意的是周的处理,IW方式处理逻辑,如果本周有大于等于4天,本周属于几年,如果小于4天,本周属于下一年 以1990/12/31为例,这天属于1991 ...
- JAVA将一段时间 按周、月、季度、半年、年进行分割
JAVA将一段时间 按周.月.季度.半年.年进行分割. 有时候开发常常会传入一个开始时间和结束时间,将两个时间进行分割,返回一个时间的集合以下是我们小组成员所书写的实体类 package com.ai ...
- Impala SQL实现按天、自然周、月、季度、年份周期统计
在整理完了Oracle.MySQL中如何通过SQL实现按天.自然周.月.季度.年份周期统计时,忽然想起在hive与impala中,SQL的语法也是不尽相同,但又有共通之处. 俗话说,授人予鱼,不若授人 ...
- C#根据当前时间获取周,月,季度,年度等时间段的起止时间
C#根据当前时间获取周,月,季度,年度等时间段的起止时间 最近有个统计分布的需求,需要按统计本周,上周,本月,上月,本季度,上季度,本年度,上年度等时间统计分布趋势,所以这里就涉及到计算周,月,季度, ...
- Tableau--使用参数为报表增加一个统计周期筛选条件(日,周,月,季度,年)
有这样一个需求:要求在报表中增加一个统计周期控件,用来控制折线图的内容是按照控件里的选项(日,周,月,季度,年)来展示的. 这里用到了参数. 方法: step1: 创建一个字符型参数,'统计周期'. ...
- 利用element日期组件,封装季度组件, 实现日、周、月、季度切换,默认禁用部分日期选择(附带:获取昨日、昨日所在周、昨日所在月、昨日所在季度等方法)
具体效果图下: 1. 季度组件封装,创建一个 quarterDate.vue文件 <!-- 季度组件 --> <template><div><el-popov ...
- mysql 根据日期查询周、月、年起止时间
查询周起止日期 SELECTDATE_ADD( '2019-11-12', INTERVAL - WEEKDAY ( '2019-11-12' ) DAY ) week_begin,DATE_ADD( ...
- LocalDateTime工具类:根据当前、周、月、季度、半年、年等维度获取时间hutool工具包获取农历日期,生肖,传统节日
1. 简介 Java8提供了全新的日期处理包(java.time.*),根据Java8日期新特性封装日期时间工具类LocalDateTimeUtils. 2. 工具类方法目录 说明 方法名称 当前时间 ...
最新文章
- LeetCode Anagrams
- 中科大计算机应用,中科大2012计算机应用专业考研初试考什么
- C语言中低位存放,C语言 大端小端存储解析以及判断方法
- zabbix监控工具
- linux桌面发展方向,观点|Linux 桌面的发展之路!
- 垂直梯形校正画质损失多少_全面了解投影梯形校正,切不可滥用!
- 小霸王消失,好记星落灰,谁能“取悦”10后?
- [知乎] 端游、手游服务端架构演变
- Datamill 一个开源的框架
- vb2008如何连接mysql_VB如何连接ACCESS数据库详解
- jszip打包下载文件
- armbian编译安装mentohust 认证锐捷客户端
- linux内核 quota,Linux系统磁盘配额(quota)
- 448. Find All Numbers Disappeared in an Array -- Python
- 再读《终身成长》——重塑思维
- CABasicAnimation,CAKeyframeAnimation,CATransition,CAAnimationGroup,UIBezierPath之间做动画的不同点和各自的使用范围。
- Android定制属于你自己的导航栏
- httpd的MPM工作模式
- Learned-Mixin +H(LMH)
- java第二个案例:运动员和教练(巩固理解抽象类和接口、继承等知识点)