python统计分析——单变量数据统计作图

本文介绍了使用Python进行统计分析的基本步骤,包括导入必要的库,数据准备,以及如何创建散点图、直方图、核密度估计图、累计频率、误差条图、箱线图、小提琴图、分组条形图和饼图。作者详细展示了如何使用matplotlib和seaborn库实现这些图表的绘制。

参考资料:python统计分析-托马斯

1、导入库和数据准备

# 导入库
# 用于数值处理的库
import numpy as np
import pandas as pd
import scipy as sp
from scipy import stats
# 用于绘图的库
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()

# 数据准备
x=np.random.randn(500)

2、散点图

        这是单变量数据最简单的展示方法,只要绘制出每个单独的点即可。相应的绘图命令如下:

# 实现代码一
plt.plot(x,'.')

# 实现代码二
plt.scatter(np.arange(len(x)),x)

        注意:如果出现x轴只有少数离散值的情况(比如,第一组、第二组和第三组),那么将重叠的数据点稍微分散开(也叫作“增加抖动”)将会有助于展示每个数据点

3、直方图

        直方图提供了数据分布的一个很好的概览。如果除以总的数据点个数,便可得到相对频率直方图;如果只是将每个区间的顶部中点连起来,我们会得到一个相对频率的多边形。

plt.hist(x,bins=25)

直方图的绘制可参考:

python统计分析——直方图(sns.histplot)_sns.histplot函数-CSDN博客

python统计分析——直方图(plt.hist)-CSDN博客

4、核密度(kde)估计图

        直方图有一个缺点,它是非连续的,并且它的形状严格取决于区间的宽度。为了活的平滑的概率密度,也就是描述一个事件在给定区间内被发现的可能性,我们可以使用核密度估计的方法。因此,正态分布被用作典型的核。核函数的宽度决定了平滑的程度。为了了解这是如何运作的,我们用下列6个数据点来构建直方图和核密度估计:

x=[-2.1,-1.3,-0.4,1.9,5.1,6.2]

        对于直方图来说,首先水平轴被分割为覆盖数据范围的小区间。下图中,我们有6个宽度为2的区间。当有一个数据点落在某个区间内时,我们放一高度为1/12的箱子。如果不止一个数据点落入一个区间,我们就把箱子逐个堆起来。

       对于核密度估计来说,我们对每一个数据点x,都放置一个方差为2.25的正态分布核。将核加起来形成核密度的估计。和离散的直方图相比较,核密度估计明显更加平滑。

        核密度估计能够更快地收敛至潜在的连续型随机变量的密度。 作图代码可写为

sns.kdeplot(x)

        核的窗宽h是一个决定我们在多大程度上来平滑掉每个事件的贡献的参数。在特定条件下,h的最佳选择可以认为是:

h=(\frac{4\hat{\sigma}^5}{3n})^{\frac{1}{5}}\approx 1.06 \hat{\sigma}n^{-1/5}

其中,\hat{\sigma}是样本的标准偏差(西尔弗曼的经验法则)

5、累计频率

        累计频率曲线表示的是低于某一特定值的数据的数量(或百分比)。该曲线对统计分析非常有帮助,比如当我们想知道包含所有值的95%的数据范围时。累计频率在比较两组或多组个体的值的分布情况时也非常有用。

        当使用百分比点位的时候,累计频率还有个额外的好处,就是它有界:

0\leqslant cumfreq(x)\leqslant 1

x=np.random.randn(500)
plt.rcParams['font.family']='SimHei'   # 用于设置图片正常显示中文
plt.plot(stats.cumfreq(x)[0])
plt.ylabel('累计频率')  # 设置纵坐标轴标题
plt.xlabel('数据值')  # 设置横坐标轴标题

6、误差条图

        在比较数值的度量时,误差条图是展示均值和变异度的常用方法。值得注意的是,误差条图必须显式说明到底是标准差还是标准误。使用标准误有一个很好的特性:当基于标准误的两组误差条之间有重叠时,我们可以确定两组之间的均值没有统计学差异(p>0.05),反之则不一定成立。

index=np.arange(5)
y=index**2
errorBar=index/2  # 只是为了演示而非真实误差值
plt.errorbar(index,y,yerr=errorBar,fmt='o',capsize=5,capthick=3)

6、箱形图

        箱形图经常在学术刊物中使用,用来表示两组或多组的数值。箱子的地图和顶部分别表示第一分位数和第三分位数,而箱子内部中间的线表示中位数。值得注意的是上下须,存在着不同的习惯用法。最常见的形式是,下面的须在第一分位数外1.5×IQR(四分位距)范围内的最低值,而上面的须表示在第三分位数外1.5×IQR(四分位距)范围内的最高值;离群值(在上下须之外)被单独绘制,这也是检验离群值的一种方法。另一个习惯用法是,须表示整个数据的范围。

plt.boxplot(x,sym='*')

        箱形图可以和核密度估计图联合起来绘制,生成小提琴图,其中纵轴和箱线图一样,但在水平方向上额外绘制了对称的核密度估计图。

# 准备数据
nd=stats.norm  # nd为标准正态分布总体
data=nd.rvs(size=(100))  # 从nd中抽取100个数据

nd2=stats.norm(loc=3,scale=1.5)  # nd2为均值为3,标准差为1.5的正态分布总体
data2=nd2.rvs(size=(100))  # 从nd2中抽取100个数值

# 绘制小提琴图
plt.rcParams['axes.unicode_minus']=False  # 设置坐标轴负号正常显示
df=pd.DataFrame({
    'Girls':data,'Boys':data2
})
sns.violinplot(df)

作图参考:

python统计分析——小提琴图(sns.violinplot)-CSDN博客

python统计分析——小提琴图(plt.violinplot)_plt violin-CSDN博客

python统计分析——箱线图(df.boxplot)_df.boxplot()-CSDN博客

python统计分析——箱线图(sns.boxplot)_python sns.boxplot-CSDN博客

python统计分析——箱线图(plt.boxplot)_python 箱线图-CSDN博客

excel统计分析——正态性检验(箱线图)_excel的透视正态性检验-CSDN博客

8、分组条形图

        对于一些应用来说,pandas的绘图能力可以使得生成有用的图形更容易。

df=pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','c'])
df.plot(kind='bar',grid=False)

9、饼图

txtLabels=['Cats','Dogs','Frogs','Others']
fractions=[0.45,0.30,0.15,0.10]
offsets=(0,0.05,0,0)

plt.pie(fractions,explode=offsets,labels=txtLabels,
       autopct='%1.1f%%',startangle=90,
       colors=sns.color_palette('muted'))
plt.axis('equal')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值