?作者?|?leo
早于90年代初巫糙,數(shù)據(jù)透視的概念就被提出,主要的應(yīng)用場景是處理大量數(shù)據(jù)的交互式匯總查詢焰望,它實現(xiàn)了行或列的移動骚亿,使得行可以移到列上,列移到行上熊赖,從而根據(jù)使用者的訴求取對關(guān)注的數(shù)據(jù)子集進行排序来屠,分組,篩選震鹉,匯總等等俱笛,它以強大而靈活的數(shù)據(jù)查詢方式被廣泛推廣開來,人們可以自定義計算公式传趾,展開或者折疊需要關(guān)注的結(jié)果數(shù)據(jù)集迎膜,查看數(shù)據(jù)摘要信息。
今天我們討論的是兩個均有數(shù)據(jù)透視功能的工具浆兰,也是時下最為常見和流行的數(shù)據(jù)分析工具:Excel和Python磕仅,希望能夠通過本文讓您加深對數(shù)據(jù)透視的理解和使用。文中也會在合適的地方講二者進行對比簸呈,希望能對讀者有一定啟發(fā)榕订。
首先我們來介紹下Excel中的數(shù)據(jù)透視表的使用方法。
01 Excel數(shù)據(jù)透視簡介
數(shù)據(jù)源的基本要求:
Excel使用的數(shù)據(jù)源是有一定的格式要求的蜕便,并非任何數(shù)據(jù)都能夠直接進行數(shù)據(jù)透視劫恒,這點來說,python對數(shù)據(jù)的選擇則更為靈活轿腺。
●?數(shù)據(jù)源首行需要是標題行
如果沒有標題行两嘴,則在后面的字段匯總就會產(chǎn)生問題,因此這是首要條件族壳。
●?不能包含空行和空列
因為透視表的數(shù)據(jù)截取是以空行和空列作為停止的條件的憔辫。
●?不能包含空的單元格
數(shù)據(jù)透視主要是對數(shù)值型進行匯總、文本型計數(shù)仿荆,空的單元格會對匯總結(jié)果產(chǎn)生影響螺垢。
●?不能包含合并單元格
合并的單元格會導致讀取失敗。
●?不能包含同類字段
02 數(shù)據(jù)透視表使用方法
創(chuàng)建數(shù)據(jù)透視表
下面介紹如何快速建立數(shù)據(jù)透視表赖歌,首先通過ctrl+shift+?和ctrl+shift+向左箭頭選中數(shù)據(jù)區(qū)域,然后單擊菜單欄下的插入-數(shù)據(jù)透視表功茴,在彈出框中選擇透視表的位置是在新的工作表還是現(xiàn)有工作表的某個區(qū)域庐冯,位置欄旁邊的箭頭用于設(shè)定區(qū)域。
新生成的透視表允許我們對不同的字段進行各種數(shù)學匯總坎穿,只需要將不同的維度字段拖入對應(yīng)的欄目中即可展父,比如查看不同月份返劲、季度的銷量、銷售額情況可以將銷售日期字段拖入行中栖茉,將銷售數(shù)量拖入值中篮绿,并選擇加和匯總。
數(shù)據(jù)刷新
Excel數(shù)據(jù)透視表使用的是緩存數(shù)據(jù)吕漂,當數(shù)據(jù)源有更新時亲配,并不會自動刷新數(shù)據(jù),需要手動刷新數(shù)據(jù)源惶凝,根據(jù)改動類型分為:數(shù)據(jù)變動吼虎,數(shù)據(jù)區(qū)域變動。
數(shù)據(jù)變動
指的是在現(xiàn)有的數(shù)據(jù)區(qū)域內(nèi)苍鲜,對數(shù)據(jù)做了改動思灰,需要在透視表上面進行更新』焯希可以通過手動刷新洒疚,可以通過點擊透視表選項下的刷新按鈕自動更新數(shù)據(jù)。
數(shù)據(jù)區(qū)域變動
指的是有新的數(shù)據(jù)添加坯屿,此時數(shù)據(jù)區(qū)域發(fā)生了變化油湖,無法通過手動刷新數(shù)據(jù)來實現(xiàn)數(shù)據(jù)的更新。此時愿伴,可以通過刷新按鈕旁邊的【更改數(shù)據(jù)源】選項肺魁,重新選擇數(shù)據(jù)區(qū)域來實現(xiàn)。
數(shù)據(jù)分組
數(shù)值和文本分組
如果我們想將不同年齡段的人群進行分組隔节,不同姓氏的人群分組鹅经,這時就需要應(yīng)用到數(shù)值和文本分組了。
如下圖怎诫,屬于文本型分組瘾晃,需要選擇需要的字段,連續(xù)字段直接圈選幻妓,非連續(xù)字段可以使用ctrl鍵蹦误。
對于數(shù)值型分組,由于數(shù)值是有規(guī)律的肉津,因此選擇創(chuàng)建組之后會自動進行分組强胰。
日期分組
在透視表上面右擊日期項,根據(jù)需要的時間頻度進行選擇妹沙。
常用的值顯示方式
Excel透視表提供值顯示方式偶洋,可以滿足多種不同的數(shù)據(jù)對比和數(shù)據(jù)構(gòu)成計算分析。
下面介紹常用的幾種計算方式:
●?總計的百分比
每個數(shù)據(jù)占所在行列總和的百分比
●?行/列總百分比
每個數(shù)據(jù)占所在行或列所有項總和的百分比
●?百分比
根據(jù)某個字段完成百分比對比計算
●?父行匯總百分比
每個數(shù)據(jù)項占該列父級項總和的百分比
●?父級匯總百分比
每個數(shù)據(jù)項占該列和行父級項總和的百分比
●?差異百分比
每個字段與固定被選取字段的差百分比
03 切片的使用
切片器是Excel2010引入的新功能距糖,它提供了更為強大的數(shù)據(jù)交互能力玄窝,比起單純的數(shù)據(jù)篩選牵寺,使用更加流暢和靈活。
多表聯(lián)動篩選
使用前提
Excel2013版本以上恩脂,使用同一份數(shù)據(jù)源建立的透視表才能進行多表聯(lián)動帽氓。
使用方法
在透視表選項卡下選擇插入切片器,然后選擇要呈現(xiàn)的字段俩块,切片器會自動將數(shù)據(jù)加載到切片窗口黎休。
設(shè)置多表聯(lián)動,右擊切片器窗口典阵,選擇報表鏈接奋渔,就可以選擇切片器關(guān)聯(lián)的透視表了。
3.1 Python數(shù)據(jù)透視功能簡介
Python的數(shù)據(jù)透視功能主要通過pivot_table()函數(shù)實現(xiàn)壮啊,接下來主要介紹它的相關(guān)使用嫉鲸。
pivot_table()函數(shù)參數(shù)介紹
在python中,主要通過pandas里面pivot_table()函數(shù)來進行數(shù)據(jù)透視歹啼,讓我們首先了解下該方法的主要參數(shù)功能:
完整的pivot_table()表達式如下
pd.pivot_table(data,?values=None,?index=None,?columns=None,?aggfunc='mean',?fill_value=None,?margins=False,?dropna=True,?margins_name='All')
●?data
數(shù)據(jù)源dataframe對象
●?index
指定分組的列,相當于行索引
pt?=?pd.pivot_table(p_data,index=['銷售日期'])
●?values
需要進行聚合運算的數(shù)值字段
pt?=?pd.pivot_table(p_data,index=['銷售日期'],values=['銷售數(shù)量'])
●?aggfunc
指定聚合方法玄渗,默認求和,既可以使用字典的形式對不同字段進行不同的運算方法狸眼,也可以對同個字段進行不同的運算方法藤树,同時也可以使用自定義函數(shù)來作為聚合方法運算。
pt?=?pd.pivot_table(p_data,index=['銷售日期'],values=['銷售數(shù)量'],aggfunc=[np.mean,len])
●?columns
添加列索引拓萌,更細化的展示數(shù)據(jù)的匯總情況
pt?=?pd.pivot_table(p_data,index=['銷售日期'],columns=['產(chǎn)品名稱'],?values=['銷售數(shù)量'],aggfunc=[np.mean,len])
●?fill_value
用于填充缺失值
pt?=?pd.pivot_table(p_data,index=['銷售日期'],fill_value=0,columns=['產(chǎn)品名稱'],?values=['銷售數(shù)量'],aggfunc=[np.mean,len])
通過了解pivot_table()函數(shù)的基本參數(shù)岁钓,可以發(fā)現(xiàn),通過index和columns參數(shù)微王,能夠自由的選取不同字段進行Excel當中的行列互換匯總計算屡限,比如百分比的計算,我們可以通過自定義函數(shù)炕倘,添加到aggfunc參數(shù)中钧大,應(yīng)用到所有相關(guān)字段。
高級透視功能
一旦通過上述設(shè)置得到透視數(shù)據(jù)后罩旋,就可以使用高級透視功能進行數(shù)據(jù)過濾啊央。
比如想查看Manger字段是Debra Henley下的所有數(shù)據(jù)
pt.query('Manager?==?["Debra?Henley"]')
篩選status(狀態(tài))是"pending"和"won"的數(shù)據(jù)信息
pt.query('Status?==?["pending","won"]')
通過以上展示,可以發(fā)現(xiàn)Excel在處理數(shù)據(jù)透視方便具有更好的交互性和數(shù)據(jù)呈現(xiàn)能力涨醋,缺點是數(shù)據(jù)的匯總相對比較固定瓜饥,不具備更多的靈活度,因此對于數(shù)據(jù)分析并不復雜的應(yīng)用場景浴骂,選擇Excel比較合適压固。
而Python在處理數(shù)據(jù)透視方面,計算能力和字段的靈活組合方面遠遠勝于Excel靠闭,因此如果需要復雜的數(shù)據(jù)透視功能帐我,可以通過python來實現(xiàn)。
此外愧膀,python相較于Excel透視更為強大的一點是python的時間處理功能拦键,也就是時間序列的處理,對于金融從業(yè)者來說檩淋,python的時間序列處理能夠更為精細化的展示數(shù)據(jù)透視結(jié)果芬为,限于篇幅不做進一步展開。