Python 数据统计实战第一步:NumPy 与 Pandas 的统计功能详解

在数据科学领域,掌握高效的统计工具至关重要。NumPy 和 Pandas 作为 Python 的核心库,提供了强大的统计功能。本文将深入解析两者的核心统计方法,并通过实战示例展示其应用场景。


一、NumPy:数值计算基石

NumPy 的核心是多维数组对象 ndarray,支持高效的向量化运算。

1. 基础统计量
  • 集中趋势
    均值:$\bar{x} = \frac{1}{n}\sum_{i=1}^{n} x_i$
    中位数:有序数据中间值

    import numpy as np
    arr = np.array([2, 5, 8, 10])
    print("均值:", np.mean(arr))      # 输出 6.25
    print("中位数:", np.median(arr))  # 输出 6.5
    

  • 离散程度
    方差:$s^2 = \frac{1}{n-1}\sum_{i=1}^{n}(x_i - \bar{x})^2$
    标准差:$s = \sqrt{s^2}$

    print("标准差:", np.std(arr, ddof=1))  # ddof=1 计算样本标准差
    

2. 高级统计操作
  • 百分位数
    print("75分位数:", np.percentile(arr, 75))  # 输出 8.5
    

  • 相关系数矩阵
    data = np.array([[1, 2], [3, 4], [5, 6]])
    print("相关系数矩阵:\n", np.corrcoef(data.T))
    


二、Pandas:结构化数据分析

Pandas 的核心数据结构 DataFrameSeries 支持表格化数据处理。

1. 数据聚合统计
import pandas as pd
df = pd.DataFrame({
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8]
})

# 一次性输出多指标
print(df.agg(['mean', 'std', 'min']))

输出:

            A         B
mean  2.500000  6.500000
std   1.290994  1.290994
min   1.000000  5.000000

2. 分组统计
df['Category'] = ['X', 'X', 'Y', 'Y']
print(df.groupby('Category').mean())

输出:

          A    B
Category        
X        1.5  5.5
Y        3.5  7.5

3. 滑动窗口统计
print(df['A'].rolling(window=2).mean())  # 滑动窗口均值


三、NumPy 与 Pandas 对比
功能 NumPy 优势 Pandas 优势
数据结构 多维数组高效计算 带标签的行列数据
缺失值处理 需手动处理 自动处理 NaN
分组聚合 需自定义实现 内置 groupby
时间序列 不支持 原生时间索引

四、实战案例:销售数据分析

假设数据集 sales.csv 包含:

  • date: 日期
  • product: 产品类别
  • revenue: 收入
# 读取数据
df = pd.read_csv('sales.csv', parse_dates=['date'])

# 按产品统计月均收入
monthly = df.resample('M', on='date').mean(numeric_only=True)
product_stats = df.groupby('product')['revenue'].agg([np.mean, np.std])

# 可视化趋势
import matplotlib.pyplot as plt
monthly['revenue'].plot(title="月收入趋势")
plt.show()


五、最佳实践建议
  1. 数据清洗优先:处理缺失值(df.fillna())和异常值
  2. 混合使用场景
    • 数值计算:优先用 NumPy 向量化
    • 结构化分析:用 Pandas 分组/聚合
  3. 性能优化:大数据集避免循环,多用 apply() 或向量化操作

通过灵活运用 NumPy 和 Pandas,可高效完成从基础统计到复杂分析的完整流程,为数据科学项目奠定坚实基础。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐