Skip to content

Python Statistics 模块:轻松玩转数据分析

Python 的 statistics 模块为我们提供了简单易用的函数,用于计算数值数据的统计量。无论你是数据分析新手,还是需要快速计算统计信息的开发者,这个模块都能派上大用场。本文将带你了解 statistics 模块中最常用的几个函数,并结合实例进行讲解,帮助你快速上手。

什么是统计量?

在深入 statistics 模块之前,我们先来简单了解一下什么是统计量。统计量是描述数据集合特征的数值指标,常用的统计量包括:

  • 平均值(Mean): 数据集中所有数值的总和除以数值的个数,反映数据的集中趋势。
  • 中位数(Median): 将数据排序后,位于中间位置的数值。当数据集中存在极端值时,中位数比平均值更能代表数据的中心位置。
  • 众数(Mode): 数据集中出现次数最多的数值。

statistics 模块概览

statistics 模块主要用于计算数字(实值)数据的数学统计量。使用前需要先导入该模块:

python
import statistics

接下来,我们将介绍该模块中几个常用的函数。

1. 平均值 (Mean)

statistics.mean(data) 函数用于计算数据集 data 的算术平均值。data 可以是整数或浮点数的列表(list)或元组(tuple)。

python
from statistics import mean

data1 = [1, 2, 3, 6]
average1 = mean(data1)
print(f"数据集 {data1} 的平均值为: {average1}")  # 输出: 数据集 [1, 2, 3, 6] 的平均值为: 3.0

data2 = (10, 20, 30, 40)
average2 = mean(data2)
print(f"数据集 {data2} 的平均值为: {average2}")  # 输出: 数据集 (10, 20, 30, 40) 的平均值为: 25.0

2. 中位数 (Median)

statistics.median(data) 函数用于计算数据集 data 的中位数。

  • 如果数据集包含奇数个数值,则中位数是排序后位于中间位置的数值。
  • 如果数据集包含偶数个数值,则中位数是排序后位于中间两个数值的平均值。
python
from statistics import median

data1 = [1, 2, 3, 6]
median1 = median(data1)
print(f"数据集 {data1} 的中位数为: {median1}")  # 输出: 数据集 [1, 2, 3, 6] 的中位数为: 2.5  ( (2+3) / 2)

data2 = [1, 2, 3, 6, 7]
median2 = median(data2)
print(f"数据集 {data2} 的中位数为: {median2}")  # 输出: 数据集 [1, 2, 3, 6, 7] 的中位数为: 3.0

3. 众数 (Mode)

statistics.mode(data) 函数用于查找数据集 data 中出现次数最多的数值,即众数。data 可以是整数、字符串或浮点数的列表或元组。

python
from statistics import mode

data1 = [1, 2, 3, 6]
mode1 = mode(data1)
print(f"数据集 {data1} 的众数为: {mode1}")  # 输出: 数据集 [1, 2, 3, 6] 的众数为: 1 (第一个遇到的)

data2 = [1, 2, 2, 3, 6]
mode2 = mode(data2)
print(f"数据集 {data2} 的众数为: {mode2}")  # 输出: 数据集 [1, 2, 2, 3, 6] 的众数为: 2

data3 = ["a", "b", "a", "c"]
mode3 = mode(data3)
print(f"数据集 {data3} 的众数为: {mode3}")  # 输出: 数据集 ['a', 'b', 'a', 'c'] 的众数为: a

data4 = [1, 1, 2, 2]
mode4 = mode(data4)
print(f"数据集 {data4} 的众数为: {mode4}")  # 输出: 数据集 [1, 1, 2, 2] 的众数为: 1 (返回第一个)

注意: 在 Python 3.8 及更高版本中,引入了 statistics.multimode() 函数,该函数可以返回所有众数。如果数据集存在多个出现次数相同的数值,multimode() 将返回包含这些数值的列表。

python
import statistics

data = [1, 1, 2, 2, 3, 3]
modes = statistics.multimode(data)
print(f"数据集 {data} 的众数为: {modes}") # 输出:数据集 [1, 1, 2, 2, 3, 3] 的众数为: [1, 2, 3]

statistics 模块为我们提供了方便快捷的统计计算功能。通过本文的介绍,你应该已经掌握了如何使用 mean()median()mode() 函数来计算数据集的平均值、中位数和众数。