結合pandas學習《極簡統計學》。第一章《用頻數分布表和直方圖刻畫數據的特征》練習。
理論
根據原始數據什么也搞不明白,所以使用統計。
“統計”的手法,就是從原始數據,也就是“原始的現實”中,抽取出分布的特征和特點的方法。
統計學使用的方法叫“壓縮”,是指“將作為數據列舉的大量數字,以一定的基準進行整理,只抽取有意義的信息”。大致有以下兩種手法:
- 以圖化捕捉其特征。
- 以一個數字來代表特征。此數字叫做“統計量”。
做頻數分布圖,首先需要做頻數分布表,步驟如下:
- 找到數據中的最大值和最小值;
- 分組:按最大值、最小值劃分范圍;
- 決定“組值”:一般選擇中間的數值;
- 數出各組中的數據數——“頻數”;
- 計算“相對頻數”,即各組的頻數占全體的比例,相對頻數相加等于1;
- 計算“累計頻數”,即頻數合計,累計頻數最終與全部數據數一致。
做直方圖的步驟:
- 在橫軸上以等間距放置組值;
- 在各組值上做柱形,柱的高度參考其組值所屬分組的頻數。
練習
題目
女大學生體重數據如下,請做頻數分布表和直方圖:
48, 54, 47, 50, 53, 43, 45, 43, 44, 47,
58, 46, 46, 63, 49, 50, 48, 43, 46, 45,
50, 53, 51, 58, 52, 53, 47, 49, 45, 42,
51, 49, 58, 54, 45, 53, 50, 69, 44, 50,
58, 64, 40, 57, 51, 69, 58, 47, 62, 47,
40, 60, 48, 47, 53, 47, 52, 61, 55, 55,
48, 48, 46, 52, 45, 38, 62, 47, 55, 50,
46, 47, 55, 48, 50, 50, 54, 55, 48, 50
頻數分布
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
weights = np.array([
48, 54, 47, 50, 53, 43, 45, 43, 44, 47,
58, 46, 46, 63, 49, 50, 48, 43, 46, 45,
50, 53, 51, 58, 52, 53, 47, 49, 45, 42,
51, 49, 58, 54, 45, 53, 50, 69, 44, 50,
58, 64, 40, 57, 51, 69, 58, 47, 62, 47,
40, 60, 48, 47, 53, 47, 52, 61, 55, 55,
48, 48, 46, 52, 45, 38, 62, 47, 55, 50,
46, 47, 55, 48, 50, 50, 54, 55, 48, 50])
sections = [35,40,45,50,55,60,65,70]
group_names = ['36~40','41~45','46~50','51~55','56~60','61~65','66~70']
cuts = pd.cut(weights,sections,labels=group_names)
計算頻數:
counts = pd.value_counts(cuts)
dict(counts)
{'36~40': 3,
'41~45': 11,
'46~50': 33,
'51~55': 19,
'56~60': 7,
'61~65': 5,
'66~70': 2}
直方圖
cuts.value_counts().plot(kind='bar')
直方圖