Pandas DataFrame统计函数详解

在Pandas中,DataFrame提供了丰富的数据统计函数。以下是主要的统计函数分类和说明:

一、基本描述性统计

1. 核心描述统计函数

df.describe()  # 数值列的快速统计摘要
df.describe(include='all')  # 包含所有类型列的统计
df.describe(include=[np.number])  # 只包含数值列
df.describe(include=['O'])  # 只包含对象类型(字符串)列

df.mean()    # 平均值
df.median()  # 中位数
df.mode()    # 众数
df.std()     # 标准差
df.var()     # 方差
df.min()     # 最小值
df.max()     # 最大值
df.sum()     # 求和
df.count()   # 非空值计数

2. 分位数统计

df.quantile(0.25)  # 25%分位数
df.quantile(0.5)   # 50%分位数(中位数)
df.quantile(0.75)  # 75%分位数
df.quantile([0.1, 0.5, 0.9])  # 多个分位数

二、分布形状统计

df.skew()    # 偏度(衡量分布不对称性)
df.kurtosis()  # 峰度(衡量分布尖峰程度)
df.kurt()    # 峰度的别名

三、累积统计

df.cumsum()   # 累积和
df.cumprod()  # 累积乘积
df.cummax()   # 累积最大值
df.cummin()   # 累积最小值

四、百分比变化和差异

df.pct_change()  # 百分比变化
df.diff()        # 一阶差分

五、相关性和协方差

df.corr()        # 相关系数矩阵
df.corrwith(df2) # 与另一个DataFrame的相关性
df.cov()         # 协方差矩阵

六、唯一值和频次统计

df.nunique()     # 每列的唯一值数量
df.value_counts() # 值的频次统计(适用于Series)
df.unique()      # 唯一值数组(适用于Series)

七、排名统计

df.rank()        # 排名
df.rank(method='min')    # 最小排名
df.rank(method='dense')  # 密集排名
df.rank(ascending=False) # 降序排名

八、自定义聚合统计

# 使用agg进行多函数聚合
df.agg(['mean', 'sum', 'std'])
df.agg({'col1': 'mean', 'col2': ['sum', 'std']})

# 自定义函数
df.agg(lambda x: x.max() - x.min())  # 极差

九、分组统计

df.groupby('group_col').mean()      # 按组求平均
df.groupby('group_col').sum()       # 按组求和
df.groupby('group_col').agg({'col1': 'mean', 'col2': 'sum'})
df.groupby('group_col').describe()  # 按组的描述统计

十、滚动窗口统计

df.rolling(window=3).mean()   # 滚动平均
df.rolling(window=5).sum()    # 滚动求和
df.rolling(window=3).std()    # 滚动标准差
df.expanding().mean()         # 扩展窗口平均

十一、其他实用统计

df.idxmax()    # 最大值的索引位置
df.idxmin()    # 最小值的索引位置
df.mad()       # 平均绝对偏差
df.sem()       # 标准误差
df.prod()      # 乘积

使用示例

import pandas as pd
import numpy as np

# 创建示例DataFrame
df = pd.DataFrame({
    'A': np.random.randn(100),
    'B': np.random.randint(1, 10, 100),
    'C': np.random.choice(['X', 'Y', 'Z'], 100)
})

# 基本统计
print("描述统计:")
print(df.describe())

print("\n相关系数矩阵:")
print(df[['A', 'B']].corr())

print("\n每列唯一值数量:")
print(df.nunique())

# 分组统计
print("\n按C列分组的统计:")
print(df.groupby('C').agg({
    'A': ['mean', 'std', 'count'],
    'B': ['sum', 'mean']
}))

这些函数涵盖了数据分析和统计建模中大多数常见的统计需求,可以根据具体分析场景选择合适的函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值