统计学方法论1---------描述性统计分析

在这里插入图片描述

在这里插入图片描述

1、相关概念

数理统计:以概率论为基础,研究大量随机现象的统计规律性。

  • 描述统计
  • 推断统计

描述性统计:从总体数据中提取变量的主要信息(总和,均值等),从总体层面上,对数据进行统计性描述

2、统计量

2.1、频数与频率

  • 导入相关模块
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import load_iris
import warnings

sns.set(style='darkgrid')
plt.rcParams['font.family'] = 'SimHei'## 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False ## 用来正常显示负号
warnings.filterwarnings('ignore')
  • 获取鸢尾花数据
#鸢尾花
iris = load_iris()
#data代表每朵花的长度共150条,target代表花的类别,共三种每种50个
#sepal花萼petal花瓣
display(iris)

在这里插入图片描述
在这里插入图片描述

  • 处理数据,随机获取10行,并将type拼接到数组数据中
#取前十行
display(iris.data[:10],iris.target[:10])
#将花的长度信息与花类别拼接到一个数组
iris_data=np.concatenate((iris.data,iris.target.reshape(-1,1)),axis=1)
#display(iris_data)
#转换为DataFrame
df=pd.DataFrame(iris_data,columns=['sepal length','sepal width','petal length','petal width','type'])
display(df.sample(10))

在这里插入图片描述

  • 获取频数,计算频率
#获取频数,先取出该列,然后.value_counts()
frequency=df['type'].value_counts()
display(frequency)
#获取df的行数即有多少个鸢尾花数据,也可用print(df['type'].size)
print(len(df))
#获取频率
percentage=frequency*100/len(df)
display(percentage)
frequency.plot(kind='bar')

在这里插入图片描述

2.2、集中趋势

2.2.1、均值、中位数、众数

左偏分布:尾巴在左(极端值异常值在左)
右偏分布:尾巴在右(极端值异常值在右)
在这里插入图片描述
在这里插入图片描述

  • 分别计算平均数,中位数,众数
#分别求平均数,中位数,众数
mean=df['sepal length'].mean()
print(mean)
median=df['sepal length'].median()
print(median)
#借用value_counts(),默认降序
value=df['sepal length'].value_counts()
mode=value.index[0]
print(value.index[0])

在这里插入图片描述

  • 计算众数的简单方法,调用scipy中的stats模块
from scipy import stats
#结果放在一个数组中,众数可能有多个
stats.mode(df['sepal length']).mode

在这里插入图片描述

  • 根据三个结果,接近正态。画图验证,使用seaborn的distplot函数
#分布图,接近正态
sns.distplot(df['sepal length'])
#plt.axvline()  # 用于画出图形中的竖线
plt.axvline(mean,ls='-',color='r',label='均值')
plt.axvline(median,ls='-',color='g',label='中值')
plt.axvline(mode,ls='-',color='indigo',label='众数')
plt.legend()

在这里插入图片描述

2.2.2、四分位点

四分位值未必是元素的某个值
若不正好是元素值,那么需要使用加权的方式计算,以索引到分位点索引(该情况下为小数)距离的倒数作为权重比例,再乘以索引对应的元素值,即为计算后的四分位值

numpy和pandas都提供了分位点的计算方法

  • numpy计算四分位点,使用.quantile
x=[1,3,5,7,8,9,11]
print(np.quantile(x,[0.25,0.5,0.75]))
#计算2/8分位点
print(np.quantile(x,[0.2,0.8]))

在这里插入图片描述

  • pandas计算四分位点,使用.describe,其中参数percentiles=[0.2,0.8]可修改分位点
s=pd.Series(x)
print(s.describe())
#计算2/8分位点
print(s.describe(percentiles=[0.2,0.8]))

在这里插入图片描述

2.3、离散程度(极差,方差,标准差)

  • 极差
    一组数据中,最大值与最小值之差
  • 方差
    一组数据中,每个元素与均值偏离的大小
    在这里插入图片描述
  • 标准差
    方差的开方
    在这里插入图片描述
    在这里插入图片描述
#计算花萼长度的极值,方差,标准差
sub=max(df['sepal length'])-min(df['sepal length'])
#sub=df['sepal length'].max()-df['sepal length'].max()
print(sub)
#方差
var=df['sepal length'].var()
print(var)
#标准差
std=df['sepal length'].std()
print(std)

在这里插入图片描述

2.4、分布形状(偏度、峰度)

  • 偏度 df.skew()
    数据分布偏斜方向的程度的度量,描述了数据的非对称程度

    - 对称分布
    - 左偏,偏度<0
    - 又偏,偏度>0
    
#验证左偏分布的数据是否左偏
c1=np.random.randint(1,11,size=100)
c2=np.random.randint(11,21,size=500)
c3=np.concatenate([c1,c2])
left=pd.Series(c3)
print(left.skew())
##验证右偏分布的数据是否右偏
r1=np.random.randint(11,21,size=100)
r2=np.random.randint(1,11,size=500)
r3=np.concatenate([r1,r2])
right=pd.Series(r3)
print(left.skew())
#绘图,sns.kdeplotshade代表是否有阴影
sns.kdeplot(left,shade=True,label='左偏')
sns.kdeplot(right,shade=True,label='右偏')
#图例的位置,可修改local参数
plt.legend()

在这里插入图片描述

  • 峰度
    描述总体中所有取值分布形态陡缓程度的统计量,可理解为高矮程度,比较是相对于标准正态分布的
    - 峰度>0,比正态分布密集,方差小,更高更瘦
    - 峰度<0,比正态分布分散,方差大,更矮更胖

ps:numpy.random.normal(loc=0.0, scale=1.0, size=None)正态分布

loc:float概率分布的均值,对应着整个分布的中心center   
scale:float概率分布的标准差,对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高 
size:int or tuple of ints输出的shape,默认为None,只输出一个值

#numpy.random.normal(loc=0.0, scale=1.0, size=None)正态分布
standard=pd.Series(np.random.normal(0,1,size=10000))
print(standard.kurt(),standard.std())
print(df['sepal width'].kurt(),df['sepal width'].std())
print(df['petal length'].kurt(),df['petal length'].std())
sns.kdeplot(standard,shade=True,label='标准正态')
sns.kdeplot(df['sepal width'],shade=True,label='标准正态')
sns.kdeplot(df['petal length'],shade=True,label='标准正态')

在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值