• 数据分析-excel基础篇


    清洗处理类

    主要针对文本、格式以及脏数据的清洗和转换。

    Trim

    用于清除掉字符串两边的空格。

    MySQL有同名函数,Python有近似函数strip。

    =TRIM(目标单元格)
    

    Concatenate

    合并单元格中的内容,还有另一种合并方式是& 。”我”&”很”&”帅” = 我很帅。当需要合并的内容过多时,concatenate可提高单元格合并的效率。

    MySQL有近似函数concat。

    =Concatenate(单元格1,单元格2……)
    

    Replace

    替换掉单元格的字符串,清洗使用较多。

    MySQL中有同名函数,Python中有同名函数。

    =Replace(指定字符串,哪个位置开始替换,替换几个字符,替换成什么)
    

    Substitute 

    和replace接近,区别是替换为全局替换,没有起始位置的概念。

    =Substitute(要替换的文本,旧文本,新文本,[替换第几个])
    
    =Substitute(要替换的文本,旧文本,新文本,[替换第几个])
    

    Left/Right/Mid

    截取字符串中的字符。Left/Right(指定字符串,截取长度)。left为从左,right为从右,mid如上文示意。

    MySQL中有同名函数。

    =Mid(指定字符串,开始位置,截取长度)                         #MId默认向右截取
    

     Len/Lenb

    返回字符串的长度。

    在len中,中文计算为一个,在lenb中,中文计算为两个。

    MySQL中有同名函数,Python中有同名函数

    =Len("我")                    >>> 1
    =LenB(“我”)                   >>> 2
    

    Find

    查找某字符串出现的位置,可以指定为第几次出现,与Left/Right/Mid结合能完成简单的文本提取
    MySQL中有近似函数 find_in_set,Python中有同名函数

    语法:
    
    =Find(find_text,within_text,start_num)      
    
    Find_text 是要查找的字符串;
    Within_text 是包含要查找关键字的单元格;
    Start_num 指定开始进行查找的字符数。
    
    注意事项:
    
    若find_text为空文本,则Find函数返回1;
    若within_text无find_text或start_num不大于0或start_num大于within_text长度,则Find函数返回错误值#VALUE!;
    find_text中不能包含通配符(*或?)。
    应用:
      
    A2=“广东省东莞市东城区…”   =FIND("省",A2)【默认start_num为1】    >>>3
    A2=“广东省东莞市东城区…”   =FIND("东",A2,3)               >>>4,start_num是3会跳过前3个字符,因此返回值为4
    

    Search

    和Find类似,区别是:Find区分大小写,Search不区分大小写且支持*通配符,用法与Find函数类似。

    Text

    将数值转化为指定的文本格式,可以和时间序列函数一起看

    语法:
    
    =Text(值,数值格式)
    
    应用:
    
    销售人员    业绩
    小李      2000     =A2&"本月业绩为:"&Text(B2,"$0.00")   >>>小李本月业绩为:2000美元
    

      

    关联匹配类

    Lookup

    返回向量或数组中的数值。

    函数 LOOKUP 的向量形式是在单行区域或单列区域(向量)中查找数值,然后返回第二个单行区域或单列区域中相同位置的数值;

    语法:
    
    = LOOKUP(lookup_value,lookup_vector,result_vector)
      lookup_value—函数LOOKUP在第一个向量中所要查找的数值,它可以为数字、文本、逻辑值或包含数值的名称或引用;
      lookup_vector—只包含一行或一列的区域l,可以为文本、数字或逻辑值;
      result_vector—只包含一行或一列的区域,其大小与 lookup_vector 相同。
    
    =Lookup(查找的值,值所在的位置,返回相应位置的值)
    

    函数 LOOKUP 的数组形式在数组的第一行或第一列查找指定的数值,然后返回数组的最后一行或最后一列中相同位置的数值。

    语法:
    
    = LOOKUP(lookup_value,array)
     array—包含文本、数字或逻辑值的单元格区域或数组,它的值用于与 lookup_value 进行比较
    

    Vlookup

    功能是按列查找,最终返回该列所需查询列序所对应的值。

    =Vlookup(要查找的值,要查找的区域,返回数据在查找区域的第几列数,匹配方式)
    

    Index

    返回表或区域中的值或对值的引用。

    数组形式:

    语法:
    
    =Index(array,row_num,column_num)                #Array是一个单元格区域或数组常量
    =Index(查找的区域,区域内第几行,区域内第几列)
    

    引用形式:

    语法:
    
    =Index(reference,row_num,column_num,area_num)            
      Reference是对一个或多个单元格区域的引用;
      Area_num用于选择要从中返回 行和列的交叉点的引用区域。
    

    Match

    MATCH函数用途:

    1.确定列表中某个值的位置;

    2.对某个输入值进行检验,确定这个值是否存在某个列表中;

    3.判断某列表中是否存在重复数据;

    4.定位某一列表中最后一个非空单元格的位置。

    注意事项:MATCH函数不区分大小写。

    语法:
    
    =Match(lookup_value, lookup_array, match_type)
    
      lookup_value:需要在数据表(lookup_array)中查找的值
      lookup_array:可能包含有所要查找数值的连续的单元格区域,区域必须是某一行或某一列,即必须为一维数据,引用的查找区域是一维数组。
      match_type:表示查询的指定方式,用数字-1、0或者1表示
              
             为1时,查找小于或等于lookup_value的最大数值在lookup_array中的位置,lookup_array必须按升序排列
             为0时,查找等于lookup_value的第一个数值,lookup_array按任意顺序排列
             为-1时,查找大于或等于lookup_value的最小数值在lookup_array中的位置,lookup_array必须按降序排列
    
    
    =Match(需要查找的字符,被查找的区域,匹配类型)
    

    Row

    返回单元格所在的行

    Column

    返回单元格所在的列

    Offset

    OFFSET函数的功能为以指定的引用为参照系,通过给定偏移量得到新的引用。返回的引用可以为一个单元格单元格区域。并可以指定返回的行数或列数。

    语法:
    
    =Offset(指定点,偏移多少行,偏移多少列,返回多少行,返回多少列)
    
    应用:(空白工作表里进行)
    
    公式                说明(结果)
    
    =Offset(C3,2,3,1,1)            显示F5单元格中的值(0)
    =Sum(Offset(C3:E5,-1,0,3,3))      对数据区域C2:E4,求和(0)
    =Offset(C3:E5,0,-3,3,3)        返回错误值#REF!,因为引用区域不在工作表中
    

    逻辑运算类

    逻辑运算返回的均是布尔类型,True和False。

    IF

    根据逻辑计算返回相应的值

    MySQL中有同名函数,Python中有同名函数

    语法:
    
    =If(logical_test,value_if_true,value_if_false) 
    

    And

    全部参数为True,则返回True,经常用于多条件判断。

    MySQL中有同名函数,Python中有同名函数。

    语法:
    
    =And(logical1,logical2, ...)
    
    语法:
    
    =And(logical1,logical2, ...)  

    Or

    只要参数有一个True,则返回Ture,经常用于多条件判断。

    MySQL中有同名函数,Python中有同名函数。

    语法:
    
    =Or(logical1,logical2, ...) 
    

    IS系列

    常用判断检验,返回的都是布尔数值True和False。常用ISERR,ISERROR,ISNA,ISTEXT,可以和IF嵌套使用。

    常用IS系列函数及功能:
    
    =ISBLANK(value)             #ISBLANK 值为空白单元格。
    =ISERR(value)               #ISERR 值为任意错误值(除去 #N/A)。
    =ISERROR(value)             #ISERROR 值为任意错误值(#N/A、#VALUE!、#REF!、#DIV/0!、#NUM!、#NAME? 或 #NULL!)。
    =ISLOGICAL(value)            #ISLOGICAL 值为逻辑值。
    =ISNA(value)                #ISNA 值为错误值 #N/A(值不存在)。
    =ISNONTEXT(value)           #ISNONTEXT 值为不是文本的任意项(注意此函数在值为空白单元格时返回 TRUE)。
    =ISNUMBER(value)             #ISNUMBER 值为数字。
    =ISREF(value)                 #ISREF 值为引用。
    =ISTEXT(value)               #ISTEXT 值为文本。
    

    计算统计类

    常用的基础计算、分析、统计函数,以描述性统计为准。

    Sum/Sumif/Sumifs

    统计满足条件的单元格总和,SQL有中同名函数。

    MySQL中有同名函数,Python中有同名函数。

    SUM函数语法:
    
    =SUM(number1,number2, ...)
    
    SUMIF函数语法:
    
    =SUMIF(range,criteria,sum_range)
    SUMIF 函数可以对报表范围中符合指定条件的值求和
    
    SUMIFS函数语法:  
    
    =SUMIFS(sum_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)
    该函数可快速对多条件单元格求和
      criteria_range1为计算关联条件的第一个区域
      criteria1为条件1,条件的形式为数字、表达式、单元格引用或者文本,可用来定义将对criteria_range1参数中的哪些单元格求和
      criteria_range2为计算关联条件的第二个区域
      criteria2为条件2。和 3) 均成对出现。最多允许127个区域、条件对,即参数总数不超255个
      sum_range 是需要求和的实际单元格
    

    Count/Countif/Countifs

    统计满足条件的字符串个数

    MySQL中有同名函数,Python中有同名函数。

    Count函数语法:
    
    =Count(value1,value2, ...)
    将把数值型的数字计算进去;但是错误值、空值、逻辑值、文字则被忽略
    
    Countif函数语法:
    
    =Countif(range,criteria)
        参数:range 要计算其中非空单元格数目的区域
        参数:criteria 以数字、表达式或文本形式定义的条件
    
    对指定区域中符合指定条件的单元格计数的一个函数
    
    Countif函数用法:
    
    1.求各种类型单元格的个数
      (1) 求真空单元格个数:=COUNTIF(数据区,"=")
      (2) 非真空单元格个数: =COUNTIF(数据区,"<>") 相当于counta()函数
      (3) 文本型单元格个数: =COUNTIF(数据区,"*") 假空单元格也是文本型单元格
      (4) 区域内所有单元格个数: =COUNTIF(数据区,"<>"""),如果数据区内有",该公式不成立.
      (5) 逻辑值为TRUE的单元格数量 =COUNTIF(数据区,TRUE)
    
    2.求大于或小于某个值的单元格个数
      (1) 大于50=COUNTIF(数据区,">50")
      (2) 等于50=COUNTIF(数据区,50)
      (3) 小于50 =COUNTIF(数据区,"<50")
      (4) 大于或等于50 =COUNTIF(数据区,">=50")
      (5) 小于或等于50 =COUNTIF(数据区,"<=50")
      (6) 大于E5单元格的值 =COUNTIF(数据区,">"&$E$5)
      (7) 等于E5单元格的值 =COUNTIF(数据区,$E$5)
      (8) 小于E5单元格的值 =COUNTIF(数据区,"<"&$E$5)
      (9) 大于或等于E5单元格的值 =COUNTIF(数据区,">="&$E$5)
      (10) 小于或等于E5单元格的值 =COUNTIF(数据区,"<="&$E$5)
    
    3.等于或包含某N个特定字符的单元格个数
      (1) 两个字符 =COUNTIF(数据区,"??")
      (2) 两个字符并且第2个是B=COUNTIF(数据区,"?B")
      (3) 包含B =COUNTIF(数据区,"*B*")
      (4) 第2个字符是B =COUNTIF(数据区,"?B*")
      (5) 等于“你好”=COUNTIF(数据区,"你好")
      (6) 包含D3单元格的内容 =COUNTIF(数据区,"*"&D3&"*")
      (7) 第2字是D3单元格的内容 =COUNTIF(数据区,"?"&D3&"*")
      
    
      注:countif()函数对英文字母不区分大小写,通配符只对文本有效
    
    4.两个条件求个数
      (1)>10并且<=15 =SUM(COUNTIF(数据区,">"&{10,15})*{1,-1})
      (2)>=10并且<15 =SUM(COUNTIF(数据区,">="&{10,15})*{1,-1})
      (3)>=10并且<=15 =SUM(COUNTIF(数据区,{">=10",">15"})*{1,-1})
      (4)>10并且<15 =SUM(COUNTIF(数据区,{">10",">=15"})*{1,-1})或者=SUM(COUNTIF(数据区,{">10","<15"}))-样本数
    
    
      补充:三个区域计数: 三个区域中>=60 =SUM(COUNTIF(INDIRECT({"a46:a48","b48:b50","c47:c48"}),">=60"))
      补充:(集合运算法)
      统计范围,比如5<= x <=7
      可以分解为(x>=5)-(x>7)
      写为函数:
      =countif(range,">=5")-countif(range,">7")
    
    Countifs函数语法:
    
    =Countifs(criteria_range1,criteria1,criteria_range2,criteria2,…)
      参数说明
      criteria_range1:为第一个需要计算其中满足某个条件的单元格数目的单元格区域(简称条件区域),
      criteria1为第一个区域中将被计算在内的条件(简称条件),其形式可以为数字、表达式或文本
      用来计算多个区域中满足给定条件的单元格的个数,可以同时设定多个条件
    

    Max

    返回数组或引用区域的最大值

    MySQL中有同名函数,Python中有同名函数。

    Min

    返回数组或引用区域的最小值

    MySQL中有同名函数,Python中有同名函数。

    Rank

    排序,返回指定值在引用区域的排名,重复值同一排名。

    SQL中有近似函数row_number() 。

    语法:
    
    =rank(number,ref,[order])
      number 为需要求排名的那个数值或者单元格名称(单元格内必须为数字);
      ref 为排名的参照数值区域;
      order的为0和1,默认不用输入,得到的就是从大到小的排名,若是想求倒数第几,order的值请使用1。
    
    用法:
    
    假设:A列从A1单元格开始,数据依次为:80、98、65、79、65
    
    B1中编辑公式:=RANK(A1,$A$1:$A$5,0)
    回车确认,下拉至B5单元格
    效果:
    从B1单元格起依次返回值为2、1、4、3、4
    

    Rand/Randbetween

    常用随机抽样,前者返回0~1之间的随机值,后者可以指定范围。

    MySQL中有同名函数。

    Averagea

    求平均值,也有Averageaif,Averageaifs

    MySQL中有同名函数,python有近似函数mean。

    Quartile

    计算四分位数,比如1~100的数字中,25分位就是按从小到大排列,在25%位置的数字,即25。参数0代表最小值,参数4代表最大值,1~3对应25、50(中位数)、75分位

    Stdev

    求标准差,统计型函数

    Substotal

    汇总型函数,将平均值、计数、最大最小、相乘、标准差、求和、方差等参数化。

    Int/Round

    取整函数,int向下取整,round按小数位取数。

    round(3.1415,2) =3.14 ;

    round(3.1415,1)=3.1

    时间序列类

    专门用于处理时间格式以及转换。

    Year

    返回日期中的年

    MySQL中有同名函数。

    Month

    返回日期中的月

    MySQL中有同名函数。

    Weekday

    返回指定时间为一周中的第几天,参数为1代表从星期日开始算作第一天,参数为2代表从星期一开始算作第一天(中西方差异)。我们中国用2为参数即可。

    MySQL中有同名函数。

    Weeknum

    返回一年中的第几个星期,后面的参数类同weekday,意思是从周日算还是周一。

    MySQL中有近似函数 week。

    Day

    返回日期中的日(第几号)

    MySQL中有同名函数。


    Date

    时间转换函数,等于将year(),month(),day()合并

    MySQL中有近似函数 date_format。

    Now

    返回当前时间戳,动态函数

    MySQL中有同名函数。

    Today

    返回今天的日期,动态函数

    MySQL中有同名函数。

    Datedif

    日期计算函数,计算两日期的差。参数决定返回的是年还是月等。

    MySQL中有近似函数 DateDiff。

    语法:
    
    =DATEDIF(start_date,end_date,unit)
        Start_date 为一个日期,它代表时间段内的第一个日期或起始日期。(起始日期必须在1900年之后)
        End_date 为一个日期,它代表时间段内的最后一个日期或结束日期。
        Unit 为所需信息的返回类型。
        
        Unit取值:
    
        "Y" 时间段中的整年数。
        "M" 时间段中的整月数。
        "D" 时间段中的天数。
        "MD" 起始日期与结束日期的同月间隔天数。 忽略日期中的月份和年份。
        "YD" 起始日期与结束日期的同年间隔天数。忽略日期中的年份。
        "YM" 起始日期与结束日期的间隔月数。忽略日期中年份
    
    用法:
    
    =DATEDIF(A1,TODAY(),"Y")计算年数差
    =DATEDIF(A1,TODAY(),"M")计算月数差
    =DATEDIF(A1,TODAY(),"D")计算天数差
    

      

      

      

      

      

      

     

      

  • 相关阅读:
    UVa中国麻将(Chinese Mahjong,Uva 11210)
    Nginx-upstream模块
    Nginx-配置文件
    Nginx 负载均衡和反向代理实践
    Nginx-1
    linux下发送报警邮件(mailx)
    dns服务器搭建
    linux 时间相关
    Centos7调整swap分区
    rm 删除命令
  • 原文地址:https://www.cnblogs.com/loser1949/p/8019448.html
Copyright © 2020-2023  润新知