Excel和Python,作為數據分析的主流工具,在從效率提升到數據商業化的整個過程中,都起到了重要作用。不管是在Excel中通過滑鼠點選實現,亦或是利用Python通過代碼實現,數據分析中的很多基礎功能都是相通的。
在數據量級大躍進的今天,對於從業者來說,熟練掌握用於數據處理的程式語言非常必要,通曉兩者可以更增競爭力。而藉助大家最為熟悉的Excel操作,對照學習相應的Python實現,可以幫助更快理解,輕鬆掌握。
都說Excel關鍵要掌握4個核心函數(vlookup,if,sum,sumif)和1個核心功能(數據透視表),本期我們就聚焦在廣受喜歡的數據透視表和VLOOKUP的操作。
1、數據透視表
使用數據透視表,可以快速匯總數據,進而進行進一步的分析。
例如,對於一張簡單的家庭開支列表,可以基於該列表製作數據透視表
1、Excel實現
使用數據透視表,在「插入」——「數據透視表」,選中需要創建數據透視表的數據。
我們可以看到如下界面:上半部分為數據透視表中的所有欄位,下半部分為數據透視表的選項,把上方的欄位拖入下方對應框中即可完成數據透視表。
這裡使用2018年國內上市公司管理層報酬統計數據為例,以「公司行業」為行標籤,「公司組織形式」為列標籤,對「年度報酬總額(萬元)」數據計算平均數,得到如下分類匯總和聚合計算。
2、Python實現
Python中數據透視表的實現原理與Excel類同,使用pandas庫中的pivot_table()方法。
data:要進行數據透視表操作的DataFrame對象
values:要進行值計算的列,對應Excel操作中「數值」框
index:行索引,對應Excel操作中「行標籤」框
columns:列名,對應Excel操作中「列標籤」框
aggfunc:設定對values要進行的計算類型
fill_value:對空值的填充值
margins:是否顯示合計列
dropna:是否刪除缺失值
margins_name:設置合計列的列名
當然,我們可以進行更多靈活操作,如對各類別的「前三名高管報酬總額」求中位數,對「年度報酬總額」求均值,這種對不同的值進行不同類型計算,可以通過aggfunc傳入字典(鍵為列名,值為計算方式)來設定。
2、VLOOKUP
實際工作中,我們經常會需要用到查找功能,VLOOKUP很多時候是Excel用戶學習的第一個查找函數,也是Excel最常使用的三個函數之一,被稱為Excel中的效率之王。它應用非常廣泛,比如可以將多表匹配、合併,達到對比、查漏等效果,甚至前段時間新誕生的xlookup也借著它的大名火了一把。
例如,在如下信息表中,我們可以查找到與ID號102完全匹配的姓氏,進行返回。
1、Excel實現
VLOOKUP這個名稱中,v為vertical豎直的意思,lookup即為查找,它實現的是縱向按列查找,返回該列所需查詢序列所對應的值。
函數表示:
即:VLOOKUP(你想要查找的內容, 要查找的範圍, 包含要返回的值的區域中的列號, 返回近似或精確匹配)
這裡我們繼續使用2018年國內上市公司管理層報酬統計數據,需要查找指定的10家上市公司名稱、年度報酬總額、前三名董事報酬總額,及前三名高管報酬總額。在Excel中,就可使用VLOOKUP函數實現,如L2的名稱數據,是以J2為要進行查找的關鍵字,查找範圍為A2:H3594,返回列數為2(表示查找範圍的第2列,即「名稱」),匹配模式為FALSE(表示精確匹配)而得到。
2、Python實現
Python中有多種方法可以實現該操作,推薦使用pandas庫中的merge()函數,它是全功能、高性能的連接操作,在習慣上非常類似於SQL等關係資料庫。
left:參與合併的左側DataFrame
right:參與合併的右側DataFrame
how:合併方式,為inner,outer,left,right其中之一
on:用於連接的列名,必須存在於左右兩側數據
left_on:左側DataFrame中用作連接鍵的列
right_on:右側DataFrame中用作連接鍵的列
left_index:將左側的行索引用作其連接鍵
right_index:將右側的行索引用作其連接鍵
sort:根據連接鍵對合併後的數據進行排序
通過how進行設置的合併方法,主要取決於merge操作的目的:
若只需要查找到指定的10家上市公司數據,則可採用左連接,以放在左側的avgs數據為基準;
若主要想對右側salary數據中的3593家上市公司管理層報酬數據進行分析,僅是將已有的員工人均薪酬數據加入,則可考慮使用右連接;
若想保留同時出現在左右兩側的數據,則可考慮使用內連接,取鍵的交集;
若想將左右兩側數據都進行保留,則可考慮使用外連接,取鍵的併集。
除了使用on指定連接鍵,我們也可將代碼設置為index,通過index作為連接鍵進行匹配