该篇笔记由木东居士提供学习小组、资料
描述性统计的概念很好理解,在日常工作中我们也经常会遇到需要使用描述性统计来表述的问题。以下,我们将使用Python实现一系列的描述性统计内容。
有关python环境的安装就次略过。
本次数据集由数据科学家联盟提供,https://pan.baidu.com/s/1lXAnyvSoti-U44MU2fubgw。
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/102151709