python pandas常用统计函数总结 -- 以及与groupby, pivot_table, describe, crossTab等方法结合使用的比较

1. 背景描述

数据分析中经常需要对数据特征的多种不同方式进行分组或归类,然后与统计函数结合使用,寻找信息的规律、数据间的差异或相关性等,从而更好地从数据中挖掘有价值的信息,服务于企业的运营和特定的问题解决。

本文主要在这两方面进行总结:

  1. 数据分析中常用的统计函数(共15个聚合函数-python)的用法
  2. 与4种不同的分组、归类方法结合使用的效果比较

2. 数据分析常用统计函数总结

2.1 常用的统计值对应的python函数
  1. 平均数:np.mean()
  2. 总和:np.sum()
  3. 中位数:np.median()
  4. 最大值:np.max()
  5. 最小值:np.min()
  6. 频次(计数): np.size()
  7. 方差:np.var()
  8. 标准差:np.std()
  9. 乘积:np.prod()
  10. 协方差: np.cov(x, y)
  11. 偏度系数(Skewness): skew(x)
  12. 峰度系数(Kurtosis): kurt(x)
  13. 正态性检验结果: normaltest(np.array(x))
  14. 四分位数:np.quantile(q=[0.25, 0.5, 0.75], interpolation=“linear”)
  15. 四分位数:describe() – 显示25%, 50%, 75%位置上的数据
  16. 相关系数矩阵(Spearman/ Person/ Kendall)相关系数: x.corr(method=“person”))
  17. 众数:df.mode()
2.2 示例代码

**基本使用方法 **

import numpy as np
import pandas as pd
import scipy.stats as ss

# 1. 常见统计函数的使用
x = [5, 7, 6, 5, 8, 4, 7, 6, 4, 5]
print("x的平均值:", np.mean(x))
print("x总和是:", np.sum(x))
print("x的中位数:", np.median(x))
print("x的最大值:", np.max(x))
print("x的最小值:", np.min(x))
print("x的数据个数:", np.size(x))
print("x的方差:", np.var(x))
print("x的标准差:", np.std(x).round(2))
print("x的乘积:", np.prod(x))
print("x的偏度(Skewness):", skew(x))
print("x的四分位数:", np.quantile(x, [0.25, 0.5, 0.75]))
print("x的正态检验结果:", ss.normaltest(np.array(x)))

在这里插入图片描述

# 2. 计算数据样本的相关系数矩阵:
x = pd.DataFrame([range(1, 5), range(2, 6)])
print("Pearson相关系数:\n", x.corr(method="pearson"))
print("Spearman相关系数\n:", x.corr(method="spearman"))
print("Kendall相关系数\n:", x.corr(method="kendall"))
x1 = x.loc[0]
x2 = x.loc[1]
print("x1与x2间的pearsom相关系数:", x1.corr(x2, method="pearson"))

在这里插入图片描述

# 3. 计算DataFrame的众数
df = pd.DataFrame([[1, 5], [9, -4], [3, 8], [4, -4], [1, 6]])
df.columns = ["A", "B"]
display(df)
# 计算数据表df的众数
df.mode()

在这里插入图片描述

3. 聚合函数与分组归类方法的联合使用(Python代码)

3.1 DataFrame数据表中分组进行统计 – 与groupby()联合使用

# 3.1.1 建立数据表
import numpy as np
import pandas as pd 
df = pd.DataFrame({"名称": ["A", "B", "A", "A", "B", "A"],
                   "颜色": ["红色", "蓝色", "红色", "蓝色", "蓝色", "红色"],
                   "尺寸": ["大", "大", "小", "小", "大", "大"],
                   "厚度": [2, 5, 1, 2, 4, 5],
                   "数量": [10, 20, 15, 30, 10, 20]})
df

在这里插入图片描述

# 3.1.2 使用groupby()根据“名称”对“数量”进行分组统计
df.groupby(["名称"])["数量"].sum()

在这里插入图片描述

# 3.1.3 groupby()函数传入分组列表,对数据进行多层分组统计
df.groupby(["名称", "颜色"])["数量"].sum()

在这里插入图片描述

# 3.1.4 在之前的基础上,对被统计的数据传入列表,达到多层分组分类统计的效果 
df.groupby(["名称", "颜色"])[["数量", "厚度"]].sum()

在这里插入图片描述
3.2 数据表中多层筛选的应用 – 透视表pivot_table的应用

# 3.2.1 简单的分组分类统计汇总
pd.pivot_table(df, values=["数量"], index=["名称"], columns=["颜色"], aggfunc=np.sum,fill_value=0, margins=True)

在这里插入图片描述

# 3.2.2 多层级的分组和分类统计汇总
pd.pivot_table(df, values=["数量"], index=["名称", "尺寸"], columns=["颜色"], aggfunc=np.sum, fill_value=0, margins=True)

在这里插入图片描述

# 3.2.3 多层分组统计不同指标的不同统计量
pd.pivot_table(df, values=["数量", "厚度"], index=["名称"], columns=["颜色"], aggfunc={"数量": np.sum, "厚度": np.var}, fill_value=0, margins=True)

在这里插入图片描述
蓝色框 – 分组计算厚度的方差
红色框 – 分组同步计算数量的总和
这种方法不但快速便捷,还能在同一个平面内展示不同指标使用不同的统计量计算的结果。

3.3 四分位数 – describe()的应用方法

# describe()函数 -- 对数据表中的所有的数值型进行快速的统计
df.describe()

在这里插入图片描述
3.4. 交叉表crossTab()函数

# 交叉表crossTab()函数 -- 交叉表是用于统计分组频率的特殊透视表
tab_ = pd.crosstab(df["名称"], df["颜色"], margins=True)
tab_

在这里插入图片描述

3、结束语

综述以上4种方法,基本上都会认为pivot_table()相对而言是最便捷、灵活且功能强大的统计分析函数,也是在日常工作中常用的方法之一。其实,每种方法都有特色和针对的方向,根据实际情况灵活运用即可。

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值