集中程度
!](https://img-blog.csdnimg.cn/2623cdb02b864f5e877a3fe4c503f558.png)
常见的反映各变量值向中心值聚集的程度的变量有均值、众数、中位数、四分位数,均值就是将所有的数据相加再除以数据出现的次数,众数就是在这组数据中出现次数最多的数据,中位数就是将数据按照大小从大到小排列后处在中间位置的数,假如有奇数个数据的话中位数就是处在中间位置的数,假如有偶数个数据的话就是将位于中间的两个数相加后再取平均,四分位数就是将数据划分为四部分之后处于各个划分点上的数据。一般用箱线图能更直观的表达数据的集中程度,箱体的上限和下限是根据上下四分位数和其四分位数间距确定的非异常值范围的最大上限和最小下限,一般不在此范围内的值便被称为异常值。
import numpy as np
from numpy import mean, median
import pandas as pd
data = pd.read_excel('data_3.2.xlsx',index_col=0)
首先是读入数据,不同版本的Python读入之后的索引可能会不同,如果读进数据之后的索引不是按照城市为索引的,可以在读入数据加入 index_col =0 这条命令,读入之后的数据是这样的(按照正常的以城市为索引)。
1.计算均值
#S1.1 均值
mean_d1 = mean(data.iloc[:,0])
print('各省份食品的均值为',np.round(mean_d1,2))#3510.73
print('北京市8个指标的均值',
np.round(mean(data.iloc[0,:]),2))#1916.31
从以上我们可以看到,即可以按照列计算各省食品的均值,也可以按照行计算每个省份各项指标的均值。
2.计算众数
#计算众数(常用于定性数据)
from scipy.stats import mode
d2 = np.array([4,2,5,4,3,2,4])
mode_d2 = mode(d2)[0][0]
# mode_d3 = mode(d2)[0]
# mode(d2)[0][0]
# mode_d4 = mode(d2)
print('众数为:',mode_d2)
按照 d2 数据为例,求出数据中的众数需要引用 scipy.stats 中的 mode 函数,可以看看求众数的各个不同阶段是求出的什么结果。
3.计算中位数
#S1.3 计算中位数
median_d3 = median(data.iloc[:,0])
print('各省份食品的中位数为',
np.round(median_d3,2))
print('北京市8个指标的中位数',
np.round(median(data.iloc[0,:]),2))
平均数和中位数都可以直接从 numpy 中引用,同样行和列都可以计算。
4.分位数
#S1.4 分位数
np.percentile(data.iloc[:,0],75)#75%分位数
np.quantile(data.iloc[:,0],0.27)
计算分位数有两种表达方式,两个方法求出的值都是相同的,但是表达上的不同就是 percentile 是用的百分位数表达,quantile 是直接用的小数表达。
5.汇总方法
des_data = data.describe()
print(des_data)
既然分别介绍了关于集中程度的四种函数的求法,那是不是有一种函数可以直接进行汇总求解,当然是有了 !
des_data = data.describe()
print(des_data)
使用describe 函数可以直接将四种参数直接求解。
6.图形可视化
使用图形可以更加直观的看出数据的分布,下面来单独看一下各个省份食品数据的分布图。
关于各个不同门类的箱线图分布图。