前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >数据分析EPHS(4)-使用Excel和Python计算数列统计值

数据分析EPHS(4)-使用Excel和Python计算数列统计值

作者头像
石晓文
修改于 2019-07-12 09:31:09
修改于 2019-07-12 09:31:09
2.4K00
代码可运行
举报
文章被收录于专栏:小小挖掘机小小挖掘机
运行总次数:0
代码可运行

前面环境都搞的差不多了,这次咱们进入实战篇,来计算一列的统计值。统计值主要有最大值、最小值、均值、标准差、中位数、四分位数。话不多说,直接进入正题。

本文介绍使用Excel和Python来计算上述统计值,而HiveSpark将放在下一篇中。

1、数据介绍

这里咱们使用的是iris分类数据集,数据下载地址为:

http://archive.ics.uci.edu/ml/datasets/Iris

下载后转换为xlsx格式的文件,数据如下:

也可以在公众号后台回复 “iris” 下载相应数据。

2、使用Excel计算统计值

咱们一个个来哈,在使用过程中还是学到了很多东西的,如果你都会了,也建议你看一下,嘻嘻!

2.1 最大值 & 最小值

在Excel统计一列或者指定单元格区间的最大值或最小值,直接使用max和min函数即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
=MAX(A2:A151)
=MIN(A2:A151)

统计结果如下:

2.2 平均值

在Excel统计一列或者指定单元格区间的平均值,直接使用average函数即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
=AVERAGE(A2:A151)

统计结果如下:

2.3 样本标准差 VS 总体标准差

在Excel统计一列或者指定单元格区间的标准差,可就没那么简单了,excel里面共有四个方法:

共四个方法,其实可以分成两组,即统计样本标准差和总体标准差,首先回顾一下二者的计算公式:

总体标准差对应的英文是Population standard deviation , 在Excel中一般使用STDEV.P 或者 STDEVPA方法计算,这里的P便是Population的意思。 样本标准差对应的英文是Sample standard deviation,在Excel中一般使用STDEV.S 或者 STDEVA方法计算,这里的S便是Sample的意思。

这里我们先使用STDEV.P和STDEV.S 分别计算一下总体标准差和样本标准差:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
=STDEV.P(A2:A151)
=STDEV.S(A2:A151)

结果如下:

接下来说下STDEV.P和 STDEVPA的区别,STDEV.S和STDEVA的区别与其相同。两者区别是 STDEV.P 函数忽略样本中的逻辑值和文本, STDEVPA 不忽略,看下面的结果:

在上面的数据中,如果只计算4个数字的总体标准差,结果当然是0,因为四个数字都是2,所以STDEV.P的结果是0,但是STDEVPA的结果却不是0,因为这个函数将文本和逻辑值False当作0处理,把逻辑值True当作1处理,我们来验证下:

结果印证了咱们刚才的说明。

2.3 中位数

在Excel统计一列或者指定单元格区间的中位数,直接使用MEDIAN函数即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
=MEDIAN(A2:A151)

中位数的计算方法,如果数据量的个数为奇数的话,就是中间的一个数,如果数据量个数为偶数个的话,就是最中间两个数的平均值,咱们这里是150个数,所以是排序后第75个数和76个数的平均值,如feature3,两个数分别是4.3和4.4,所以中位数是4.35:

2.4 四分位数

这里,四分位数计算又有两种方法了:

其中QUARTILE.EXC对应了n+1的方法,QUARTILE.INC对应了n-1的方法。咱们先介绍下计算四分位数的n+1和n-1方法:

对于n+1方法,如果数据量为n,则四分位数的位置为:

Q1的位置= (n+1) × 0.25 Q2的位置= (n+1) × 0.5 Q3的位置= (n+1) × 0.75

对于n-1方法,如果数据量为n,则四分位数的位置为:

Q1的位置=1+(n-1)x 0.25 Q2的位置=1+(n-1)x 0.5 Q3的位置=1+(n-1)x 0.75

可以看到,两种方法计算的Q2的结果是相同的,且与中位数的结果相同。但是Q1和Q3的结果却不相同。如在我们的数据中的feature3。若使用n+1方法,那么Q1的位置为151 * 0.25 = 37.75,如果使用n-1方法,那么Q1的位置为1 + 149 * 0.25 = 38.25。在数据中,第37、38、39个数分别为1.5、1.6、1.6。因此使用n+1方法得到的Q1 = 1.5 * 0.25 + 1.6 * 0.75 = 1.575,而使用n-1方法得到的Q1 = 1.6 * 0.75 + 1.6 * 0.25 = 1.6。

继续说,无论QUARTILE.EXC还是QUARTILE.INC方法,都需要两个两个参数,第一个是指定的单元格区间,第二个是求第几四分位数,如下面是求第一四分位数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
=QUARTILE.INC(A2:A151,1)

最终的结果如下:

好了,EXCEL部分的说明先到这里了,接下来用Python来计算一下。

3、使用Python计算统计值

使用Python的话,咱们分为四个方面来介绍,即使用list、numpy和pandas来计算数列的统计值。

3.1 计算List的统计值

这里,我们对原始的list进行操作,除了max和min有现成的方法之外,其余各个统计值的计算,要按照对应的公式进行计算,代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
irisdf = pd.read_csv('data/iris.csv')

feature1list = irisdf['feature1'].values.tolist()

max_value_list = max(feature1list)
min_value_list = min(feature1list)
avg_value_list = sum(feature1list) / len(feature1list)
std_value_list = math.sqrt(sum([math.pow(x - avg_value_list,2) for x in feature1list])/len(feature1list))

feature1list = sorted(feature1list)
number_cnt = len(feature1list)
if number_cnt % 2 == 1:
    median_value_list = feature1list[(number_cnt-1) // 2]
else:
    median_value_list = (feature1list[number_cnt//2] + feature1list[number_cnt // 2-1]) / 2

q1_pos = (number_cnt + 1) * 0.25
q2_pos = (number_cnt + 1) * 0.5
q3_pos = (number_cnt + 1) * 0.75

q1_value_list = feature1list[int(q1_pos) -1] * (1 - q1_pos % 1) + feature1list[int(q1_pos)] * (q1_pos % 1)
q2_value_list = feature1list[int(q2_pos) -1] * (1 - q2_pos % 1) + feature1list[int(q2_pos)] * (q2_pos % 1)
q3_value_list = feature1list[int(q3_pos) -1] * (1 - q3_pos % 1) + feature1list[int(q3_pos)] * (q3_pos % 1)

print("最大值是:" + str(max_value_list))
print("最小值是:" + str(min_value_list))
print("平均值是:" + str(avg_value_list))
print("总体标准差是:" + str(std_value_list))
print("中位数是:" + str(median_value_list))
print("第一四分位数是:" + str(q1_value_list))
print("第二四分位数是:" + str(q2_value_list))
print("第三四分位数是:" + str(q3_value_list))

输出的结果为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
最大值是:7.9
最小值是:4.3
平均值是:5.843333333333335
总体标准差是:0.8253012917851409
中位数是:5.8
第一四分位数是:5.1
第二四分位数是:5.8
第三四分位数是:6.4

和excel保持一致。

3.2 使用Numpy计算统计值

使用numpy的话,每个都有对应的函数,咱们直接看看代码,后面会对代码做一些说明:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
feature1array = np.array(feature1list)

max_value_array = feature1array.max()
min_value_array = feature1array.min()
avg_value_array = feature1array.mean()

std_value_array = feature1array.std(ddof = 0)
sstd_value_array = feature1array.std(ddof = 1)

median_value_array = np.median(feature1array)

q1_value_array = np.percentile(feature1array,25)
q2_value_array = np.percentile(feature1array,50)
q3_value_array = np.percentile(feature1array,75)

print("最大值是:" + str(max_value_array))
print("最小值是:" + str(min_value_array))
print("平均值是:" + str(avg_value_array))
print("总体标准差是:" + str(std_value_array))
print("样本标准差是:" + str(sstd_value_array))
print("中位数是:" + str(median_value_array))
print("第一四分位数是:" + str(q1_value_array))
print("第二四分位数是:" + str(q2_value_array))
print("第三四分位数是:" + str(q3_value_array))

结果输出为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
最大值是:7.9
最小值是:4.3
平均值是:5.84333333333
总体标准差是:0.825301291785
样本标准差是:0.828066127978
中位数是:5.8
第一四分位数是:5.1
第二四分位数是:5.8
第三四分位数是:6.4

这里,我们主要对标准差计算和四分位数计算作出说明,对于标准差,使用的是std方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
std_value_array = feature1array.std(ddof = 0)
sstd_value_array = feature1array.std(ddof = 1)

可以看到,我们指定了一个参数ddof,这里ddof=0代表计算总计标准差,ddof=1代表计算样本标准差,默认ddof=0。

计算四分位数使用的是np.percentile方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
q1_value_array = np.percentile(feature1array,25)
q2_value_array = np.percentile(feature1array,50)
q3_value_array = np.percentile(feature1array,75)

首先,第二个参数是整数,而非0.25或者0.5。其次,四分位索引的计算基于我们说的n-1计算方法,可以看下源码中相应的部分:

3.3 使用Pandas计算统计值

使用pandas的话,直接通过describe方法就可以输出我们本文所介绍的一堆统计值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
irisdf_describe = irisdf.describe()
print(irisdf_describe)

输出为:

这里已经有最大值、最小值、平均值、四分位数等数据,而这里的标准差是样本标准差,所以我们还需要统计中位数和总体标准差:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
irisdf_describe = irisdf.describe()
print(irisdf_describe)
median_value_df = irisdf['feature1'].median()
std_value_df = irisdf['feature1'].std(ddof=0)
print("最大值是:" + str(irisdf_describe['feature1']['max']))
print("最小值是:" + str(irisdf_describe['feature1']['min']))
print("平均值是:" + str(irisdf_describe['feature1']['mean']))
print("总体标准差是:" + str(std_value_df))
print("样本标准差是:" + str(irisdf_describe['feature1']['std']))
print("中位数是:" + str(median_value_df))
print("第一四分位数是:" + str(irisdf_describe['feature1']['25%']))
print("第二四分位数是:" + str(irisdf_describe['feature1']['50%']))
print("第三四分位数是:" + str(irisdf_describe['feature1']['75%']))

结果为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
最大值是:7.9
最小值是:4.3
平均值是:5.84333333333
总体标准差是:0.825301291785
样本标准差是:0.828066127978
中位数是:5.8
第一四分位数是:5.1
第二四分位数是:5.8
第三四分位数是:6.4

好了,今天的介绍就到这里了,总体来说看似很简单,但还是有很多学问在里面的,好好学习一下吧。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小小挖掘机 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
数据分析EPHS(5)-使用Hive SQL计算数列统计值
http://archive.ics.uci.edu/ml/datasets/Iris
石晓文
2019/07/17
3.3K0
数据分析EPHS(5)-使用Hive SQL计算数列统计值
数据分析EPHS(6)-使用Spark计算数列统计值
前两篇中咱们分别介绍了使用Excel、Python和Hive SQL计算统计值,这次咱们使用Spark SQL来计算统计值。
石晓文
2019/07/30
1.5K0
怎么样描述你的数据——用python做描述性分析
一般在数据分析的过程中,拿到数据不会去直接去建模,而是先做描述性分析来对数据有一个大致的把握,很多后续的建模方向也是通过描述性分析来进一步决定的。那么除了在Excel/R中可以去做描述性分析。
刘早起
2020/04/22
2.2K0
小数据| 描述性统计(Python/R 实现)
描述性统计是借助图表或者总结性的数值来描述数据的统计手段。数据挖掘工作的数据分析阶段,可以借助描述性统计来描述或总结数据的基本情况。
生信补给站
2020/08/06
1.1K0
数据分析之路—数据的描述性统计
数据的集中趋势描 述是寻找反映事物特征的数据集合的代表值或中心值,这个代表值或中 心值可以很好地反映事物目前所处的位置和发展水平,通过对事物集中 趋势指标的多次测量和比较,还能够说明事物的发展和变化趋势。国家 的人均GDP就是一个集中趋势指标,虽然每个人对国家的GDP贡献度不 一样,但是人均GDP能够代表每个人对国家GDP的平均贡献度,从而反 映一个国家的经济发展水平。
23号杂货铺
2019/09/26
1.3K0
数据分析、数据挖掘基础:描述统计学基础知识分享!
https://www.cnblogs.com/chentianwei/p/12488891.html
1480
2020/10/26
1.1K0
数据分析、数据挖掘基础:描述统计学基础知识分享!
Python数据分析之数据探索分析(EDA)
何为EDA,何谓探索性数据分析?英文名为Exploratory Data Analysis,是在你拿到数据集后,并不能预知能从数据集中找到什么,但又需要了解数据的基本情况,为了后续更好地预处理数据、特征工程乃至模型建立。因此探索性数据分析,对了解数据集、了解变量之间对相互关系以及变量与预测值之间的关系尤其重要。
数据STUDIO
2021/06/24
4K0
机器学习数学基础:数理统计与描述性统计
所谓机器学习和深度学习, 背后的逻辑都是数学, 所以数学基础在这个领域非常关键, 而统计学又是重中之重, 机器学习从某种意义上来说就是一种统计学习。
Datawhale
2020/07/02
1.8K0
机器学习数学基础:数理统计与描述性统计
利用python回顾统计学中的基础概念(全)
  描述性统计,就是从总体数据中提取变量的主要信息(总和、均值等),从而从总体层面上,对数据进行统计性描述。
朱小五
2020/03/05
1.1K0
数据挖掘学习小组之(统计学)
首先,要做一件事情首先要搞清楚的是:为什么要这么做?随着年纪越来越大,越来越觉得时间珍贵,所以每一分钟都要用好。而参加这个兴趣小组的原因很简单,想进一步提升自己的能力!
数据处理与分析
2019/07/31
8780
数据挖掘学习小组之(统计学)
数据分析|R-描述性统计
前文介绍了脏数据中缺失值数据分析|R-缺失值处理和异常值数据分析|R-异常值处理的常规处理方法,之后就可以对数据进行简单的描述性统计,方便我们对数据有一个整体的认识。
生信补给站
2020/08/06
1.5K0
值得收藏!数据分析最常用的18个概念,终于有人讲明白了
一是仅利用一些工具,对数据的特征进行查看;二是根据数据特征,感知数据价值,以决定是否需要对别的字段进行探索,或者决定如何加工这些字段以发挥数据分析的价值。字段的选取既需要技术手段的支撑,也需要数据分析者的经验和对解决问题的深入理解。
IT阅读排行榜
2019/09/29
1.2K0
值得收藏!数据分析最常用的18个概念,终于有人讲明白了
NumPy 学习笔记(四)
  2、numpy.power(one, two) 将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应元素的幂,即 one^two
py3study
2020/01/16
5800
用python重温统计学基础:描述性统计分析
描述性统计分析(Description Statistics)是通过图表或数学方法,对数据资料进行整理、分析,并对数据的分布状态、数字特征和随机变量之间的关系进行估计和描述的方法。描述性统计分析分为集中趋势分析和离中趋势分析。
朱小五
2019/11/26
1.6K0
R in action读书笔记(5)-第七章:基本统计分析
mpg hp wt
Ai学习的老章
2019/04/10
5720
重温统计学④差异性
箱线图(Box Plot):是由一组数据的最大值(maximum),最小值(minimum),中位数(median),两个四分位数(quartiles)这五个特征值绘制而成的,它主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比较。
Ai学习的老章
2019/04/10
1.2K0
重温统计学④差异性
统计02:怎样描绘数据
作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载。
Vamei
2018/09/25
1.1K0
统计02:怎样描绘数据
特征工程之异常值处理
工作原理:它是先假设一组检测数据只含有随机误差,对其进行计算处理得到标准偏差, 按一定概率确定一个区间,认为凡超过这个区间的误差,就不属于随机误差而是粗大误差, 含有该误差的数据应予以剔除。
用户3577892
2020/06/11
2.5K1
软件测试|Python科学计算神器numpy教程(十二)
NumPy是Python中用于科学计算的一个强大的库,其中包含了丰富的数学和统计函数。这些统计函数允许用户对数组进行各种统计计算,例如平均值、标准差、方差、最大值、最小值等。在本文中,我们将详细介绍NumPy中一些常用的统计函数及其用法。
霍格沃兹测试开发Muller老师
2023/10/25
2430
数据的描述性统计与python实现
mpl.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
用户7886150
2020/12/24
8160
推荐阅读
相关推荐
数据分析EPHS(5)-使用Hive SQL计算数列统计值
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验