零基础上手Python数据分析 (16):DataFrame 常用统计分析方法

写在前面

—— 超越简单排序,探索数据内在规律,掌握Pandas统计分析基础

上一篇博客,我们学习了如何使用 Pandas 对 DataFrame 进行排序和排名,这使得我们能够更好地组织数据并快速定位关键信息。 然而,仅仅对数据进行排序和排名,还不足以完全理解数据。 要想更深入地解读数据背后的故事,我们需要运用 统计分析 (Statistical Analysis) 的方法。

统计分析:从数据到洞察的关键桥梁

统计分析 是一系列用于 收集、整理、分析、解释和呈现数据 的方法。 通过统计分析,我们可以:

  • 描述数据的集中趋势: 了解数据的 “中心” 在哪里,例如平均值、中位数。
  • 描述数据的离散程度: 了解数据的波动范围和分散情况,例如标准差、方差、最大最小值。
  • 了解数据的分布形态: 观察数据的分布形状,例如是否对称、是否存在偏态。
  • 探索变量之间的关系: 分析不同变量之间是否存在相关性,以及相关的强度和方向。
  • 从样本推断总体: (更高级的统计推断,本篇不涉及)

Excel 的统计函数 vs Pandas 的集成化分析能力

Excel 用户对统计分析并不陌生,Excel 提供了丰富的统计函数,例如 AVERAGE, MEDIAN, STDEV, VAR, MIN, MAX, CORREL 等,可以方便地计算各种统计指标。 然而,在处理大型数据集或进行更复杂的统计分析时,Excel 也可能遇到瓶颈:

  • 函数应用范围受限: Excel 函数通常应用于单元格或单元格区域,对于整列或整个表格的批量统计分析,操作可能不够便捷。
  • 与其他分析步骤集成不便: 统计计算结果通常需要手动复制或与其他分析步骤(如图表制作、模型构建)分开进行,难以形成流畅的分析流程。
  • 性能问题: 对超大数据集进行复杂的统计计算时,Excel 性能可能会下降。

Pandas 统计分析:高效、集成、深入的数据探索

Pandas 将常用的统计分析方法 直接集成 到了 DataFrame 和 Series 对象中,使得统计分析与数据处理、数据可视化等环节无缝衔接,提供了 高效、集成、深入 的数据探索能力:

  • 内置常用统计方法,调用方便快捷: Pandas DataFrame 和 Series 对象内置了大量常用的统计方法 (例如 .describe(), .mean(), .median(), .std(), .corr() 等),只需一行代码即可快速计算各种统计指标。
  • 面向列或行的批量计算,效率高: Pandas 的统计方法通常可以 按列或按行 进行批量计算,处理速度快,效率高。
  • 与 GroupBy 结合,实现分组统计: 可以将统计方法与 groupby() 结合使用,轻松实现分组统计分析,从不同维度深入了解数据。
  • 为数据可视化和建模提供基础: Pandas 计算得到的统计结果可以直接用于数据可视化 (例如绘制箱线图、直方图、相关系数矩阵热力图) 或作为机器学习模型的输入特征。

本篇博客将重点讲解 Pandas DataFrame 中常用的统计分析方法,包括描述性统计、相关性分析和基本的分布分析,让你掌握数据探索的基本统计技能,能够从数据中提取更多有价值的信息,解读数据背后的故事!

📊 一、描述性统计 (Descriptive Statistics):快速了解数据全貌

描述性统计 是统计分析的基础,它通过计算一系列 概括性统计量 来描述数据集的 基本特征,帮助我们快速了解数据的 集中趋势、离散程度和分布形状

1. .describe() 方法:一键获取常用统计量

.describe() 方法是 Pandas 中进行描述性统计 最常用、最便捷 的方法。 它可以 一键计算 DataFrame 中 数值类型列 的常用描述性统计量。

.describe() 方法基本语法:

df.describe(percentiles=None, include=None, exclude=None)

常用参数说明 (常用参数):

  • percentiles (可选,默认为 [.25, .5, .75]): 百分位数 (Percentiles) (列表),指定要计算的百分位数。 默认计算 25%、50% (中位数) 和 75% 分位数。 可以自定义百分位数列表,例如 percentiles=[.1, .5, .9] 表示计算 10%、50% 和 90% 分位数。
  • include (可选,默认为 None): 包含的数据类型 (Include dtypes) (列表或 'all')。 指定要包含在描述性统计结果中的数据类型。
    • 默认 (None): 只包含 数值类型 (int, float) 的列。
    • include='object': 只包含 对象类型 (object) (通常是字符串) 的列。
    • include='all': 包含 所有类型 的列。
    • include=['int64', 'float64']: 只包含 指定数据类型 的列。
  • exclude (可选,默认为 None): 排除的数据类型 (Exclude dtypes) (列表)。 指定要 排除 在描述性统计结果之外的数据类型。 例如 exclude=['object'] 表示排除对象类型的列。 includeexclude 参数不能同时使用。

示例:使用 .describe() 获取数值列的描述性统计

import pandas as pd
import numpy as np

data = {
   
   '年龄': [25, 30, 28, 35, 22, 30, np.nan],
        '成绩': [85.0, 92.0, 78.0, 88.0, 95.0, 78.0, 90.0],
        '工龄': [2, 5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kakaZhui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值