上次我们根据用户创建账号和登录日志进行了《用SQL进行用户留存率计算》,今天我们继续用这份用户登录日志来计算用户连续登录天数。 1....《『数据分析』pandas计算连续行为天数的几种思路》 《利用Python统计连续登录N天或以上用户》 今天,我们用SQL来进行本次的操作,大致分为以下几步: 数据去重 SELECT DISTINCT...role_id, $part_date date FROM role_login 进行用户id分组并按照日期进行排序(获取排序序号,窗口函数) SELECT role_id, date...sort FROM ( SELECT DISTINCT role_id , $part_date date FROM role_login ) temp_1 再用登录日期和排序序号进行差值计算...后续我们会持续分享SQL和Python的实操案例哈,敬请期待!
从题目要求中可知,我们所需要输出的预测结果只有“日期”,“TRADE_ADDRESS(刷卡地点编号)”和“预测客流量”三种数据。这意味着很多所给的字段可能是无用的。...这时开始继续分析数据: ? 该函数能提取相应TRADE_ADDRESS的时间序列数据,及每天的平均连接数。 ? 绘图结果如下,可以看出有存在异常的天数。 ?...所以需要写如下函数将异常的日子过滤掉,此处的过滤策略是:对每月特定时间段天数的数据求均值与标准差,然后将均值与标准差落在10%分位数以下和90%分位数以上的日子去除。 ? 去除后序列如下: ?...这样,就完成了建立模型的前置工作。 建立模型 数据都已经准备好,可以开始着手模型的构建了。因为地铁人流具有连续性的特征,我们使用ARMA来对预测进行一定的修正,模型如下: ?...通过计算得到,该时序模型的置信区间落在(2,0),因此我们的时间序列模型p,q数值的取值分别取2和0作为参数。 ? 从结果图上来看,对于时间序列趋势的预测还算不错,但仍存在部分偏差。
导读 昨日推文PySpark环境搭建和简介,今天开始介绍PySpark中的第一个重要组件SQL/DataFrame,实际上从名字便可看出这是关系型数据库SQL和pandas.DataFrame的结合体,...:这是PySpark SQL之所以能够实现SQL中的大部分功能的重要原因之一,functions子类提供了几乎SQL中所有的函数,包括数值计算、聚合统计、字符串以及时间函数等4大类,后续将专门予以介绍...Window:用于实现窗口函数功能,无论是传统关系型数据库SQL还是数仓Hive中,窗口函数都是一个大杀器,PySpark SQL自然也支持,重点是支持partition、orderby和rowsBetween...三类操作,进而完成特定窗口内的聚合统计 注:这里的Window为单独的类,用于建立窗口函数over中的对象;functions子模块中还有window函数,其主要用于对时间类型数据完成重采样操作。...、datediff求日期差等 这些函数数量较多,且与SQL中相应函数用法和语法几乎一致,无需全部记忆,仅在需要时查找使用即可。
pandas分析处理时间序列数据时,经常需要对原始时间粒度下的数据,按照不同的时间粒度进行分组聚合运算,譬如基于每个交易日的股票收盘价,计算每个月的最低和最高收盘价。...图1 2 在pandas中进行时间分组聚合 在pandas中根据具体任务场景的不同,对时间序列进行分组聚合可通过以下两类方式实现: 2.1 利用resample()对时序数据进行分组聚合 resample...原始的意思是「重采样」,可分为「上采样」与「下采样」,而我们通常情况下使用的都是「下采样」,也就是从高频的数据中按照一定规则计算出更低频的数据,就像我们一开始说的对每日数据按月汇总那样。...,譬如我们以2日为单位,将closed设置为'right'时,从第一行记录开始计算所落入的时间窗口时,其对应为时间窗口的右边界,从而影响后续所有时间单元的划分方式: ( AAPL .set_index...index不是日期时间类型,也可以使用参数on来传入日期时间列名实现同样的效果。
图1 2 在pandas中进行时间分组聚合 在pandas中根据具体任务场景的不同,对时间序列进行分组聚合可通过以下两类方式实现: 2.1 利用resample()对时序数据进行分组聚合 resample...原始的意思是重采样,可分为上采样与下采样,而我们通常情况下使用的都是下采样,也就是从高频的数据中按照一定规则计算出更低频的数据,就像我们一开始说的对每日数据按月汇总那样。 ...,就像下面的例子那样: import pandas as pd # 记录了2013-02-08到2018-02-07之间每个交易日苹果公司的股价 AAPL = pd.read_csv('AAPL.csv...图4 而通过参数closed我们可以为细粒度的时间单位设置区间闭合方式,譬如我们以2日为单位,将closed设置为'right'时,从第一行记录开始计算所落入的时间窗口时,其对应为时间窗口的右边界,...图5 而即使你的数据框index不是日期时间类型,也可以使用参数on来传入日期时间列名实现同样的效果。
数据背景为了能尽量多地使用不同的Pandas函数,我设计了一个古古怪怪但是实际中又很真实的数据,说白了就是比较多不规范的地方,等着我们去清洗。数据源是改编自一家超市的订单,文末附文件路径。...,我们便可以开始用Pandas来实操该部分内容。...当然,还是那句话,这个在实操中需要与业务明确,或结合业务场景确定。RFM建模完成数据清洗及特征构造后,就进入到建模分析环节。...受限于篇幅,本文仅对数据分析过程中Pandas高频使用的函数方法进行了演示,同样重要的还有整个分析过程。如果其中对某些函数不熟悉,鼓励同学多利用知乎或搜索引擎补充学习。同时也欢迎加饼干哥哥微信讨论。...更多Pandas函数使用说明,可查询中文文档本文算是数据分析流程的基础篇,计划会再整理一份进阶篇,涉及机器学习流程、以及更多特征工程内容,同样会以业务落地实战的方式进行介绍。
最近有位同学面试了几家,分享了一些觉得有些难度的SQL面试题:比如会让你用SQL实现行转列和列转行操作、用SQL计算留存、用SQL计算中位数、还有如何统计用户最大连续登录天数?...SQL 8.0窗口函数 实现思路: 对用户ID和登录日期去重 对每个用户ID按照日期顺序进行编号 将登录日期减去编号对应的天数,使连续的日期转换为同一天 将连续日期转换为同一个日期之后就可以按照这个字段分组...,这里以第一个为准;如果需要获取全部的最大日期可以使用rank或dense_rank窗口函数,可以保证天数一致时排名一致。...) 前面方法使用的是SQL 8.0窗口函数,但在低版本sql5.0中并没有窗口函数,如果面试官提出不让用窗口函数,应该怎么办呢?...下面我们用sql窗口函数的实现思路,用Pandas实现一遍。
如果当前模拟时间不是有效的市场时间,我们使用当前时间检查资产是否存活,但我们使用上次市场分钟/日进行交易数据检查。...返回: columns – 从列名到计算该列输出的表达式的映射。...返回每个资产到下一个已知事件日期的业务日(非交易日!)数量。 这并不使用交易日,因为交易日历包含的信息可能在当时计算时对算法不可用。...开始日期 到 结束日期 计算 pipeline 的值,每次计算 chunksize 大小的日期块。...开始日期 到 结束日期 计算 pipeline 的值。
1、存储和计算必须是高性能的; 2、对离线特征的支持要与在线保持一致性; 3、训练得到的模型要支持端到端的预估; 4、支持单行和时序特征; 5、预估服务支持分布式高可用。...离线阶段可以通过读分布式存储然后通过划窗来获取,AI特征管理中台中的存储组件包括一个实时特征时序数据库,通过这个时序数据库可以获取在线的窗口数据,然后实现一个高性能的模型评分服务。...这种特征可以通过SQL的窗口函数来获得,我们称之为穿越特征,也就是在特征计算时是不应该引用当前行以后的数据,因为在真实线上预估中无法获取比当前行以后的数据。...计算性能也有很多优化:1、优化Spark的Window实现,支持 CodeGen 函数以及跨表窗口计算;2、同一进程内的内存编译优化,充分利用 Java 编译器优化生成高性能 byte code;3、支持特征级别的异常隔离...上面提到的都是计算核心的组件,再说说实现高性能、高并发、时序优化的存储核心——自研的全内存分布式时序数据库。为什么是时序数据库?
,多个时间序列的数据集构造特征时需要先进行分组再计算。...如果每条数据不是一条训练样本,时间变量提取出来的特征需要进行二次加工(聚合操作)才能作为训练样本的特征使用。 例子:用户交易流水数据中的交易时间。...由于每个用户的交易流水数量不一样,从而导致交易时间提取出来的特征的数据不一致,所以这些特征不能直接作为训练样本的特征来使用。...我们需要进一步进行聚合操作才能使用,如先从交易时间提取出交易小时数,然后再统计每个用户在每个小时(1-24小时)的交易次数来作为最终输出的特征。...2)对时间变量进行条件过滤,然后再对其他变量进行聚合操作所产生的特征 主要是针对类似交易流水这样的数据,从用户角度进行建模时,每个用户都有不定数量的数据,因此需要对数据进行聚合操作来为每个用户构造训练特征
Pandas_UDF是在PySpark2.3中新引入的API,由Spark使用Arrow传输数据,使用Pandas处理数据。...Pandas_UDF是使用关键字pandas_udf作为装饰器或包装函数来定义的,不需要额外的配置。...常常与select和withColumn等函数一起使用。其中调用的Python函数需要使用pandas.Series作为输入并返回一个具有相同长度的pandas.Series。...要使用groupBy().apply(),需要定义以下内容: 定义每个分组的Python计算函数,这里可以使用pandas包或者Python自带方法。...下面的例子展示了如何使用这种类型的UDF来计算groupBy和窗口操作的平均值: from pyspark.sql.functions import pandas_udf, PandasUDFType
pandas.date_range 是一个函数,允许我们创建一系列均匀间隔的日期。...pandas.DataFrame.rolling 允许我们将数据拆分为聚合的窗口,并应用诸如均值或总和之类的函数。...在交易中的一个典型例子是使用50天和200天的移动平均线来买入和卖出资产。 让我们计算苹果公司的这些指标。请注意,在计算滚动均值之前,我们需要有50天的数据。...趋势可以是确定性的,是时间的函数,也可以是随机的。 季节性 季节性指的是一年内在固定时间间隔内观察到的明显重复模式,包括峰值和低谷。...函数返回一个带有季节性、趋势和残差属性的对象,我们可以从系列值中减去它们。
数据科学工具库速查表 | Pandas 速查表图解数据分析:从入门到精通系列教程上述信息中最重要的3列是:客户ID、销售交易的日期、销售金额,当然大家也可以在后续建模中囊括更多的丰富信息(如商品类别等)...这将使我们能够跟踪客户进行了多少交易以及交易发生的时间。 我们还可以保留从截止日期开始计算这些指标的做法,因为以后会很方便。...我们把每个客户首次交易以来的天数也加到信息中。...first_purchase = age.groupby(customer_id_column)[date_column].min().reset_index() # 获取截止到第一次交易之间的天数...假设数据从年初(最左侧)开始,我们选择一个频率(例如,一个月)遍历数据集构建未来 (f) 标签,也即下图的红色 f 块。
(1246) 当只提供时间规则而没有日期规则时,将schedule_function参数视为时间规则。(1221) 在 schedule 函数中保护交易日的开始和结束边界条件。...不再使用基准的索引,现在使用交易日历来填充环境中的交易日。移除extra_date字段,因为与基准列表不同,交易日历可以生成未来日期,因此不需要为当前交易日的日期添加。...(1246) 当提供时间规则但没有日期规则时,将schedule_function参数视为时间规则。(1221) 在 schedule 函数中保护交易日的开始和结束边界条件。...(1246) 当提供时间规则而没有日期规则时,将schedule_function参数视为时间规则。(1221) 在 schedule 函数中保护交易日的开始和结束边界条件。...如果你使用分钟数据运行,那么这将计算那些天数中的分钟数,考虑到提前收盘和当前时间,并在这些分钟集合上应用变换。returns不接受任何参数,将返回给定资产的日回报率。
第二篇文章一场pandas与SQL的巅峰大战(二)涉及字符串处理,窗口函数,行列转换,类型转换等操作。...第三篇文章一场pandas与SQL的巅峰大战(三)围绕日期操作展开,主要讨论了日期获取,日期转换,日期计算等内容。 本篇文章一起来学习常见的应用实例:如何在SQL和pandas中计算同环比。...数据样例如下所示,从左到右依次表示,id,日期,当日销售额,数据周期从2019-11-01到2019-12-31。公众号后台回复“对比四”,即可获取本文全部代码和数据。 ? ?...回到上面的思路2,我们在前面的学习中知道,Hive中有窗口函数支持查询当前行前n行的数据,可以实现同样的效果。...在pandas中,还有专门的计算同环比的函数pct_change。
下面代码展示如何计算日波动率。 代码不能更简单。函数接收两个参数,第 1 个 df 是 DataFrame,第 2 个是 span0指数加权平均窗口的天数。...我们定义 ti,1 = 第一次触碰隔栏的时点 r(ti,0, ti,1) = 从开始到第一次碰隔栏时段内的收益 通常我们有 ti,1 ≤ ti,0+ h 关系 当第一次碰到竖直隔栏,用等号 = 当第一次碰到水平隔栏...当等于 0 时,表明不设定隔栏,那么隔栏的点位就设定为 NaN 第 12 - 13 行代码在每一个窗口都运行,即每一个起始日到它 15 天之后的竖直隔栏对应的日期,计算每天的收益率。...打标签 该函数计算出根据每个窗口的收益正负带标住 +1 或者 -1。 第 5 行计算出起始价格。第 6 行计算出终止价格。...最后,从本贴的代码可看出 Pandas 的重要性了吧。
一个kettle 的作业流 以上不是本文重点,不同数据源的导入导出可以参考: 数据库,云平台,oracle,aws,es导入导出实战 我们从数据接入以后的内容开始谈起。 ---- 2....4.1 统一单位 多来源数据 ,突出存在的一个问题是单位不统一,比如度量衡,国际标准是米,然而很多北美国际习惯使用英尺等单位,这就需要我们使用自定义函数,进行单位的统一换算。...比如,有时候我们使用数据进行用户年龄的计算,有的给出的是出生日期,有的给出的年龄计算单位是周、天,我们为了模型计算方便需要统一进行数据的单位统一,以下给出一个统一根据出生日期计算年龄的函数样例。...").dropDuplicates() 当然如果数据量大的话,可以在spark环境中算好再转化到pandas的dataframe中,利用pandas丰富的统计api 进行进一步的分析。...配置ftp----使用vsftp 7.浅谈pandas,pyspark 的大数据ETL实践经验 ---- ----
类似需求在去年笔者刚接触pandas的时候也做过《利用Python统计连续登录N天或以上用户》,这里我们可以用同样的方法进行实现。...图1:案例数据 以上图中数据来算,我们可以看到从1月21日-1月26日空气质量连续污染持续了6天。 不过,在实际的数据处理中,我们的原始数据往往会较大,并不一定能直接看出来。...求连续污染持续天数 结合上次的《利用Python统计连续登录N天或以上用户》案例,我们这里再提供1种新的解题思路,合计2种解题思路。 以下解法来自小明哥和才哥 2.1....图4:筛选空气质量污染的数据 步骤2:新增辅助列(辅助列可以不用加到原数据t上) 这里的逻辑大概如下: 辅助排名列(按照时间顺序排序)为间隔天数 然后用时间字段(time)与间隔天数求差值得到一个日期...图10:思路2的解法2小明哥结果 以上就是本次全部内容,其实我们在日常工作生活中还可能遇到类似场景如:计算用户连续登录天数、计算用户连续付费天数、计算南方梅雨季节连续下雨天数等等!
领取专属 10元无门槛券
手把手带您无忧上云