当前位置:   article > 正文

数据科学必备用Python进行描述性统计数据分析详解_python对所有变量做描述性分析

python对所有变量做描述性分析

在大数据时代的背景下,数据分析已经成为了商业决策、科研、甚至日常生活中不可或缺的一部分。但面对海量的数据如何从中提取有用的信息,进而做出明智的决策呢?描述性统计数据分析,就是解决这一问题的关键所在。本文通过Python这一流行的编程语言提供一份详尽而易于理解的描述性统计数据分析指南。

Python凭借其丰富的库和高度可定制的特性,已经成为数据科学领域中最受欢迎的工具之一。但无论工具有多么强大,正确和高效地使用它们始终是最重要的。因此本文不仅会介绍各种描述性统计的基础概念,如度量类型、总体和样本、异常值等,还将深入探讨如何使用Python进行实际的数据分析。包括但不限于集中趋势测度、变异性测量,以及数据对之间相关性的度量等。

通过生活中的实际案例,如消费行为分析、气象数据解读等,来演示描述性统计在解决实际问题中的应用,使得即便是对数据科学和编程毫无基础的读者,也能轻松地理解和掌握这一领域的核心概念和技巧。

理解描述性统计

描述性统计是一种科学分析数据的方法,不仅仅是对数据进行描述和概括,它更是一种科学地分析和解释数据的手段。这一过程涵盖了两种主要的方法:

  • 定量分析:这种方法用数字和计算来精确描述数据的各个方面。
  • 数据可视化:这里使用图表、绘图、直方图等多种可视化工具来更直观地展现数据的特点。

描述性统计可以广泛应用于单一或多重数据集和变量。在处理单一变量时通常进行单变量分析;而在探究两个变量间的关系时,双变量分析更为合适。对于涉及多个变量的复杂数据集,多变量分析是必不可少的。

三大度量维度

要进行有效的描述性统计分析,了解以下三种主要的度量类型是必要的:

  • 集中趋势:这描述了数据的“中心”,通常通过平均值、中位数和众数来量化。
  • 可变性:这涉及到数据分布的广度或波动,常用方差和标准差来衡量。
  • 相关性或联合变异性:这是用来描述数据集中两个或多个变量间相互关系的度量,例如协方差和相关系数。

总体与样本

在统计学中,需要进行一种取舍策略,总体指的是研究对象全体的集合。由于总体通常规模庞大,直接对其进行全面分析是不现实的。因此统计学家通常会选择一个能代表总体特性的样本进行研究。这样通过样本分析所得出的结论就可以在一定程度上推广到整个总体。

异常值

异常值是需特别关注的数据点,是那些与大多数数据点有显著差异的元素。这些差异可能源自数据的自然波动、观测系统的变化或是数据收集过程中的错误。识别异常值没有固定的数学规则,而是依赖于专业经验、主题知识以及逻辑推理。

Python 中的多功能统计库

  • Statistics: 这是 Python 的内置库,专门用于进行描述性统计分析。如果您处理的数据集规模较小,或者您不需要依赖其他外部库,那么该库是一个非常方便的选择。
  • NumPy: 这是一个高效的第三方数值计算库,特别针对单维和多维数组进行了高度优化。它主要使用一种名为 ndarray 的数组类型,并提供了一系列专门用于统计分析的函数和操作。
  • SciPy: 基于 NumPy 构建的这个第三方科学计算库,提供了比 NumPy 更丰富的功能集。其中scipy.stats 模块专门用于进行复杂的统计分析。
  • Pandas: 这是另一个基于 NumPy 的第三方库,特别适用于处理带有标签的一维(1D)数据和二维(2D)数据。其主要数据结构包括一维的 Series 对象和二维的 DataFrame 对象。
  • Matplotlib: 这是一个出色的第三方数据可视化库。当与 NumPy、SciPy 和 Pandas 结合使用时,它能非常直观地展示分析结果,从而更好地解释和理解数据。

计算描述性统计

需要导入一些用于数据分析和统计计算的第三方库。

import math
import statistics
import numpy as np
import scipy.stats
import pandas as pd
  • 1
  • 2
  • 3
  • 4
  • 5

进行数据准备将创建几个示例数据集。在数据分析中,缺失值通常使用 nan(Not a Number)来表示。Python 提供了多种方式来生成 nan,包括 float('nan')math.nannp.nan

x = [1.0, 5, 7.5, 4, 99.1]
x_with_nan = [1.0, 5, 7.5, math.nan, 4, 99.1]
  • 1
  • 2

还将创建几个 NumPy 数组和 Pandas Series 对象,这些都是常用的一维数据结构。

# 创建 NumPy 数组
y, y_with_nan = np.array(x), np.array(x_with_nan)

# 创建 Pandas Series 对象
z, z_with_nan = pd.Series(x), pd.Series(x_with_nan)

# 输出 NumPy 数组和 Pandas Series
y
# Output: array([ 8. ,  1. ,  2.5, 4. , 28. ])

y_with_nan
# Output: array([ 8. ,  1. ,  2.5,  nan,  4. , 28. ])

z
# Output: 
# 0     8.0
# 1     1.0
# 2     2.5
# 3     4.0
# 4    28.0
# dtype: float64

z_with_nan
# Output: 
# 0     8.0
# 1     1.0
# 2     2.5
# 3     NaN
# 4     4.0
# 5    28.0
# dtype: float64
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

测量集中趋势:多维度解析

集中趋势的测量方法用于揭示数据集的“中心”或“平均”值,这里有多种方式来描述这一“中心”。

  • 算术平均值(Mean):这是最常用的平均数计算方法,它是所有数据点的算术平均值。数学上,数据集 x \text{x} x 的算术平均值是 Σ i = 1 n x i n \frac{\Sigma_{i=1}^{n} x_i}{n} nΣi=1nxi,其中 x i x_i xi 是数据集中的每个元素, n n n 是数据集的大小。
  • 加权平均数(Weighted Mean):这是算术平均数的一个变体,允许每个数据点有不同的权重。数学公式为: Σ i = 1 n ( w i × x i ) Σ i = 1 n w i \frac{\Sigma_{i=1}^{n} (w_i \times x_i)}{\Sigma_{i=1}^{n} w_i} Σi=1nwiΣi=1n(wi×xi),其中 w i w_i wi 是每个数据点 x i x_i xi 的权重。
  • 几何平均数(Geometric Mean):几何平均数是所有数据点的乘积的 n n n 次方根,表示为 Π i = 1 n x i n \sqrt[n]{\Pi_{i=1}^{n} x_i} nΠi=1nxi
  • 谐波均值(Harmonic Mean):谐波均值是所有数据点倒数的平均值的倒数,计算公式为 n Σ i = 1 n 1 x i \frac{n}{\Sigma_{i=1}^{n} \frac{1}{x_i}} Σi=1nxi1n
  • 中位数(Median):如果你将数据集按大小排序,中位数是位于中间的那个数。对于奇数个数据点,它是中间的数;对于偶数个,它是中间两个数的平均值。
  • 众数(Mode):众数是数据集中出现次数最多的数。如果有多个这样的数,那么这个数据集就是多模的。

这些方法各有利弊和适用场景,理解它们的工作原理和适用性是进行有效数据分析的关键。

变异性测量:深入理解数据分布

方差(Variance) 是一种衡量数据分布的广度的指标。它量化了数据点相对于算术平均值的偏离程度。数学表达式为:

样本方差 = Σ i = 1 n ( x i − mean ( x ) ) 2 n − 1 \text{样本方差} = \frac{\Sigma_{i=1}^{n}(x_i - \text{mean}(x))^2}{n-1} 样本方差=n1Σi=1n(ximean(x))2

其中 n n n 是样本大小, x i x_i xi 是每一个数据点, mean ( x ) \text{mean}(x) mean(x) 是算术平均值。

# 使用 Python 的多种方式来计算样本方差
var_ = statistics.variance(x)
var_ = np.var(y, ddof=1)
var_ = z.var(ddof=1)
  • 1
  • 2
  • 3
  • 4

标准偏差(Standard Deviation)是方差的平方根,用于量化数据的分布范围。其数学表达式为: s = 方差 s = \sqrt{\text{方差}} s=方差

# 计算样本标准偏差的 Python 示例
std_ = statistics.stdev(x)
std_ = np.std(y, ddof=1)
std_ = z.std(ddof=1)
  • 1
  • 2
  • 3
  • 4

偏度(Skewness) 是衡量数据分布偏斜程度的统计量。它用于识别数据分布的对称性。

# 计算样本偏度的 Python 示例
skew_ = scipy.stats.skew(y, bias=False)
skew_ = z.skew()
  • 1
  • 2
  • 3

百分位数(Percentiles)是将数据集从小到大排序后,位于特定百分比位置的数据点。

# 计算百分位数的 Python 示例
q25, q50, q75 = np.percentile(y, [25, 50, 75])
  • 1
  • 2

极差(Ranges),数据范围或极差是数据集中最大值与最小值的差。

# 计算数据范围的 Python 示例
range_ = np.ptp(y)
  • 1
  • 2

理解这些变异性测量方法有助于更全面地了解数据的分布特性,从而进行更准确的分析和决策。

描述性统计摘要:一站式数据分析

在数据分析过程中,有时需要快速地获取数据集的核心统计指标。这些指标可以提供数据集的“大致轮廓”,帮助了解数据的分布、集中趋势和变异性。Python 中有一些工具可以方便地完成这项任务。

scipy.stats.describe() 函数提供了一种快速获取数据集多个描述性统计量的方法。它返回以下几个重要的统计量:

  • 观察数(nobs):数据集中的观察或元素数量。
  • 最小值和最大值(minmax):数据集的最小和最大值。
  • 平均值(mean):数据集的算术平均值。
  • 方差(variance):数据集的方差,表示数据点与平均值的偏离程度。
  • 偏度(skewness):衡量数据分布的偏斜程度。
  • 峰度(kurtosis):衡量数据分布的尖锐程度。
# 使用 scipy.stats.describe() 获取描述性统计摘要
result = scipy.stats.describe(y, ddof=1, bias=False)
  • 1
  • 2

使用 Pandas 的 .describe() 方法也提供了数据集的基础描述性统计信息,虽然不如 SciPy 全面,但对于快速了解数据集还是非常方便的。

  • 元素数量(count):数据集中的观察数。
  • 平均值(mean):数据集的平均值。
  • 标准偏差(std):数据集的标准偏差。
  • 最小值(min)和最大值(max):数据集的极值。
  • 四分位数(25%, 50%, 75%):数据集的下四分位数、中位数和上四分位数。
# 使用 Pandas 的 .describe() 方法获取描述性统计摘要
result = z.describe()
  • 1
  • 2

数据对之间相关性的度量

经常需要检查数据集中两个变量的对应元素之间的关系。假设有两个变量

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/751029
推荐阅读
相关标签