《Python 数据统计实战第一步:NumPy 与 Pandas 的统计功能详解》
·
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 的核心数据结构 DataFrame 和 Series 支持表格化数据处理。
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()
五、最佳实践建议
- 数据清洗优先:处理缺失值(
df.fillna())和异常值 - 混合使用场景:
- 数值计算:优先用 NumPy 向量化
- 结构化分析:用 Pandas 分组/聚合
- 性能优化:大数据集避免循环,多用
apply()或向量化操作
通过灵活运用 NumPy 和 Pandas,可高效完成从基础统计到复杂分析的完整流程,为数据科学项目奠定坚实基础。
更多推荐
所有评论(0)