Pandas常用统计数据方法

import pandas as pd

1、准备数据

假设有 5 个人,分别参加了 4 门课程,获得了对应的分数

同时这个 5 个人分别负责的项目个数 在 ‘Project_num’ 列中显示

data = {‘name’ : pd.Series([‘Alice’, ‘Bob’, ‘Cathy’, ‘Dany’, ‘Ella’, ‘Ford’, ‘Gary’, ‘Ham’, ‘Ico’, ‘Jack’]),

    'Math_A' : pd.Series([1.1, 2.2, 3.3, 4.4, 5, 3.2, 2.4, 1.5, 4.3, 4.5]),

    'English_A' : pd.Series([3, 2.6, 2, 1.7, 3, 3.3, 4.4, 5, 3.2, 2.4]),

    'Math_B' : pd.Series([1.7, 2.5, 3.6, 2.4, 5, 2.2, 3.3, 4.4, 1.5, 4.3]),

    'English_B' : pd.Series([5, 2.6, 2.4, 1.3, 3, 3.6, 2.4, 5, 2.2, 3.1]),

    'Project_num' : pd.Series([2, 3, 0, 1, 7, 2, 1, 5, 3, 4]),

    'Sex' : pd.Series(['F', 'M', 'M', 'F', 'M', 'F', 'M', 'M', 'F', 'M'])

 }

df = pd.DataFrame(data)

print(df)

print(“----------------”)

print(df.median())

print(“----------------”)

2、数据的总体描述

统计行数 len(df)

print(len(df)) # 不包括表头(列标签)

统计有多少种不同的值 df[‘lable’].nunique()

这些人中有多少种性别呢

print(df[‘Sex’].nunique())

对 列 中每种不同的值 进行计数 df[‘lable’].value_counts()

统计每种性别有多少人数

print(df[‘Sex’].value_counts())

整体统计描述 df.describe()

仅对数值型

对整张表格进行统计描述(这里仅对数值形的列进行统计)

print(“----------------”)

print(df.describe())

print(“----------------”)

对所有类型 df.describe(include=‘all’)

对整张表格进行统计描述(所有类型进行统计)

print(df.describe(include=‘all’))

对指定的列

对指定的列进行统计描述

print(“----------------”)

print(df.Math_A.describe())

print(“----------------”)

3、指定统计方式

求和 sum()

print(df.Project_num.sum())

计数 df.count()

print(df.count())

中位数 df.median()

print(df.median())

分位数 df.quantile()

print(df.quantile([0.25,0.75]))

最大值 / 最小值 df.max() / df.min()

print(df.max())

print(df.min())

字符串在计算机表示中也是有大小区别的

均值 df.mean()

仅对数值类型进行求解

print(df.mean())

方差 / 标准差 df.var() / df.std()

仅对数值类型进行求解

print(df.var())

print(df.std())

4、批量操作 df.apply()(对每个元素应用同一个自定义函数)

对整张表格

def double (x):

return x*2

print(df.apply(double))

对于数值就是 乘以 2

但是对于字符串,那就是重复2遍的操作

对指定的列

def double (x):

return x*2

print(df.Math_B.apply(double))
在这里插入图片描述

### 使用 Pandas 进行数据统计方法和函数 #### 1. 描述性统计 Pandas 提供了内置的描述性统计方法,能够快速获取数据的整体概况。最常用的函数是 `describe()`,它可以生成数值型列的基本统计数据,包括计数、均值、标准差、最小值、四分位数和最大值。 ```python df.describe() ``` 此函数默认仅作用于数值类型的列[^1]。如果希望对非数值类型的数据也应用类似的统计功能,则可以通过传递参数来自定义行为。 --- #### 2. 单变量统计 对于单一列(Series),可以调用一系列基本统计方法来获得更详细的指标: - **均值**:`mean()` - **中位数**:`median()` - **最大值**:`max()` - **最小值**:`min()` - **标准差**:`std()` - **方差**:`var()` 例如,计算某一列的最大值和最小值: ```python maximum_value = df['column_name'].max() minimum_value = df['column_name'].min() ``` 还可以通过 `quantile(q)` 来求任意百分位数,其中 q 范围为 [0, 1]: ```python first_quartile = df['column_name'].quantile(0.25) third_quartile = df['column_name'].quantile(0.75) ``` --- #### 3. 自定义聚合统计 当需要执行复杂的多维统计时,可使用 `agg()` 或者 `aggregate()` 函数。这两个名称实际上是同一个方法的不同称呼[^2]。它允许传入多个统计量作为列表或字典形式,从而一次性完成多项任务。 示例代码如下所示: ```python result = df[['col1', 'col2']].agg(['sum', 'mean', 'count']) print(result) ``` 这里我们将两列分别进行了求和(sum)、平均(mean)以及计数(count)的操作。 另外也可以针对不同的字段指定各自的统计项目: ```python custom_stats = df.aggregate({ 'price': ['min', 'max'], 'quantity': 'sum' }) ``` --- #### 4. 唯一值与频率统计 有时候我们需要知道某列有多少个独一无二的类别及其对应的频次分布情况。此时可以用到以下几个函数: - **unique()**: 返回数组中所有不重复项组成的 NumPy 数组; - **nunique()**: 统计唯一值得数量; - **value_counts()**: 对每种类别进行计数排序,默认降序排列。 例子: ```python uniques = df['category_column'].unique() counts_per_category = df['category_column'].value_counts(normalize=True)*100 # 百分数显示 ``` --- #### 5. 相关性和协方差分析 研究两个连续变量之间是否存在线性关系时常会涉及相关系数矩阵(correlation matrix)的概念。Pandas 的 corr() 方法可以直接得出 Pearson/Spearman/Kendall 种类的相关度测量结果;而 cov() 则用来评估两者间的协变程度[^3]。 样例程序片段: ```python correlations = df.corr(method="pearson") covariance_matrix = df[['x','y']].cov() ``` --- #### 6. 分组统计(Group By) 最后值得一提的是 groupby 功能,这是数据分析领域极为重要的概念之一。通过对某个键(key)划分子集后再逐一分开施加相同逻辑操作达到批量处理的目的。结合之前提到的各种统计手段即可形成复杂报表输出。 简单案例分享: ```python grouped_results = df.groupby('group_key').agg({'value_col':['mean','std'],'another_val':'sum'}) ``` 以上就是关于如何运用 Pandas 实现常见数据统计的一些介绍[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值