頻度分析-用一定的分類方法將數組分類,統計各分組下樣本數量,以圖表輔助,用更直觀的方式描述出數組的分布趨勢。
業務意義:在實際數據分析工作中,經常需要將數據按照某個維度分段進行指標統計,以發現問題和解決問題。
例子:一個班40個學生,考試成績如下:
[73,87,88,65,73,76,80,95,83,69,55,67,70,94,86,81,87,95,84,92,92,76,69,97,72,90,72,85,80,83,97,95,62,92,67,73,91,95,86,77]
集中趨勢
print('均值:'+str(round(np.mean(score),1)),'中位數:'+str(np.median(score)),'眾數:'+str(stats.mode(score)[0][0])) 均值:81.3 中位數:83.0 眾數:95
離散程度
print('最高分:'+str(max(score)),'最低分:'+str(min(score)),'極差:'+str(max(score)-min(score)),'四分位距:'+str( np.quantile(score,0.75)-np.quantile(score,0.25)),'方差:'+str(round(np.var(score),1)),'方差:'+str(round(np.std(score),1))) 最高分:97 最低分:55 極差:42 四分位距:18.5 方差:118.1 方差:10.9
- 最高分97,眾數為95說明學生分數在高分段集中,可反應試卷難度不高
- 最低分與均值相差81.3-55=26.5,偏差較大,該同學需要重點關注。
除了以上信息,若只依賴於基礎的數據指標,很難對數據做出全面的解讀。
數據頻度表-按照數據某些維度,將數組分段后進行統計。
bins = np.arange(55,101,5) #成績分段 bins = pd.cut(df,bins,include_lowest = True,right = False) bins_score = df.groupby(bins) bins_score.count() [55, 60) 1 [60, 65) 1 [65, 70) 5 [70, 75) 6 [75, 80) 3 [80, 85) 6 [85, 90) 6 [90, 95) 6 [95, 100) 6 dtype: int64
從上表中,可以直觀的發現,各分段的學生人數較為平均,說明此次考試並沒有拉開差距,形成兩級分化,另外部分同學分數較低,需要額外關注。
頻度直方圖
plt.hist(score,bins = 9) plt.show()
箱線圖
plt.boxplot(score) plt.show()
小結
在數據分析中,最重要的不是頻度分析方法,可是在頻度分析中體現的分類思想,將數據維度進行分段統計,更加直觀的觀察數據發現問題。
2020-04-15 01:54