首页 > 编程语言 >常用【描述性统计指标】含义(by python)

常用【描述性统计指标】含义(by python)

时间:2023-11-30 09:24:57浏览次数:38  
标签:count 平均值 python max 含义 ages 中位数 描述性 数据

统计学有时候会被误解,好像必须有大量的样本数据,才能使统计结果有意义。
这会让我们觉得统计学离我们的日常生活很遥远。

其实,如果数据的准确度高的话,少量的样本数据同样能反映出真实的情况。
比如,很多国家选举时不断做的民意调查,一般做到有效样本1600多份就够了,不管你是几千万人的小国家,还是数亿人的大国,调查的样本数都差不多。

所以,正确地进行统计,即使样本数据量不大,我们也可以从中提取知识,避免被误导。
不过,在此之前,我们要能够清楚地理解统计数据和各种统计指标的含义,以及它们在区分真相和误导时的作用。

1. 统计是什么

统计是个很笼统的概念,它涉及到很多事情,简单来定义它的话,必然会掩盖很多细节。
统计学可以被认为是处理数据的科学框架,其中包括与数据收集、分析和解释相关的所有任务。

那么,什么是数据
数据是对世界观察的一般集合,其性质多种多样,从定性到定量。
比如,研究人员从实验中收集数据,企业家从用户那里收集数据,医生从病人那里收集数据等等。

本篇准备介绍一些在分析数据时常用的两种描述性指标,通过它们来实际的度量数据情况,而不是模凌两可的描述数据性质。

本文使用的示例数据来自scikit-learn中自带的糖尿病数据集。

from sklearn.datasets import load_diabetes

# 糖尿病人数据集
ds = load_diabetes(as_frame=True, return_X_y=True, scaled=False)
data = ds[0]

data.head()

image.png
其中一共有400多条数据。
这里不做糖尿病的分析,只是用这个数据集来演示一些统计学描述指标的计算方式。

2. 集中度指标

首先是集中度指标,它表示数据的“中间”是什么样的。
“中间”这个词是模糊的,我们可以用多种方式来定义中间。

2.1. 平均值

平均值是一种描述性统计量,描述的是数据集中最典型的值。
比如,我们看看示例数据中,糖尿病病人的年龄平均值:

# 获取年龄列表
ages = data["age"].tolist()

# 年龄之和
sum_ages = sum(ages)
# 人数
num_ages = len(ages)

# 平均年龄
avg_ages = sum_ages / num_ages
avg_ages

# 运行结果
48.51809954751131

这个平均年龄告诉我们,易患糖尿病的“典型”年龄可能是48岁左右

2.2. 中位数

中位数是数据“中间”的另一种定义,它不像平均值那样需要算术计算。
它只要将数据排序之后,取中间的那个值就行,如果数据集中数据的个数是偶数,则取排序后中间两个值的平均值。

# 获取年龄列表
ages = data["age"].tolist()

sorted_ages = sorted(ages)

# 人数
num_ages = len(ages)
mid = int(num_ages / 2)

# 因为人数是偶数,所以中位数是中间两个数的平均值
med_ages = (sorted_ages[mid - 1] + sorted_ages[mid])/2
med_ages

# 运行结果
50.0

中位数年龄50与上面计算的平均值差别不大。
有时候,数据集中有一些异常值(极大或极小的值),就会造成中位数平均值差别很大。

异常值一般会对平均值产生不利的影响,而对于中位数来说,一般影响不大。

2.3. 众数

众数是数据中出现最频繁的值,它不像平均值中位数那样更像数据的“中间”
不过,一个值在数据集中重复出现的次数越多,对平均值的影响就越大,因此,众数代表了对平均值的最高加权贡献因素。

# 获取年龄列表
ages = data["age"].tolist()

ages_count = {}
# 统计每个年龄的个数
for i in ages:
    if i in ages_count:
        ages_count[i] += 1
    else:
        ages_count[i] = 1

# 出现次数最多的年龄
max_age, max_count = 0, 0
for k, v in ages_count.items():
    if v > max_count:
        max_age = k
        max_count = v

print(max_age, max_count)

# 运行结果
53.0 19

众数也就是出现最多的年龄,是53岁,有19人。
众数相当接近中位数,这让我们对于数据的集中趋势更有信心。

3. 离散度指标

集中度指标让我们了解到数据的“中间”是什么样的,而离散度指标则是告诉我们数据“变化”有多大。
离散度指标让我们可以度量数据的变化程度,哪怕是轻微的变化程度。

3.1. 极差

极差就是数据的最大值与最小值之差,它让我们了解到数据的变化范围有多大。

# 获取年龄列表
ages = data["age"].tolist()

# 极差
max(ages) - min(ages)

# 运行结果
60.0

极差60岁,说明糖尿病患者的年龄差距很大,这是一种需要及早预防的疾病。

3.2. 标准差

标准差是对观察结果分布的衡量,是对数据与“典型”数据点的偏差程度的度量。
标准差越大,数据在平均值附近的分布就越分散,反之越集中。

# 标准差计算函数
def stdev(nums):
    diffs = 0
    avg = sum(nums)/len(nums)
    for n in nums:
        diffs += (n - avg)**(2)
    return (diffs/(len(nums)-1))**(0.5)

# 获取年龄列表
ages = data["age"].tolist()

stdev(ages)

# 运行结果
13.109027822041087

极差看出年龄的差距有60岁,但是标准差只有13岁左右,说明数据还算集中,不是太分散。

3.3. 方差

方差就是标准差的平方,它们几乎是完全相同的东西。
需要注意的是,方差的单位是原始数据不一样,而标准差的单位和原始数据一样。

平均值一样,方差标准差也会受到异常值的影响。

4. 总结

本篇主要内容包括:

  1. 描述性统计指标分两种:集中度指标和离散度指标
  2. 描述性统计指标表示数据的简单摘要
  3. 平均值计算我们数据集的典型值,易受异常值影响
  4. 中位数是数据集排序后的中间值,不易受异常值影响
  5. 众数是出现次数最多的值
  6. 极差是数据集中最大值和最小值之间的差
  7. 方差标准差表示在平均值附近的波动情况

标签:count,平均值,python,max,含义,ages,中位数,描述性,数据
From: https://www.cnblogs.com/wang_yb/p/17866494.html

相关文章

  • 聪明办法学python-task05
    python要点注释单行注释以#开头多行注释可以用多个#号,还有'''和""".程序员最讨厌的10件事:0:别人的代码不写注释​1:给自己的代码写注释。行与缩进python最鲜明的特色就是不需要使用{},而是通过缩进来代替代码块同一个代码块的......
  • 聪明办法学python 05
    条件语句 if          elif代替elseif1.每个条件后面要使用冒号 :2使用缩进来划分语句块match...case        match status:                    case400: return...       ......
  • 无涯教程-Python爬虫 - 处理图像和视频
    Web抓取通常涉及下载,存储和处理Web内容,在本章中了解如何处理从Web下载的内容。无涯教程在抓取过程中获得的网络媒体内容可以是图像,音频和视频文件,以及非网页形式的数据文件。但是,能否信任下载的数据,尤其是将要下载并存储在计算机内存中的数据扩展名?这使得了解将要本地存储的数......
  • 聪明方法学python task5 条件/代码风格
    条件控制elif代替了C语言中的elseif缩进划分代码块嵌套if仍然成立多返回语句defabs(n):  ifn<0:    return-n  returnn match-case类比switch-case语句_可以匹配一切。deftest(a):​•matcha:​•case1:​•......
  • 聪明办法学python第三次打卡
    #ifelse语句if: else: #elif语句:if: elif: else: #match-case语句:matchmcase1: case2: case3: case4: case5: 一个case也可以设置多个匹配条件,条件使用|隔开......
  • 【Python爬虫】第13篇:scrapy项目配置和数据获取。从0到scrapy高手笔记(附代码,可自取)
    本文主要学习一下关于爬虫的相关前置知识和一些理论性的知识,通过本文我们能够知道什么是爬虫,都有那些分类,爬虫能干什么等,同时还会站在爬虫的角度复习一下http协议。全套笔记和代码自取地址:请移步这里感兴趣的小伙伴可以自取哦,欢迎大家点赞转发~共8章,37子模块scrapy爬......
  • 聪明办法学python—task05&选学01
    条件语句if语句:1.elseif——>elif2.后面是冒号3.其余与c语言相同循环结构while循环while条件:bodystatmentsfor-in循环for变量in字符串/范围/集合:statements结束循环breakcontinuereturn与c语言相同 ......
  • 【Python】类的声明和使用
    1、类的声明语法:classMainWindow:"""classinformation"""pass#classbody2、特殊方法2.1init构造函数,类会调用该方法构造对象。语法:classTest:def__init__(self,args...): pass2.2del析构函数,在对象销毁时调用。语法:def__del__(s......
  • 第三次python笔记
    python中的conditions:1.什么是contions?:所谓的condition即是条件变量,这种机制是在满足了特定的条件后,线程才可以访问相关的数据。这种同步机制就是一个线程等待特定的条件,另一个线程通知它条件已经发生。一旦条件发生,该线程就会获取锁,从而独占共享资源的访问。 Condition......
  • 麻烦问一下Python采集到的文本列表中有大量的 ', ' 符号 想这种符号怎么删除
    大家好,我是皮皮。一、前言前几天在Python铂金流群【泅渡】问了一个Python字符处理的问题,一起来看看吧。问题描述:麻烦问一下Python采集到的文本列表中有大量的  ','  符号 想这种符号怎么删除?二、实现过程这里【不上班能干啥!】和【瑜亮老师】分别给了一个指导,如下......