zoukankan      html  css  js  c++  java
  • 数据分析-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")计算天数差
    

      

      

      

      

      

      

     

      

  • 相关阅读:
    二分图最大匹配的K&#246;nig定理及其证明
    HDOJ 2389 Rain on your Parade
    HDOJ 1083 Courses
    HDOJ 2063 过山车
    POJ 1469 COURSES
    UESTC 1817 Complete Building the Houses
    POJ 3464 ACM Computer Factory
    POJ 1459 Power Network
    HDOJ 1532 Drainage Ditches
    HDU 1017 A Mathematical Curiosity
  • 原文地址:https://www.cnblogs.com/loser1949/p/8019448.html
Copyright © 2011-2022 走看看