第四章 數據處理
上次我們了解了數據處理第一步數據清洗,這次我們進入數據加工
對于經過數據分析后的數據字段,并不能滿足我們的數據分析需求,所以需要對現有的字段抽取,計算或轉換形式成為我們分析需要的新字段
1.數據抽取:包括字段分列/字段合并/字段匹配
字段分列:如“姓名”分為“姓和名”
法1):菜單法:[數據]中的[數據工具]中的[分列]選擇[分隔符號]中的[下一步]完成
法2):函數法:有時,我們需要提取特定的幾個字符,或者其中的第幾個字符,這時就要用到left()和right()函數
left(text,[num_chars]):第一個參數表示要抽取的文本,第二個表示需要提取字符串左起多少個字符
right(text,[num_chars]):基本同上,就是從右起多少個字符
字段合并:有時我們需要抽取幾個數據列創建成為一個句子,比如要給用戶發送信函,這是就有大量用戶的信息要輸入,我們可以使用字段合并得到文本化的文字利用concatenate()函數
concatenate(text1,text2,...),比如我們表里A2=小王,B2=5次,(遲到5次)我們就可以使用concatenate(A2,“遲到”,B2,“次”),這樣就得到“小明遲到5次”的句子
字段匹配:要從其他數據表中獲取字段,比如想截取B中的字段“住址”到A中,我們可以使用vlookup()函數
vlookup(lookp_value, ? ?table_array, ? ?col_index_num, ? ?range_lookup)第一個參數表示要在表格或區域的第一列中查找的值,第二個表示查找區域,第三個表示希望返回的值的列號,第四個為布爾類型,為“1”表示近似匹配,為“0”表示精確匹配,一般使用為0
2.數據計算 ?:簡單計算/函數計算
簡單計算:有時我們需要的字段不能直接從表中獲得,要通過加減乘除計算得到,我想這里大家應該都很清楚
函數計算:平均值/求和/日期的加減法
這里主要說下日期的加減法:哭訴輸入當前日期,可以使用today()和now()還可以使用ctrl+;和ctrl+;再按空格接著按ctrl+shift+;這里公式可以插入動態時間,快捷鍵是靜態時間
我們經常會遇到需要日期增減的問題,例如我們希望通過添加兩周時間來調整一個項目的計劃日期,此時我們只需要用到+,-即可,但有時我們要對一個某年某月某日進行處理,可以用到date()函數 date(year(A2)+5,month(A2)-6,day(A2)+6);還可以使用dateif()計算工齡有時需要了解員工的工齡和某些信息的關系
date(start date,and_data,unit)第一個參數表示起始時間,第二個表示終止時間,unit有6種形式,Y整年,M整月,D整天,YD天數的差,YM月數的差,MD年數的差
3.數據分組
首先準備一個分組表,分組表里應該至少有字段“闕值”,“分組標識”,“備注(分組條件)”
使用vlookup()函數通過對分組表里闕值的查找,返回分組表中的分組標識字段
4.數據轉換:數據表的行列轉置/多選題幾種錄入方式之間的轉換
1)數據表的行列轉置
通過[選擇性粘貼]解決轉置,還可以選擇性粘貼格式,公式,甚至還能選擇數值將它們批量成負數或者對要粘貼的數和原數還可以進行加減乘除
選擇性粘貼法1)先復制好數據區域,[開始]中的[剪貼板]到[粘貼]中選擇[選擇性粘貼]
法2)ctrl+alt+v快捷鍵會彈出,勾選轉置
法3)直接復制,然后在粘貼出現的圖標種選擇轉置
2)多選題的錄入方式之間的轉換
前面說道過對于多選題我們使用“0”和“1”標識是否被選中(二分法),還可以通過對每個選項用數字表示,多重法,但是多重法在Excel里無法分析,所以要將多重轉化為二分
法1)使用if(isnumber(hlookup()),1,0),這里的hlookup()函數和vlookup()函數長得很像,其實功能上也很像,vlookup()是按列在指定區域查找,hlookup()函數是按行在指定區域查找
hlookup(lookp_value,? ? table_array,? ? col_index_num,? ? range_lookup)第一個參數表示要在表格或區域的第一行中查找的值,第二個表示查找區域,第三個表示希望返回的值的行號,第四個為布爾類型,為“1”表示近似匹配,為“0”表示精確匹配,一般使用為0,這里注意如果找到會返回你指定的行號,如果沒有找到會返回一個非數字
isnumber()函數很明顯字面上就是判斷是不是數,所以先使用isnumber(hlookup())判斷是否返回了數字從而判斷這一行里是否有該選項,再利用if()函數,如果是數字,則if()返回一個1,不是則返回一個0,這樣就發現選中的選項位置會放上1,未選中的會放上0,那把多重法轉化為二分法的目的就這樣達到了
法2)使用if(isnumber(search("t",區域)),1,0),這里使用search()直接在區域里查找“1”在嗎,在返回1,不在返回0,然后依次查找就能夠把多重轉為二分
但有時我們輸入的多個選項變量會在一個單元格里,如下圖,這是我們利用search()函數直接在單元格中查找
search(find_text,within_text,start_num),這里第一個參數表示要查找的字符串,第二個為要在哪個字符串中查,這里填要查的單元格就好,第三個參數指出從單元格中字符串的哪個位置開始找,它會返回要查找的字符串在原始字符串中首次出現的位置,(還是一個數字),也就是說找到就會返回一個數,找不到返回一個非數字
5.數據抽樣
分為普查和抽樣調查,一般公司都采用抽樣,這里使用一個rand()函數,產生隨機數函數,來選取隨機樣本
rand()產生[0,1]之間,rand()*a+b產生[b,a+b]之間的隨機數 ? ? int(rand()*a+b))這里int()表示取整,例如我們要在5000人里產生1000個隨機人做調查,這時使用隨機數函數,先給5000人編號,編好號后可以利用rand()在1000個單元格產生1000個[1,5000]的隨機數,從而找到要抽樣的人