Python中的统计数据展示

Python中的统计数据展示

1、数据可以分为“分类型”或“数值型”,如果变量是数值型的,我们就采用某些特定的统计方法,相反,如果数据是定性分类的,那么我们可以采用另外的办法,
1.1、分类数据
①布尔数据
②名义数据
③等级数据(有序变量)
1.2、数值型数据
①连续的数值型
②离散的数值型
2、函数式和面向对象式的绘图方法
2.1、首先考虑pyplot风格

3、统计图形
3.1、散点图
散点图是单变量数据最简单的展示方法,只要绘制出每个单独的数据点即可,

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import scipy.stats as stats
import seaborn as sns

#生成数据
x=np.random.randn(500)

#绘图命令
plt.plot(x,'.')
plt.show()

散点图3.2、直方图
直方图提供了一个数据分布的一个很好的概览,如果你除以总的数据点个数,即可得到相对频率的直方图,如果你是每个区间的顶部中间点连接起来,你会得到一个相对频率的多边形。

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import scipy.stats as stats
import seaborn as sns

x=np.random.randn(500)
plt.hist(x,bins=25)
plt.show()

在这里插入图片描述
3.3、核密度(KDE)估计图
直方图有一个缺点就是它不是连续的,并且它的形状严格取决于区间的宽度,为了获得平滑的概率密度,也就是说描述一个事件在给定区间内被发现的可能性,我们就可以使用核密度估计的方法,因此,正态分布被用作典型的核,核密度的宽度决定了平滑的程度。

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import scipy.stats as stats
import seaborn as sns

x=[-2.1,-1.3,-0.4,1.9,5.1,6.2]
sns.kdeplot(x)
plt.show()

在这里插入图片描述

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

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import scipy.stats as stats
import seaborn as sns

index=np.arange(5)
y=index**2
errorBar=index/2
plt.errorbar(index,y,yerr=errorBar,fmt='o',capsize=5,capthick=3)
plt.show()

在这里插入图片描述3.5、箱型图
箱型图经常在学术期刊中使用,用来表示两组或多组的数值,箱子的底部和顶上分别表示第一分位数和第三分位数,然而箱子内部中间的线则表示中位数,值得注意的是上下的须,存在着不同的习惯用法,最常见的是,下面的须表示在第一分位数外1.5×IQR(四分位距)范围内的最低值,然而上面的须表示在第三分位数外1.5×IQR(四分位数)范围内的最高值,离散值(在上下须之外)被单独绘制,另一个就是习惯用法,须表示整个数据的范围。

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import scipy.stats as stats
import seaborn as sns
x = np.random.randn(1000)
plt.boxplot(x,sym='*')
plt.show()

在这里插入图片描述3.6、小提琴图
箱型图可以和核密度估计图联合起来绘制,生成所谓的小提琴图,期中纵轴和箱型图一样,但是在水平方向上额外绘制了对称的核密度估计图。

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import scipy.stats as stats
import seaborn as sns

nd=stats.norm
data=nd.rvs(size=(100))

nd2=stats.norm(loc=3 , scale=1.5)
data2=nd.rvs(size=(100))

df=pd.DataFrame({
    
    'girls':data,'boys':data2})
sns.violinplot(df)
plt.show()

在这里插入图片描述3.7、分组的条形图
对于一些应用来说,pabdas的绘图功能可以使得生成有用的图形更容易,比如,分组的条形图。

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import scipy.stats as stats
import seaborn as sns

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

在这里插入图片描述3.8、饼图

import seaborn as sns
import matplotlib.pyplot as plt

txtLables='cats','dogs','frogs','others'
fractions=[45,30,15,10]
offsets=(0,0.05,0,0)

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

在这里插入图片描述3.9、3D图
3D图需要导入不同的模块,并且3D图的坐标轴需要显式声明。

import numpy as np
from matplotlib import cm
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.axes3d import get_test_data

fig=plt.figure(figsize=plt.figaspect(0.5))

ax=fig.add_subplot(1,2,1,projection='3d')
X=np.arange(-5,5,0.1)
Y=np.arange(-5,5,0.1)
X,Y=np.meshgrid(X,Y)

R=np.sqrt(X**2 + Y**2)
Z=np.sin(R)

surf=ax.plot_surface(X,Y,Z,rstride=1,cstride=1,
                     cmap=cm.GnBu,linewidth=0,antialiased=False)
ax.set_zlim3d(-1.01,1.01)
fig.colorbar(surf,shrink=0.5,aspect=10)

ax=fig.add_subplot(1,2,2,projection='3d')
X,Y,Z=get_test_data(0.05)
ax.plot_wireframe(X,Y,Z,rstride=10,cstride=10)
plt.show()

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43401243/article/details/103686446