該篇筆記由木東居士提供學習小組、資料python
描述性統計的概念很好理解,在平常工做中咱們也常常會遇到須要使用描述性統計來表述的問題。如下,咱們將使用Python實現一系列的描述性統計內容。學習
有關python環境的安裝就次略過。spa
本次數據集由數據科學家聯盟提供,https://pan.baidu.com/s/1lXAnyvSoti-U44MU2fubgw。.net
import pandas as pd import numpy as np import matplotlib.pyplot as plt %matplotlib inline data = pd.read_excel(r'C:\Users\user\Desktop\描述性.xlsx',encoding='UTF-8') data = data.iloc[:20]
集中趨勢
# 計算平均值 # 法一 print("算術平均數:%.2f" %data.mean())
算術平均數:4.40
# 計算平均值 # 法二:幾何平均數 data['data'] = data['data'].astype(int) s = 1 for i in data['data']: s = i * s print("幾何平均數:%.2f" %np.sqrt(s)) 幾何平均數:351941.81
# 衆數 # 法一: print("衆數爲:%d," %data.mode().iloc[0]) 衆數爲:4, #衆數 # 法二 from scipy.stats import mode mode_num = mode(data) print("衆數爲:%d, 衆數的個數爲:%d,"%(mode_num[0][0], mode_num[1][0])) 衆數爲:4, 衆數的個數爲:4,
# 中位數 # 法一: print("中位數:%d" %data.median()) 中位數:4 # 中位數 # 法二 print("中位數:%d" %np.percentile(data,50)) 中位數:4 # 中位數 # 法三 print("中位數:%d" %data.quantile(.50)) 中位數:4
離散趨勢
# 方差 # 法一: print("方差:%d" %data.var()) 方差:6 # 方差 # 法二: s = 0 for i in data['data']: s = (i - data.mean())**2 + s print("方差:%d" %(s/(len(data)-1))) 方差:6
# 標準差 # 法一 print("標準差:%d" %data.std()) 標準差:2 # 標準差 # 法二: print("標準差:%d" %np.sqrt(s/(len(data)-1))) 標準差:2
# 極差 data.max() - data.min() data 9 dtype: int32
# 平均絕對離差 M = 0 for i in data['data']: M += abs(i - data.mean()) print(M/len(data)) data 2.04 dtype: float64
# 上四分位數 # 法一 np.percentile(data,75) 6.0 # 上四分位數 # 法二 data.quantile(.75) data 6.0 Name: 0.75, dtype: float64
# 下四分位數 # 法一 data.quantile(.25) data 2.0 Name: 0.25, dtype: float64 # 下四分位數 # 法二: np.percentile(data,25) 2.0
# 四分位差 np.percentile(data,75) - np.percentile(data,25) 4.0
# 離散係數 data.std()/data.mean() data 0.582476 dtype: float64
分佈的形狀
# 偏度 from scipy import stats stats.skew(data['data']) 0.4264951788847028
# 峯度 stats.kurtosis(data['data']) -0.5821005917159772
# 歸納性信息 data.describe() data count 20.000000 mean 4.400000 std 2.562893 min 1.000000 25% 2.000000 50% 4.000000 75% 6.000000 max 10.000000
參考連接:https://blog.csdn.net/qq_43315928/article/details/102151709excel