數(shù)據(jù)分析常用的18個(gè)概念,終于有人講明白了!
[ 導(dǎo)讀 ]大多數(shù)情況下,數(shù)據(jù)分析的過(guò)程必須包括數(shù)據(jù)探索的過(guò)程。數(shù)據(jù)探索可以有兩個(gè)層面的理解:
- 一是僅利用一些工具,對(duì)數(shù)據(jù)的特征進(jìn)行查看;
- 二是根據(jù)數(shù)據(jù)特征,感知數(shù)據(jù)價(jià)值,以決定是否需要對(duì)別的字段進(jìn)行探索,或者決定如何加工這些字段以發(fā)揮數(shù)據(jù)分析的價(jià)值。字段的選取既需要技術(shù)手段的支撐,也需要數(shù)據(jù)分析者的經(jīng)驗(yàn)和對(duì)解決問(wèn)題的深入理解。
01 數(shù)值類(lèi)型
在進(jìn)行數(shù)據(jù)分析時(shí),往往需要明確每個(gè)字段的數(shù)據(jù)類(lèi)型。數(shù)據(jù)類(lèi)型代表了數(shù)據(jù)的業(yè)務(wù)含義,分為3個(gè)類(lèi)型:
1. 區(qū)間型數(shù)據(jù)(Interval)
數(shù)值型數(shù)據(jù)的取值都是數(shù)值類(lèi)型,其大小代表了對(duì)象的狀態(tài)。比如,年收入的取值,其大小代表了其收入狀態(tài)。
2. 分類(lèi)型數(shù)據(jù)(Categorical)
分類(lèi)型數(shù)據(jù)的每一個(gè)取值都代表了一個(gè)類(lèi)別,如性別,兩個(gè)取值代表了兩個(gè)群體。
3. 序數(shù)型數(shù)據(jù)(Ordinal)
和分類(lèi)型數(shù)據(jù)非常相似,每個(gè)取值代表了不同的類(lèi)別。但是,序數(shù)型的數(shù)據(jù)還有另外一層含義就是每個(gè)取值是有大小之分的。比如,如果將年收入劃分為3個(gè)檔次:高、中、低,則不同的取值既有類(lèi)別之分,也有大小之分。
如果不了解字段的實(shí)際業(yè)務(wù)含義,數(shù)據(jù)分析人員可能會(huì)出現(xiàn)數(shù)據(jù)類(lèi)型判斷失誤。比如字段的取值為“1”“2”“3”等,并不意味著是一個(gè)數(shù)值類(lèi)型,它的業(yè)務(wù)含義還可以是一個(gè)分類(lèi)型的字段,“1”“2”“3”分別代表了一個(gè)類(lèi)別,其大小沒(méi)有任何含義。所以,充分了解字段的含義是很重要的。
很多的數(shù)據(jù)分析工具會(huì)根據(jù)數(shù)據(jù)中的字段的實(shí)際取值,做出類(lèi)型的自動(dòng)判斷:如字符型的數(shù)據(jù),一般都認(rèn)定為分類(lèi)型數(shù)據(jù);如某個(gè)字段的所有取值只有“1”“2”“3”,則判斷其為分類(lèi)型變量,然后經(jīng)過(guò)用戶(hù)的再次判斷,其很可能是序數(shù)型變量。
不同的數(shù)據(jù)類(lèi)型,在算法進(jìn)行模型訓(xùn)練時(shí),處理和對(duì)待的方式是不同的。區(qū)間型數(shù)據(jù)是直接進(jìn)行計(jì)算的;分類(lèi)型數(shù)據(jù)是先將其轉(zhuǎn)換為稀疏矩陣:每一個(gè)類(lèi)別是一個(gè)新的字段,然后根據(jù)其取值“1”“0”進(jìn)行計(jì)算。
在很多場(chǎng)景下,人們習(xí)慣將分類(lèi)型數(shù)據(jù)和序數(shù)型數(shù)據(jù)統(tǒng)稱(chēng)為分類(lèi)型數(shù)據(jù),即數(shù)據(jù)類(lèi)型可以是兩個(gè):數(shù)值型數(shù)據(jù)(區(qū)間型數(shù)據(jù))和分類(lèi)型數(shù)據(jù)(分類(lèi)型數(shù)據(jù)和序數(shù)型數(shù)據(jù))。
02 連續(xù)型數(shù)據(jù)的探索
連續(xù)型數(shù)據(jù)的探索,其關(guān)注點(diǎn)主要是通過(guò)統(tǒng)計(jì)指標(biāo)來(lái)反映其分布和特點(diǎn)。典型的統(tǒng)計(jì)指標(biāo)有以下幾個(gè):
4. 缺失值
取值為空的值即為缺失值。缺失值比例是確定該字段是否可用的重要指標(biāo)。一般情況下,如果缺失率超過(guò)50%,則該字段就完全不可用。
在很多情況下,我們需要區(qū)別對(duì)待null和0的關(guān)系。Null為缺失值,0是有效值。這個(gè)區(qū)別很重要,要小心區(qū)別對(duì)待。例如,某客戶(hù)在銀行內(nèi)的某賬戶(hù)余額為null,意味著該客戶(hù)可能沒(méi)有該賬戶(hù)。但是如果將null改為0,則是說(shuō)用戶(hù)有該賬戶(hù),且賬戶(hù)余額為零。
5. 均值(Mean)
顧名思義,均值即平均值。其大小反映了整體的水平。一個(gè)數(shù)學(xué)平均成績(jī)是95分的班級(jí),肯定比平均成績(jī)是80分的班級(jí)的數(shù)學(xué)能力要好。
6. 最大值和最小值
最大值和最小值即每個(gè)數(shù)據(jù)集中的最大數(shù)和最小數(shù)。
7. 方差
方差反映各個(gè)取值距平均值的離散程度。雖然有時(shí)兩組數(shù)據(jù)的平均值大小可能是相同的,但是各個(gè)觀察量的離散程度卻很少能相同。方差取值越大,說(shuō)明離散程度越大。比如,平均成績(jī)是80分的班級(jí),其方差很小,說(shuō)明這個(gè)班級(jí)的數(shù)學(xué)能力比較平均:沒(méi)有多少過(guò)高的成績(jī),也沒(méi)有多少過(guò)低的成績(jī)。
8. 標(biāo)準(zhǔn)差
標(biāo)準(zhǔn)差是方差的開(kāi)方,其含義與方差類(lèi)似。
9. 中位數(shù)(Median)
中位數(shù)是將排序后的數(shù)據(jù)集分為兩個(gè)數(shù)據(jù)集,這兩個(gè)數(shù)據(jù)集分別是取值高的數(shù)據(jù)集和取值低的數(shù)據(jù)集。比如,數(shù)據(jù)集{3,4,5,7,8}的中位數(shù)是5,在5之下和5之上分別是取值低和取值高的數(shù)據(jù)集。數(shù)據(jù)集{2,4,5,7}的中位數(shù)應(yīng)當(dāng)是(4 + 5)/2=4.5。
10. 眾數(shù)(Mode)
眾數(shù)是數(shù)據(jù)集中出現(xiàn)頻率最高的數(shù)據(jù)。眾數(shù)最常用的場(chǎng)景是分類(lèi)型數(shù)據(jù)的統(tǒng)計(jì),但是其也反映了數(shù)值型數(shù)據(jù)的“明顯集中趨勢(shì)點(diǎn)的數(shù)值”。
均值、中位數(shù)、眾數(shù)的計(jì)算方式各有不同,假設(shè)有一組數(shù)據(jù):
1,2,2,3,4,7,9
- 均值:(1 + 2 + 2 + 3 + 4 + 7 + 9)/7=4
- 中位數(shù):3
- 眾數(shù):2
11. 四分位數(shù)(Quartile)
四分位數(shù),即用三個(gè)序號(hào)將已經(jīng)排序過(guò)的數(shù)據(jù)等分為四份,如表2-2所示。
表2-2 四分位的例子
第二四分位數(shù)(Q2)的取值和中位數(shù)的取值是相同的。
12. 四分位距(Interquartile Range,IQR)
四分位距通過(guò)第三四分位數(shù)和第一四分位數(shù)的差值來(lái)計(jì)算,即IQR=Q3-Q1。針對(duì)上表,其IQR=61-34=27。
四分位距是進(jìn)行離群值判別的一個(gè)重要統(tǒng)計(jì)指標(biāo)。一般情況下,極端值都在Q1-1.5×IQR之下,或者Q3 + 1.5×IQR之上。著名的箱形圖就是借助四分位數(shù)和四分位距的概念來(lái)畫(huà)的,如圖2-1所示。
圖2-1 箱形圖及IQR
箱形圖中的上下兩條橫線,有可能是離群值分界點(diǎn)(Q3 + 1.5×IQR或Q1-1.5×IQR),也有可能是最大值或最小值。這完全取決于最大值和最小值是否在分界點(diǎn)之內(nèi)。
13. 偏斜度(Skewness)
偏斜度是關(guān)于表現(xiàn)數(shù)據(jù)分布的對(duì)稱(chēng)性的指標(biāo)。如果其值是0,則代表一個(gè)對(duì)稱(chēng)性的分布;若其值是正值,代表分布的峰值偏左;若其值是負(fù)值,代表分布的峰值偏右。在圖2-2中給出了偏斜度的示例。
圖2-2 Skewness的含義
Skewness的絕對(duì)值(不論是正值還是負(fù)值)如果大于1是個(gè)很明顯的信號(hào),你的數(shù)據(jù)分布有明顯的不對(duì)稱(chēng)性。很多數(shù)據(jù)分析的算法都是基于數(shù)據(jù)的分布是類(lèi)似于正態(tài)分布的鐘型分布,并且數(shù)據(jù)都是在均值的周?chē)植?。如果Skewness的絕對(duì)值過(guò)大,則是另一個(gè)信號(hào):你要小心地使用那些算法!
不同的偏斜度下,均值、中位數(shù)、眾數(shù)的取值是有很大不同的:
圖2-3 眾數(shù)、均值及中位數(shù)在不同分布下的比較
由圖2-3可見(jiàn),在數(shù)據(jù)取值范圍相同的情況下,中位數(shù)是相同的。但是均值和眾數(shù)卻有很大的不同。所以,除了偏斜度指標(biāo)可以直接反映分布特征外,還可以通過(guò)中位數(shù)和均值的差異來(lái)判斷分布的偏斜情況。
- 中位數(shù)<均值:偏左分布
- 中位數(shù)、均值相差無(wú)幾:對(duì)稱(chēng)分布
- 中位數(shù)>均值:偏右分布
14. 峰態(tài)(Kurtosis)
標(biāo)準(zhǔn)正態(tài)分布的峰態(tài)的值是3,但是在很多數(shù)據(jù)分析工具中對(duì)峰態(tài)值減去3,使得:0代表是正態(tài)分布;正值代表數(shù)據(jù)分布有個(gè)尖尖的峰值,高于正態(tài)分布的峰值;負(fù)值代表數(shù)據(jù)有個(gè)平緩的峰值,且低于正態(tài)分布的峰值。
峰態(tài)指標(biāo)的主要作用是體現(xiàn)數(shù)值分布的尾巴厚度,尖峰對(duì)應(yīng)著厚尾,即Kurtosis大于0時(shí),意味著有一個(gè)厚尾巴。尖峰厚尾也就是說(shuō),在峰值附近取值較集中,但在非峰值附近取值較分散。圖2-4所示為一個(gè)峰態(tài)的例子。
圖2-4 峰態(tài)的例子
在連續(xù)型數(shù)據(jù)的探索中,需要重點(diǎn)關(guān)注的指標(biāo)首先是缺失率,然后是均值、中位數(shù)等指標(biāo),這些指標(biāo)能幫助數(shù)據(jù)分析者對(duì)數(shù)據(jù)的特征有很好的了解。偏斜度是另外一個(gè)非常重要的指標(biāo),但其絕對(duì)值接近1或大于1時(shí),必須對(duì)其進(jìn)行l(wèi)og轉(zhuǎn)換才能使用,否則該指標(biāo)的價(jià)值將大打折扣。
Python Pandas中DataFrame的describe方法默認(rèn)只統(tǒng)計(jì)連續(xù)性字段的最大值、最小值、均值、標(biāo)準(zhǔn)差、四分位數(shù),如果想獲取其他的特征值,需要調(diào)用相應(yīng)的函數(shù)來(lái)獲得。下面是一段示例代碼,其運(yùn)行結(jié)果通過(guò)表2-4來(lái)展示。
- List_of_series = [bank.var().rename('方差'),
- bank.median().rename('中位數(shù)'),
- bank.skew().rename('偏斜度'),
- bank.kurt().rename('峰態(tài)')]
- df = pd.DataFrame(list_of_series)
- mode = bank.mode(numeric_only=True).rename({0: '眾數(shù)'})
- pd.concat([df, mode])
▲表2-4 連續(xù)型變量數(shù)據(jù)探索示例代碼的運(yùn)行結(jié)果
03 分類(lèi)型數(shù)據(jù)的探索
分類(lèi)型數(shù)據(jù)的探索主要是從分類(lèi)的分布等方面進(jìn)行考察。常見(jiàn)的統(tǒng)計(jì)指標(biāo)有以下幾個(gè):
15. 缺失值
缺失值永遠(yuǎn)是需要關(guān)心的指標(biāo),不論是連續(xù)型數(shù)據(jù),還是分類(lèi)型數(shù)據(jù)。過(guò)多的缺失值,會(huì)使得指標(biāo)失去意義。
16. 類(lèi)別個(gè)數(shù)
依據(jù)分類(lèi)型數(shù)據(jù)中類(lèi)別的個(gè)數(shù),可以對(duì)指標(biāo)是否可用有一個(gè)大致的判斷。例如,從業(yè)務(wù)角度來(lái)看,某指標(biāo)應(yīng)當(dāng)有6個(gè)類(lèi)別,但實(shí)際樣本中只出現(xiàn)了5個(gè)類(lèi)別,則需要重新考慮樣本的質(zhì)量。再如,某個(gè)分類(lèi)型變量只有一個(gè)類(lèi)別時(shí),對(duì)數(shù)據(jù)分析是完全不可用的。
17. 類(lèi)別中個(gè)體數(shù)量
在大多數(shù)情況下,如果某些類(lèi)別中個(gè)體數(shù)量太少,如只有1%的比例,可以認(rèn)為該類(lèi)別是個(gè)離群值。關(guān)于分類(lèi)型變量離群值的研究比較多,但是如果脫離業(yè)務(wù)來(lái)談分類(lèi)型變量的離群值,是不妥當(dāng)?shù)摹?/p>
不平衡數(shù)據(jù)就是一個(gè)典型的與業(yè)務(wù)有關(guān)的例子。比如,從業(yè)務(wù)角度來(lái)看,購(gòu)買(mǎi)黃金的客戶(hù)只占銀行全量客戶(hù)的很小的一個(gè)部分,如果采取簡(jiǎn)單隨機(jī)抽樣的方式,“是否購(gòu)買(mǎi)”列的值將只有極少的“是”的取值。
但是,不能將“是”直接判斷為離群值,反而“是”有極其重要的業(yè)務(wù)含義。所以,數(shù)據(jù)分析者需要靈活地認(rèn)識(shí)和對(duì)待類(lèi)別中個(gè)體數(shù)量的問(wèn)題。
18. 眾數(shù)
和連續(xù)型數(shù)據(jù)的含義一樣,眾數(shù)是數(shù)據(jù)集中出現(xiàn)頻率最高的數(shù)據(jù)。比如,針對(duì)某個(gè)分類(lèi)型取值A(chǔ)、B、C、D中C的出現(xiàn)次數(shù)最多,則C就是眾數(shù)。
以下是一段分類(lèi)型變量數(shù)據(jù)探索示例代碼,其運(yùn)行結(jié)果通過(guò)表2-5來(lái)展示。
- bank.describe(include=[np.object])
表2-5 分類(lèi)型變量數(shù)據(jù)探索示例代碼的運(yùn)行結(jié)果
應(yīng)用Python Pandas的相關(guān)函數(shù)能夠非常容易得到分類(lèi)型變量的探索結(jié)果,表2-5所示就是數(shù)據(jù)探索示例代碼的運(yùn)行結(jié)果。