采集到大量的样本数据以后,常常需要用一些统计量来描述数据的集中程度和离散程度,并通过这些指标来对数据的总体特征进行归纳。[大谦Excel,dqexcel点com]
描述集中趋势
【问题描述】
描述数据集中趋势的统计量有均值、中值、众数、几何均值、调和均值和截尾均值等。
【示例10-1】
本例使用的Excel文件的完整路径为“D:/Samples/ch10/01 集中趋势/花.xlsx”。该文件打开后如图10-1所示,是与花有关的一些度量数据。要求计算变量“花萼长”数据的均值、中值、众数、几何均值、调和均值和截尾均值。
图10-1 与花有关的度量数据
- 编写下面的代码:
import pandas as pd
# 读取Excel文件中的第一个工作表,引擎为"openpyxl",选取前18行数据
df = pd.read_excel('D:/Samples/ch10/01 集中趋势/花.xlsx', engine='openpyxl', nrows=18)
# 计算“花萼长”列的均值、中值、众数、几何均值、调和均值和截尾均值
mean_value = df['花萼长'].mean() # 均值
median_value = df['花萼长'].median() # 中值
mode_value = df['花萼长'].mode()[0] # 众数
gm_value = pow(df['花萼长'].prod(), 1/len(df)) # 几何均值
hm_value = len(df) / (1 / df['花萼长']).sum() # 调和均值
trimmed_mean = df['花萼长'].sort_values()[1:-1].mean() # 截尾均值(去掉最大值和最小值后的均值)
# 输出计算结果
print('均值:', mean_value)
print('中值:', median_value)
print('众数:', mode_value)
print('几何均值:', gm_value)
print('调和均值:', hm_value)
print('截尾均值:', trimmed_mean)
打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存。运行脚本,在IDLE Shell窗口输出指定的统计量。
>>> == RESTART: D:/Samples/1.py =
均值: 16.166666666666668
中值: 15.0
众数: 15
几何均值: 10.251185618437496
调和均值: 15.536431459956672
截尾均值: 16.1875
【知识点扩展】
描述样本数据集中趋势的统计量有算术平均值(均值)、中值、众数、几何均值、调和均值和截尾均值等。
算术平均值是将所有数据求和后用和除以数据个数。中值是数据的中位数,即0.5分位数。众数是数据中出现次数最多的数。
样本数据的几何均值的计算公式如下:
样本数据的调和平均值的计算公式如下:
截尾均值是数据排序后,将最大部分和最小部分删除指定百分比的数据后根据剩下的数据求算术平均值。
描述离中趋势
【问题描述】
描述数据集中趋势的统计量有极差、方差、标准差、均值绝对差和内四分极差等。
【示例10-2】
本例使用示例10-1的数据,要求计算变量“花萼长”数据的极差、方差、标准差、均值绝对差和内四分极差。
- 编写下面的代码:
import pandas as pd # 导入pandas库
# 读取Excel数据,前18行,引擎为"openpyxl"
df = pd.read_excel("D:/Samples/ch10/02 离中趋势/花.xlsx", sheet_name=0, nrows=18, engine="openpyxl")
# 计算“花萼长”数据的极差
range_ = df['花萼长'].max() - df['花萼长'].min()
# 计算“花萼长”数据的方差
variance = df['花萼长'].var()
# 计算“花萼长”数据的标准差
std_deviation = df['花萼长'].std()
# 计算“花萼长”数据的均值绝对差
mean_abs_deviation = df['花萼长'].mad()
# 计算“花萼长”数据的内四分极差
iqr = df['花萼长'].quantile(0.75) - df['花萼长'].quantile(0.25)
# 输出计算结果
print("“花萼长”数据的极差为:", range_)
print("“花萼长”数据的方差为:", variance)
print("“花萼长”数据的标准差为:", std_deviation)
print("“花萼长”数据的均值绝对差为:", mean_abs_deviation)
print("“花萼长”数据的内四分极差为:", iqr)
打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存。运行脚本,在IDLE Shell窗口输出指定的统计量。
>>> == RESTART: D:/Samples/1.py =
“花萼长”数据的极差为: 12
“花萼长”数据的方差为: 10.852941176470589
“花萼长”数据的标准差为: 3.294380241634318
“花萼长”数据的均值绝对差为: 2.5555555555555562
“花萼长”数据的内四分极差为: 4.25
【知识点扩展】
描述样本数据离散趋势的统计量包括极差、方差、均值绝对差、标准差和内四分极值等。极差等于数据的最大值减去最小值。均值绝对差等于各数据与数据均值的差的绝对值的均值。内四分极值等于0.75分位数减去0.25分位数。
描述数据分布的形状
【问题描述】
描述数据分布形状的统计量有峰度和偏度。
【示例10-3】
本例使用示例10-1的数据,要求计算变量“花萼长”数据的峰度和偏度。
- 编写下面的代码:
import pandas as pd
# 使用pandas读取Excel文件
data = pd.read_excel("D:/Samples/ch10/03 形状/花.xlsx", engine="openpyxl", sheet_name=0, nrows=18)
# 计算"花萼长"数据的偏度和峰度
skewness = data["花萼长"].skew() # 偏度
kurtosis = data["花萼长"].kurtosis() # 峰度
# 输出计算结果
print("花萼长数据的偏度为:", skewness)
print("花萼长数据的峰度为:", kurtosis)
打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存。运行脚本,在IDLE Shell窗口输出指定数据的峰度和偏度。
>>> == RESTART: D:/Samples/1.py =
花萼长数据的偏度为: 0.38992245925175706
花萼长数据的峰度为: -0.18672894588024436
【知识点扩展】
偏度可用于度量数据分布的偏斜方向和程度;峰度则表示数据分布曲线在均值处的高低程度。