精华内容
下载资源
问答
  • 对数据处理的条数进行设置(窗口大小),每一条数据进行开窗。 over函数的用法: (1)over()函数前可以使用什么? ① lag(列名, n, 默认值) 解释:拿前第n行数据,如果第n行数据不存在,赋默认值。 与之相似的...

    Hive函数之窗口函数、排名函数详讲

    窗口函数 over()
    什么是窗口函数?
    对数据处理的条数进行设置(窗口大小),对每一条数据都进行开窗。
    over函数的用法:
    (1)over()函数前可以使用什么?
    lag(列名, n, 默认值)
    解释:拿前第n行数据,如果第n行数据不存在,赋默认值。
    与之相似的:lead(列名, n, 默认值) 拿后第n行数据,如果第n行数据不存在,赋默认值。
    ntile(n) 把数据均分成n组
    排名函数
    三个:rank()dense_rank()row_number()
    rank():排名会重复、总数不变
    dense_rank():排名会重复、总数会减少
    row_number():排名不会重复、总数不变
    ④ 聚合函数
    max()min()avg()count()sum()
    (2)over()函数的括号里面可以写什么?
    ① partition by子句
    用法:over(partition by 列名)
    ② order by子句
    用法:over(order by 列名),可升序排(默认)、也可降序排(desc)
    ③ rows子句
    rows子句的形式:rows between x and y,是x、y的取值可能有:
    current row,当前行
    n preceding,往前n行
    n following,往后n行
    unbounded preceding,从前面的起点
    unbounded following,到后面的终点
    综合起来一起用的语法形式,如下:
    over(partition by a order by b rows between x and y)

    注意:rows子句不能单独出现,有order by子句才能有rows子句。
    注意:存在order by子句,但没有rows子句,此时窗口的大小为,当前组的第一行到当前行。

    展开全文
  • 某业务数据处理时,需要判断两个数据字段的大小,保留较大的数据存入到指定字段下面。考虑使用decode函数和sign函数来实现这个目的。【解决】1、decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值) 2、...

    【背景】
    对某业务数据处理时,需要判断两个数据字段的大小,保留较大的数据存入到指定字段下面。考虑使用decode函数和sign函数来实现这个目的。

    【解决】

    1、decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
    2、sign()函数:根据某个值是0、正数、负数,分别返回01、-1
    3、为获得两个字段的较大值或较小值:
    A>B, A-B>0, sign(A-B)=1,  获得大值即A, decode(sign(A-B),1,A,B)
    A<B, A-B<0, sign(A-B)=-1, 获得小值即A, decode(sign(A-B),-1,A,B)

    【实验】
    先利用续表来实验一下效果,如下:

    select decode(sign(66-88),-1,66,88) from dual;

    返回两个数值的较小值作为显示结果,如下:
    这里写图片描述
    返回两个数值的较大值作为显示结果,如下:

    select decode(sign(66-88),1,66,88) from dual;

    这里写图片描述
    开始实验
    1、创建实验表

    CREATE TABLE PANDUAN 
    (
    A VARCHAR2(50),
    B VARCHAR2(50)
    );

    2、插入实验数据

    INSERT INTO PANDUAN(A,B) VALUES('23','45');
    INSERT INTO PANDUAN(A,B) VALUES('38','29');
    INSERT INTO PANDUAN(A,B) VALUES('278','698');
    INSERT INTO PANDUAN(A,B) VALUES('4530','228'); 
    COMMIT;

    查询实验数据

    SELECT * FROM PANDUAN;

    这里写图片描述
    3、判断两字段大小,保留大的数据和小的数据,如下:
    保留较大数

    SELECT DECODE(SIGN(A-B),1,A,B) FROM PANDUAN;

    这里写图片描述
    保留较小数

    SELECT DECODE(SIGN(A-B),-1,A,B) FROM PANDUAN;

    这里写图片描述

    小知识,简而记之。

    蓝的成长记系列:

    原创作品,出自 “深蓝的blog” 博客

    蓝的成长记——追逐DBA(1):奔波于路上,挺进山东

    蓝的成长记——追逐DBA(2):安装!安装!久违的记忆,引起我对DBA的重新认知

    蓝的成长记——追逐DBA(3):古董上操作,数据导入导出成了问题

    蓝的成长记——追逐DBA(4):追忆少年情愁,再探oracle安装

    蓝的成长记——追逐DBA(5):不谈技术谈业务,恼人的应用系统

    蓝的成长记——追逐DBA(6):做事与做人:小技术,大为人

    蓝的成长记——追逐DBA(7):基础命令,地基之石

    蓝的成长记——追逐DBA(8):重拾SP报告,回忆oracle的STATSPACK实验

    蓝的成长记——追逐DBA(9):国庆渐去,追逐DBA,新规划,新启程

    蓝的成长记——追逐DBA(10):飞刀防身,熟络而非专长:摆弄中间件Websphere

    蓝的成长记——追逐DBA(11):回家后的安逸,晕晕乎乎醒了过来

    蓝的成长记——追逐DBA(12):七天七收获的SQL

    蓝的成长记——追逐DBA(13):协调硬件厂商,六个故事:所见所感的“服务器、存储、交换机……”

    蓝的成长记——追逐DBA(14):难忘的“云”端,起步的hadoop部署

    蓝的成长记——追逐DBA(15):以为FTP很“简单”,谁成想一波三折

    蓝的成长记——追逐DBA(16):DBA也喝酒,被捭阖了

    蓝的成长记——追逐DBA(17):是分享,还是消费,在后IOE时代学会成长

    蓝的成长记——追逐DBA(18):小机上WAS集群故障,由一次更换IP引起

    蓝的成长记——追逐DBA(19):路上的插曲:触碰“框架”与“软件系统”

    蓝的成长记——追逐DBA(20):何故缘起,建库护航

    其它篇章:

    足球与oracle系列(1):32路诸侯点兵,oracle32进程联盟 之A组巴西SMON进程的大局观

    足球与oracle系列(2):巴西揭幕战预演,oracle体系结构杂谈

    足球与oracle系列(3):oracle进程排名,世界杯次回合即将战罢!

    足球与oracle系列(4):从巴西惨败于德国,想到,差异的RAC拓扑对比!

    足球与oracle系列(5):fifa14游戏缺失的directX库类比于oracle的rpm包!

    足球与oracle系列(6):伴随建库的亚洲杯——加油中国队

    展开全文
  • <Excel> 数据分析excel常用函数

    万次阅读 多人点赞 2018-10-23 17:12:42
    本文整理了用excel数据分析时的几种常用函数: 简单函数(包含加总、计数、平均、最值、排序、乘积、除余、取整) 逻辑函数(包含if、iferror、and、or) 文本函数(包含文本提取、文本查找、文本替换、文本转换及...

    目录

    简单函数

    逻辑函数

    文本函数

    引用与查找函数


    本文整理了用excel数据分析时的几种常用函数:
    简单函数(包含加总、计数、平均、最值、排序、乘积、除余、取整)
    逻辑函数(包含if、iferror、and、or)
    文本函数(包含文本提取、文本查找、文本替换、文本转换及合并)
    引用与查找函数(vlookup、hlookup、lookup、indirect、index、match)

    简单函数

    1.加总求和函数

    ①sum(number1,[number2],……)
    sum(数值1,数值2,……)
    → 计算单元格区域中所有数值的和
    例:求下表中报名总人数?
    1.png-18.7kB

    ②sumif(range,criteria,[sum_range])
    sumif(条件区域,条件,求和区域)
    *[sum_range]参数不输入时,默认[sum_range]=range
    →对满足条件的单元格求和
    例:求下表中录取人数超过4000的专业共有多少人?
    image_1cqe1j51c17ivdjq1rvt18gv1au51t.png-24.6kB

    ③sumifs(sum_range,criteria_1,criteria1,criteria_2,criteria2,……)
    sumifs(求和区域,条件区域1,条件1,条件区域2,条件2,……)
    →多条件单元格求和
    例:求下表中录取人数在2000到4000的专业,学费一共是多少?
    image_1cqe5djr7lv74sj1ue61gn4mle4j.png-28kB

    2.计数函数

    ①count(value1,[value2],……)
    count(要计数的单元格区域)
    →仅计算所选区域中包含数值的单元格个数
    例:求下表中共有多少个专业?
    3.png-18.8kB

    ②counta(value1,[value2],……)
    counta(要计数的单元格区域)
    →计算所选单元格中非空格的个数
    例:求下表中共有多少个专业?
    image_1cqe6icv643h3ac10pe1tbb83t11.png-23.3kB

    ③countif(range,criteria)
    countif(计数区域,条件)
    →计算所选区域中满足条件的单元格数目
    例:求下表中录取人数超过4000的专业有几个?
    4.png-20.5kB

    ④countifs(criteria_range1,criteria1,criteria_range2,criteria2,……)
    countifs(条件区域1,条件,条件区域2,条件,……)
    →用于计算所选区域中同时满足多条件的单元格数目
    例:求下表中录取人数不超过4000,学费超过8000的专业有几个?
    5.png-22.4kB

    ⑤countblank(range)
    countblank(计算区域)
    →计算所选区域中空单元格的数目
    例:求下表中报名人数未录入的专业个数?
    6.png-19.1kB

    3.平均函数

    ①average(number1,[number2],……)
    average(数值1,数值2,……)
    →计算参数的算术平均值
    例:求下表中的平均学费是多少?
    1.png-17.2kB

    ②averagea(value1,[value2],……)
    averagea(计算的区域)
    →计算所选区域非空单元格的算术平均值
    *参数可以是文本,计算时文本&False值相当于0,True值相当于1
    例:求下表中的平均成绩是多少?
    2.png-12.2kB

    ③averageif(range,criteria,[average_range])
    averageif(条件区域,条件,求值区域)
    **[average_range]参数不输入时,默认[average_range]=range
    →求满足条件的单元格平均数
    例:求下表中录取人数大于2000的平均学费是多少?
    image_1cqf18ecuk581k6q1di91ia0sgj21.png-22.8kB

    ④averageifs(average_range,criteria_1,criteria1,criteria_2,criteria2,……)
    sumifs(求值区域,条件区域1,条件1,条件区域2,条件2,……)
    →多条件单元格的算术平均值
    例:求下表中报名人数大于10000,录取人数大于2000的平均学费?
    image_1cqf1hlql1akb168o1jd91flr15as2e.png-26.5kB

    4.最值函数

    max/min(number1,[number2],……)
    max/min(计算区域)
    →求所选单元格中数值的最大值/最小值(不含文本)
    例:求下表中最高的学费?
    7.png-17.3kB

    5.排序函数
    rank(number,ref,[order])
    rank(排序的目标数值,区域,逻辑值)
    *逻辑值如果输入0或者不输入时,为降序排列(数值越大,排名越靠前);
    逻辑值输入非0时,为升序排列(数值越大,排名越靠后)
    →求某数值在一列数字中相较于其他数字的大小排名
    例:求下表中最热门的专业?
    image_1cqf22pli1sou1simbi31ev385i2r.png-20.5kB
    排序得排名第一的计算机专业为最热门专业

    6.乘积函数
    product(number1,[number2],……)
    product(数值1,数值2,……)
    →计算所有参数的乘积
    例:求下表中每专业的总收入是多少?
    image_1cqf2fdbqft61ie9ie12874gh38.png-25.8kB

    6.除余函数
    mod(number,divisor)
    mod(被除数,除数)
    →得到两数相除的余数
    例:求下表中获奖人数是否可以平分奖学金?
    image_1cqf3naai9hfnde1nq51pra1rr53l.png-18.2kB
    得出值(余数)为0,平分,值不为0,不能平分

    7.取整函数
    int(number)
    int(数值)
    →将数值向下舍入取整
    * INT函数是取整函数;不进行四舍五入,而是直接去掉小数部分取整;处理负数时小数位向上进位
    例:求下表工资需要发多少张100元现金?
    image_1cqf7ie531en5pm73ar1er03aq9.png-10.4kB

    8.判断单元格是否为空
    isblank(value)
    isblank(要判断的对象)
    →检查是否引用了空单元格,返回true或false
    例:根据成绩记录查看某生是否缺考
    3.png-13.1kB
    解读:isblank返回为空值,则为缺考,否则显示考试成绩

    逻辑函数

    ①if(logical_test,value_if_true,value_if_false)
    if(计算条件的表达式或值,满足条件返回true,否则返回false)
    →根据指定条件来判断其“真”(TRUE)、“假”(FALSE),根据逻辑计算的真假值,从而返回相应的内容。可以使用函数 IF 对数值和公式进行条件检测
    例:根据业绩评定考核等级
    1.png-19.5kB

    ②iferror(value, value_if_error)
    iferror(检查是否存在错误的参数,公式的计算结果为错误时要返回的值)
    →如果公式的计算结果为错误,返回指定的值;否则将返回公式的结果。使用 IFERROR 函数来捕获和处理公式中的错误
    例:检测下表A列数值除以B列数值的正确性
    2.png-9.2kB

    ③and(logical1,logical2, ...)
    and(条件值1,条件值2,……)
    →所有参数的逻辑值为真时,返回TRUE;只要有一个参数的逻辑值为假,则返回 FALSE
    例:找出以下成本低于80万,业绩大于100万的营销人员
    3.png-19.9kB
    计算得满足条件的营销人员为李四

    ④or(logical1,logical2, ...)
    and(条件值1,条件值2,……)
    →在其参数组中,任何一个参数逻辑值为 TRUE,返回 TRUE;所有参数的逻辑值为 FALSE,才返回 FALSE
    例:找出以下成本低于50万,业绩大于100万的营销人员
    5.png-19.2kB
    计算得除张三外其他营销人员均满足条件

    文本函数

    1.文本提取

    ①left/right( string, n )
    left(区域,返回从左/右起始的几个字符)
    →用于从一个文本字符串的第一个字符开始返回指定个数的字符
    例:从以下诗句提取左边的7个字符
    image_1cqfhe6aef3566p4us1dqu10up27.png-11kB

    ②mid(text, start_num, num_chars)
    mid(提取的范围,提取的文本开始的位置,提取几个字符)
    →从一个字符串中截取出指定数量的字符
    例:从下面诗句中提取清泪2个字符
    6.png-11.5kB

    2.文本替换

    ①substitute(text,old_text,new_text,[instance_num])
    substitute(要替换的单元格,老文本,新文本,从第几个开始替换)
    →在某一文本字符串中替换指定的文本
    例:找出下面诗句中的“奈何”,然后替换成“不要”
    7.png-11kB

    ②replace(old_text, start_num, num_chars, new_text)
    replace(要替换的单元格,替换目标开始的位置,替换的字符数,新的文本)
    →在某一文本字符串中替换指定位置处的任意文本
    例:找出下面诗句中的“奈何”,然后替换成“不要”
    image_1cqfkkbjks4u1nff70r1cl8ip53.png-11.7kB

    3.文本查找
    ①find(find_text,within_text,[start_num])
    find(要查找的文本,搜索区域,起始搜索位置)
    →对原始数据中某个字符串进行定位,以确定其位置
    例:找到下列句子中"King"的位置
    image_1cqfl0orut8b1abu1bm49a617kn5g.png-8.2kB

    ②search(find_text,within_text,[start_num])
    search(要查找的文本,搜索区域,起始搜索位置)
    →可在第二个文本字符串中查找第一个文本字符串,并返回第一个文本字符串的起始位置的编号,该编号从第二个文本字符串的第一个字符算起
    例:找到下列句子中"King"的位置
    image_1cqflhlpk1sg4spn1jhm1haj1umj5t.png-9.1kB
    *search函数支持模糊查找,需搭配通配符“?”使用
    例:找到下列句子中"King"的位置
    image_1cqfll3cs3dcafk1gkq314h826a.png-9.3kB

    4.文本转换
    upper/lower(text)
    upper/lower(要转换的文本)
    →将文本字符串中的所有小写字母转换成大写字母/将文本字符串中的所有大写字母转换成小写字母
    例:将下列文本的小写字母转化为大写字母
    8.png-8.7kB

    5.文本合并
    concatenate(text1, [text2], ...)
    concatenata(要联接的第一个字符串,
    →将多个文本字符串合并为一个文本字符串
    例:上面表格中单元格的文字合成一个新的句子
    image_1cqfoc3ie36gvasjrrce4lk47j.png-10.8kB

    6.文本复制
    rept(text,number_times)
    rept(需要重复显示的文本,重复显示的次数)
    →按照定义的次数重复显示文本,相当于复制文本
    例:如下表,在"单元格条形图"用█表示数据
    1.png-6.9kB

    7.计算文本长度
    ①len(text)
    len(要计算字符长度的文本)
    →计算文本串的字符数
    例:判断如下表格中身份证号录入是否正确
    2.png-9.1kB
    计算得出李四的身份证号码长度为20,录入不正确

    引用与查找函数

    ①vlookup(lookup_value,table_array,col_index_num,[range_lookup])
    vlookup(查找的目标,对比的区域,参考值与对比值的列差,模糊查找/精确查找)
    →纵向查找函数,按列查找,最终返回该列所需查询列序所对应的值
    例:根据下图右表标准评定左表学员的等级
    3.png-19.2kB

    ②hlookup(lookup_value,table_array,row_index_num,[range_lookup])
    hlookup(查找的目标,对比的区域,参考值与对比值的行差,模糊查找/精确查找)
    →横向查找函数,按行查找,最终返回该行所需查询行序所对应的值
    例:根据下图上面表标准评定下面表格中学员的等级
    4.png-22.7kB

    *vlookup和hlookup函数中"range_lookup"参数输入为0时,表示精确查找,输入为1时,表示模糊查找

    ③lookup(lookup_value,lookup_vector,result_vector)
    lookup(要查找的值,查找的范围,要获得的值)
    →在指定区域内查询指定内容所对应的匹配区域内单元格的内容
    例:根据下图右表标准评定左表学员的等级
    image_1cqfvoehc1pjo89mi4s1p1a1o3ibo.png-26.8kB

    *当引用单元格的值大于匹配单元格的值时,会按匹配单元格最接近引用单元格的最大值来返回结果。
    如上图画圈所示,所以一般用时得小心使用,以免错误。

    ④indirect(ref_text,[a1])
    indirect(引用的单元格,引用的单元格包含的引用方式)
    →间接引用,立即对引用进行计算,并显示其内容
    当需要更改公式中单元格的引用,而不更改公式本身,可使用此函数。
    例:如下图示:
    5.png-14kB6.png-11.6kB
    indirect("A2") —— 加引号,文本引用——即引用A2单元格所在的文本
    indirect(E1) —— 不加引号,地址引用——即引用E1单元格对应单元格所在的文本

    ⑤match(lookup_value, lookup_array, match_type)
    match(要查找的单元格,含要查找值的连续单元格范围,查询的指定方式)
    →在指定区域内按指定方式查询与指定内容所匹配的单元格位置
    例:确定下图中“2012年”在第几列,"01数学"在第几行
    7.png-13.7kB

    *match函数的查询指定方式分三种:-1,0,1
    为1时,查找≤目标单元格的最大数值在查找范围中的位置,查找范围必须按升序排列。
    如果lookup_array的值均小于或等于lookup_value,则返回数组最后一个值的位置;如果lookup_array的值均大于lookup_value,则返回#N/A;
    为0时,查找=目标单元格的第一个数值,查找范围按任意顺序排列;
    为-1时,查找≥目标单元格的最小数值在查找范围中的位置,lookup_array必须按降序排列。
    如果lookup_array的值均大于或等于lookup_value,则返回数组最后一个值的位置;如果lookup_array的值均小于lookup_value,则返回#N/A。

    ⑥index(array,row_num,column_num)
    index(单元格区域,第几行,第几列)
    →返回特定行和列交叉处单元格的引用
    例:求下表中2012年数学专业的报名人数
    8.png-14.5kB

    展开全文
  • 一种用于时间序列操作的重要用法,是使用滑窗(sliding windown)或呈指数降低的权重(exponentially decaying weights),来时间序列进行统计值计算和其他一些函数计算。 这个对于消除噪声或有缺陷的数据是很有用...

    Moving Window Functions(移动窗口函数)

    一种用于时间序列操作的重要用法,是使用滑窗(sliding windown)或呈指数降低的权重(exponentially decaying weights),来对时间序列进行统计值计算和其他一些函数计算。 这个对于消除噪声或有缺陷的数据是很有用的。这里我们称之为Moving Window Functions(移动窗口函数),不过其中也包括了不适用固定长度窗口的函数(functions without a fixed-length window),比如指数加权移动平均数(exponentially weighted moving average)。和其他一些统计函数以后,这些函数也会自动无视缺失值。

    我们先加载一些时间序列数据并按工作日频度进行重采样:

    %matplotlib inline
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    close_px_all = pd.read_csv('../examples/stock_px_2.csv',
                               parse_dates=True, index_col=0)
    close_px = close_px_all[['AAPL', 'MSFT', 'XOM']]
    close_px = close_px.resample('B').ffill()
    close_px[:8]
    AAPL MSFT XOM
    2003-01-02 7.40 21.11 29.22
    2003-01-03 7.45 21.14 29.24
    2003-01-06 7.45 21.52 29.96
    2003-01-07 7.43 21.93 28.95
    2003-01-08 7.28 21.31 28.83
    2003-01-09 7.34 21.93 29.44
    2003-01-10 7.36 21.97 29.03
    2003-01-13 7.32 22.16 28.91

    rolling操作符

    接下面介绍rolling操作符,效果和resample及groupby一样。通过window(用于表示周期的数字),这个操作符可以在Series或DataFrame上调用:

    close_px.AAPL.plot()
    close_px.AAPL.rolling(250).mean().plot(figsize=(15, 8))

    这里写图片描述

    这里的rolling(250)和groupby的效果一样,但并不是直接进行分组,而是创建了一个新的对象,并在一个有250天的滑窗上进行了分组。所以这里对于苹果的股价,我们得到了一个250天移动窗口平均值(moving window average)。

    默认情况下滚动函数(rolling functions)需要窗口中所有的值不为NaN。如果有缺失值的话,我们会得到更少的windown周期:

    appl_std250 = close_px.AAPL.rolling(250, min_periods=10).std()
    appl_std250[5:12]
    2003-01-09         NaN
    2003-01-10         NaN
    2003-01-13         NaN
    2003-01-14         NaN
    2003-01-15    0.077496
    2003-01-16    0.074760
    2003-01-17    0.112368
    Freq: B, Name: AAPL, dtype: float64
    
    appl_std250.plot(figsize=(15, 8))

    这里写图片描述

    # 在一个DataFrame上的每一列调用移动窗口函数
    close_px.rolling(60).mean().plot(logy=True, figsize=(15, 8))  # logy=True 表示Y轴标记允许缩放

    这里写图片描述

    rolling_mean = close_px.rolling('20D').mean()
    print(rolling_mean.head())
    print(rolling_mean.tail())
                    AAPL       MSFT        XOM
    2003-01-02  7.400000  21.110000  29.220000
    2003-01-03  7.425000  21.125000  29.230000
    2003-01-06  7.433333  21.256667  29.473333
    2003-01-07  7.432500  21.425000  29.342500
    2003-01-08  7.402000  21.402000  29.240000
                      AAPL       MSFT        XOM
    2011-10-10  389.351429  25.602143  72.527857
    2011-10-11  388.505000  25.674286  72.835000
    2011-10-12  388.531429  25.810000  73.400714
    2011-10-13  388.826429  25.961429  73.905000
    2011-10-14  391.038000  26.048667  74.185333
    

    expanding操作符

    为了计算扩张窗口平均(expanding window mean),我们要使用expanding操作符,而不是用rolling。这个扩张平均的时间窗口是从时间序列开始的地方作为开始,窗口的大小会逐渐递增,直到包含整个序列。一个扩张窗口平均在时间序列上的计算像下面这样,我们拿整个数据来做例子

    expanding_mean = close_px.expanding().mean()
    expanding_mean.plot(figsize=(15, 8))

    这里写图片描述

    指数权重函数

    另一个用相同权重计算固定窗口大小的方法是指定一个常数衰减因子(constant decay factor),把更多的权重给最近观测到的数据上。有很多方法可以指定衰减引子,一种方法是用span,生成的结果与滑动窗口函数是有可比性的,当然,窗口大小与span的大小要一致。

    因为一个指数权重统计方法会把更大的权重基于最近观测到的数据上,这种方法带来的变化比平均权重方法要快很多。

    pandas有一个ewm操作符,可以与rolling和expanding一起使用。这里有一个例子,在设置EW移动平均(moving average)为span=60的情况下,比较苹果股价的60天移动平均:

    aapl_px = close_px.AAPL['2006':'2007']
    ma60 = aapl_px.rolling(30, min_periods=20).mean()    # rolling方法
    ewma60 = aapl_px.ewm(span=30).mean()                 # ewm方法
    
    ma60.plot(style='b--', label='Simple MA', figsize=(15, 8))
    ewma60.plot(style='r-', label='EW MA', figsize=(15, 8))
    plt.legend()

    这里写图片描述

    二元移动窗口函数

    一些统计计算符,比如相关性和协方差,需要在两个时间序列上进行计算。例如,经济分析通常喜欢比较一只股票与基础指数标普500之间的相关性。我们先计算一下时间序列的百分比变化:

    spx_px = close_px_all['SPX']
    spx_rets = spx_px.pct_change()  # 相邻两数百分比
    returns = close_px.pct_change()

    在我们调用rolling后,corr聚合函数会去计算spx_rets的滚动相关性(rolling correlation)

    corr = returns.AAPL.rolling(125, min_periods=100).corr(spx_rets)
    corr.plot(figsize=(15, 8))

    这里写图片描述

    假设我们想要一次计算很多股票与标普500指数的相关性。写一个循环,创建一个新的DataFrame虽然简单但是重复性高,所以我们可以传入一个Series和DataFrame,然后用rolling_corr这样的函数来计算每一列与Series的相关性(在这里例子里,Series指的是spx_rets)

    corr = returns.rolling(125, min_periods=100).corr(spx_rets)
    corr.plot(figsize=(15, 8))

    这里写图片描述

    用户自定义的移动窗口函数

    在rolling上使用apply或其他一些方法,可以在自己设计的移动窗口上应用函数。唯一需要满足的是,在数组的每一个片段上,函数必须产生单个值。例如,如我们想要用rolling(...).quantile(q)计算样本分位数,我们可能对于某个特定值的分位数排名感兴趣。scipy.stats.percentileofscore函数就是用来做这个的:

    from scipy.stats import percentileofscore
    
    score_at_2percent = lambda x: percentileofscore(x, 0.02)
    result = returns.AAPL.rolling(250).apply(score_at_2percent)
    result.plot(figsize=(15, 8))

    这里写图片描述

    展开全文
  • python 一组list数据进行区间划分,按照大小排序并返回索引值:一、一组纬度数据进行排序:二、将lat数据按照10为区间进行排序并统计每个区间存在的个数: 最近在海洋数据进行处理时,对数据需要进行一些...
  • 数据分析常用Excel函数

    千次阅读 2018-04-05 10:31:16
    Rank (number,ref,[order])同Rank.EQ(number,ref,[order]):返回某数字在一列数字中相对于其他数值的大小排名,如果多个数值排名相同,则返回该组数值的最佳排名 Number:要找到其排位的数字。 Ref:数字列表的数组...
  • OVER():指定分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变而变化 CURRENT ROW:当前行current row nPRECEDING:往前n行数据n preceding nFOLLOWING:往后n行数据n following UNBOUNDED:起点...
  • 对于SQL语句的使用,我们知道怎样使用它的增删改查,但是如果遇到这样的查询需求时,怎样得到各部门工资排名前N名员工列表,环比如何计算,查找各部门每人工资占部门工资的百分比。对于这写类型的查询需求,传统的...
  • Excel表格中有一个名为“RANK”的函数,这个函数可以帮助用户对数据的数值大小进行排名(且会自动筛选重名),所显示的结果是有多少项目就显示多少项目,RANK函数是应用方法请看下文。如何利用RANK函数排名?平常生活...
  • oracle常用语句和常用函数详解 一、SQL分类 SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。 (一) 数据查询语言DQL 1、数据查询语言DQL基本结构是由SELECT子句,...
  • 浅谈hive常用窗口函数 目录 浅谈hive常用窗口函数 ...开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化。 常用窗口函数 over over() 通常与聚合函数共同使用,比如 coun
  • 开窗函数用于计算基于组的某种聚合值,并且每个组返回多行,但是group by 一个组只返回一行 over() 不加参数,窗口大小为所有行 over(partition by 字段) 窗口大小为所在分区的大小 over(partition by 字段 order...
  • 窗口函数一组值进行操作,不需要使用GROUP BY子句对数据进行分组,还能够在同一行中同时返回基础行的列和聚合列。举例来说,我们要得到一个年级所有班级所有学生的平均分,按照传统的写法,我们肯定是通过AVG...
  • SQL Server 开窗排名函数

    千次阅读 2014-06-25 11:32:09
    内容摘要: Transact-SQL提供了4个排名函数: RANK(),DENSE_RANK(),ROW_NUMBER(),NTILE(),下文是这4个函数进行的解释。 下面是这4个函数的解释:  RANK()  返回结果集的分区内每行的排名。行的排名是...
  • 一、Oracle--数据迁移备份。 oracle数据导入导出的方法: (1)、命令的方式导入与导出。 (2)、SQLPLUS导入,执行sql脚本(增删改)。 (3)、PL/SQL客户端导入与导出。 二、Oracle--case when 行转列。 三、Oracle...
  • over在聚合函数排名函数中的运用

    千次阅读 2013-05-03 14:08:47
    OVER子句  OVER子句用于为行为定义一个窗口(windows),以便进行特定的运算。可以把行的窗口简单地认为... 聚合函数的要点就是要一组值进行聚合,聚合函数传统上一直以GROUP BY查询作为操作的上下文。在前面的
  • 文章目录【1x00】NumPy 数学函数【1x01】三角函数【1x02】舍入函数 【1x00】NumPy 数学函数 【1x01】三角函数 在求三角函数时,会先将角度转化成弧度,在 NumPy 中的转化公式:角度 * numpy.pi/180 函数 描述 ...
  • over():跟在聚合函数后面,指定分析函数工作的数据窗口大小,决定了数据的聚合范围,默认范围是整个数据窗口,即所有行。可使用partition by将数据进行分组聚合;使用order by除了排序,还会改变聚合范围(从开始行...
  • sort函数

    万次阅读 多人点赞 2019-09-13 23:20:35
    一、简介 1、头文件:#include<... (2)要排序数组的最后一个数据元素的下一个地址 (3)排序方法,如果没有排序方法的话,默认从小到大排序 二、实例 1、sort函数实现数的排序 #include<...
  • over函数

    2017-01-06 15:41:20
    over函数指定了分析函数工作的数据窗口的大小,这个数据窗口大小可能会随着行的变化而变化 (开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化,举例如下:) 常见的搭配 与...
  • 在日常工作中,数据统计是工作中最重要的一部分。今天把Excel中最常用的统计函数整理了出来,共16个。为了方便同学们理解,选取的全是贴近应用的示例。 1、Count 函数 作用:统计数字的个数 示例:使用公式生成...
  • Oracle常用分析函数   1.1简单指标函数: SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 ...COUNT :一组内发生的事情进行累积计数 1.2简单应用函数: RA...
  • “用过sql中的row_number函数,习惯了他的方便,那么在pandas处理数据时,有没有类似的函数用来排序呢,当然也有,比如rank函数。” rank(axis=0,method='average',numeric_only=None, na_option='keep',...
  • 今日继续统计函数专题讲解的第六讲,讲解统计中的数据大小排序问题,涉及到的函数是LARGE函数和SMALL函数。两个函数今日我放在一起讲解,并结合实例来分析,以便读者能比较区别。一 LARGE函数:找出排在第几大的数字...
  • 文章目录ORACLE分析函数结合开窗函数分析函数结合开窗函数使用示例准备测试数据分析函数的朋友,开窗函数over()分析函数之评级函数示例:分析函数之报表函数LAG()、LEAD() 分析函数用于计算基于组的某种聚合值,它...
  • Tableau技巧(6):妙用Index函数来改变数据排序 哔哔、哔哔,QQ响了起来,阿达忙戴上眼镜看着屏幕 打开一看,原来是Tableau用户遇到了难题,希望得到帮助~ Tableau用户: 目前碰到了一些排序问题(如下图),地区...
  • ORACLE 函数

    千次阅读 2017-03-04 07:43:44
    张哥同步视频:https://edu.csdn.net/course/play/7940字符函数字符函数参数全部是字符类作为参数,字符函数返回值有的是varchar2类型的值,有的是number类型的值,返回number类型时,没有定义任何精度和刻度范围 表...
  • hive数据模型中包含内部表、外部表、分区表和桶表。 一、内部表 内部表也称为管理表。因为这种表,Hive会或多或少地空值数据的生命周期。Hive默认情况下回将这些表的数据存储在由配置项hive.metastore.warehouse....
  • 目录 数学函数 集合函数 类型转换函数 [官网地址] ...Hive内置函数汇总 ... 返回a四舍五入的BIGINT值 DOUBLE round(DOUBLE a, INT d) 返回DOUBLE型d的保留n位小数的DOUBL.
  • Hive窗口函数Over和排序函数Rank

    千次阅读 2018-08-13 20:33:39
    本文主要介绍hive中的窗口函数.hive中的窗口函数和sql中的窗口函数相类似,都是用来做一些数据分析类的工作,一般用于olap分析 概念 我们都知道在sql中有一类函数叫做聚合函数,例如sum()、avg()、max()等等,这类...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 32,217
精华内容 12,886
关键字:

对数据进行大小排名的函数是