python中pandas的df.describe()方法

df.describe()是Pandas库中的工具,用于生成DataFrame的统计摘要,包括计数、平均值、标准差、分位数和极值。示例展示了如何在Python中使用该函数获取数据分布和集中趋势信息。

df.describe() 是 pandas 库中用于生成数据框(DataFrame)的基本统计摘要的方法。

当你调用 df.describe() 时,它会返回一个包含各种统计信息的数据框,包括:

  • 计数(count):非缺失值的数量。
  • 平均值(mean):所有非缺失值的平均值。
  • 标准差(std):所有非缺失值的标准差。
  • 最小值(min):所有非缺失值的最小值。
  • 25%、50%、75%:分位数,分别对应第 25%、50%(中位数)、75% 的位置。
  • 最大值(max):所有非缺失值的最大值。

这些统计信息可以帮助你了解数据的分布、集中趋势和离散度。

示例1:

import pandas as pd

# 创建一个示例数据框
data = {'A': [1, 2, 3, 4, 5],
        'B': [5, 4, 3, 2, 1]}
df = pd.DataFrame(data)

# 使用 describe() 方法生成统计摘要
summary = df.describe()

print(summary)

输出:

              A         B
count  5.000000  5.000000
mean   3.000000  3.000000
std    1.581139  1.581139
min    1.000000  1.000000
25%    2.000000  2.000000
50%    3.000000  3.000000
75%    4.000000  4.000000
max    5.000000  5.000000

在这个示例中,数据框 df 中有两列 ‘A’ 和 ‘B’,df.describe() 生成了关于这两列的基本统计摘要。

示例2:
在这里插入图片描述
在这里插入图片描述

<think> 我们正在讨论pandas库中的DataFrame.describe()方法。这个方法用于生成描述性统计信息,这些信息总结了数据集分布的集中趋势、分散和形状,不包括NaN值。 该方法默认情况下会统计数值型列,但也可以通过设置参数来包括非数值型列。 默认情况下,对于数值型数据,describe()返回的统计信息包括: 1. count:非空值的数量 2. mean:平均值 3. std:标准差 4. min:最小值 5. 25%:第一四分位数(25%分位数) 6. 50%:第二四分位数(中位数) 7. 75%:第三四分位数(75%分位数) 8. max:最大值 如果DataFrame中包含非数值型列(如object类型),默认情况下describe()不会对这些列进行统计,除非设置参数include='all'。对于非数值型列,describe()返回的统计信息包括: 1. count:非空值的数量 2. unique:唯一值数量 3. top:出现最频繁的值 4. freq:最频繁值出现的次数 此外,describe()方法还可以通过percentiles参数自定义要显示的分位数。 下面通过代码示例来说明: </think> 在 Pandas 库中,`df.describe()` 是一个强大的**描述性统计方法**,用于快速生成数据集的摘要统计信息。它会根据列的数据类型自动计算相关统计量: ### 默认统计信息(针对数值型列): ```python import pandas as pd import numpy as np # 创建示例DataFrame data = { 'Age': [25, 32, 37, np.nan, 28, 45, 33], 'Salary': [50000, 72000, np.nan, 62000, 48000, 85000, 67000], 'Department': ['HR', 'IT', 'IT', 'Finance', 'HR', 'IT', 'Marketing'] } df = pd.DataFrame(data) # 使用describe() print(df.describe()) ``` ### 输出结果包含以下统计指标: | 统计量 | 说明 | 计算规则 | |--------|------|----------| | **count** | 非空值数量 | 忽略NaN | | **mean** | 算术平均值 | Σxᵢ/n | | **std** | 标准差 | √[Σ(xᵢ-μ)²/(n-1)] | | **min** | 最小值 | min(x) | | **25%** | 第一四分位数 | 25%数据小于此值 | | **50%** | 中位数 | 50%数据小于此值 | | **75%** | 第三四分位数 | 75%数据小于此值 | | **max** | 最大值 | max(x) | 输出示例: ``` Age Salary count 6.000000 6.000000 mean 33.333333 64000.000000 std 7.527727 13349.888347 min 25.000000 48000.000000 25% 28.750000 53500.000000 50% 32.500000 64500.000000 75% 36.500000 72250.000000 max 45.000000 85000.000000 ``` ### 对于非数值型列(如字符串、分类数据): 当使用 `include='all'` 参数时,会额外显示以下统计量: ```python print(df.describe(include='all')) ``` | 统计量 | 说明 | 示例输出 | |--------|------|----------| | **count** | 非空值数量 | 7 | | **unique** | 唯一值数量 | 4 | | **top** | 出现频率最高的值 | 'IT' | | **freq** | 最高频值的出现次数 | 3 | ### 自定义统计选项: ```python # 包含object类型并自定义百分位 print(df.describe( include='all', percentiles=[0.1, 0.5, 0.9] # 自定义百分位 )) # 仅针对特定数据类型 print(df.describe(include=[np.number])) # 仅数值列 print(df.describe(include=['object'])) # 仅字符列 # 添加额外统计量 print(df.describe().T.assign( range=lambda x: x['max'] - x['min'], cv=lambda x: x['std']/x['mean'] # 变异系数 )) ``` ### 特殊数据类型处理: 1. **时间序列数据**:自动计算首尾时间、频率等 ```python dates = pd.Series(pd.date_range('20230101', periods=7)) print(dates.describe()) ``` ``` count 7 unique 7 top 2023-01-01 00:00:00 freq 1 first 2023-01-01 00:00:00 last 2023-01-07 00:00:00 ``` 2. **布尔类型**:显示真假值比例 ```python bools = pd.Series([True, False, True, True]) print(bools.describe()) ``` ``` count 4 unique 2 top True freq 3 ``` ### 注意事项: 1. 默认排除NaN值进行计算 2. 标准差计算使用样本标准差(n-1分母) 3. 对于高度偏斜数据,建议结合其他统计方法 4. 大数计算时注意浮点精度问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值