详解pandas.DataFrame.describe()(计算数据框统计信息)函数使用方法

  • Post category:Python

pandas.DataFrame.describe()是pandas库中DataFrame类型的一个方法,用于获取数据框的基本统计信息,包括数据的均值、标准差、最小值、25%、50%和75%的分位数以及最大值等等。常用于数据的概览分析和初步探索性数据分析。下面是更详细的使用方法的攻略。

标准的Markdown文本格式

在这个攻略中,我们将介绍以下内容:
1. 方法介绍
2. 方法参数
3. 方法应用实例
4. 常见问题及解决方法

方法介绍

pandas.DataFrame.describe()方法使用列类型(列需要是数字类型),并返回DataFrame类型,其中包含有关每列的基本统计信息。此方法会过滤缺失值。默认统计所有数字列。

方法参数

pandas.DataFrame.describe()方法有以下可用参数,其中一些参数默认为True。

  1. percentiles(list-like of float):返回数据分位数
  2. include(list-like of dtype or None,默认None):默认统计所有数字列
  3. exclude(list-like of dtype or None,默认None):默认不排除任何列
  4. datetime_is_numeric(bool,默认False):如果设置为True,则仅针对数字数据进行统计

方法应用实例

我们将使用pandas自带的iris(鸢尾花)数据进行示例。

我们首先需要导入pandas库和iris数据。

import pandas as pd
iris = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data')

示例一:应用于整个数据框

我们可以直接使用describe()方法,获取iris数据框中的基础统计信息。

iris.describe()

输出结果为:

       sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm)
count          150.000000         150.000000          150.000000         150.000000
mean             5.843333           3.054000            3.758667           1.198667
std              0.828066           0.433594            1.764420           0.763161
min              4.300000           2.000000            1.000000           0.100000
25%              5.100000           2.800000            1.600000           0.300000
50%              5.800000           3.000000            4.350000           1.300000
75%              6.400000           3.300000            5.100000           1.800000
max              7.900000           4.400000            6.900000           2.500000

输出结果包括每个属性统计的基础信息:
– 计数(count)
– 平均值(mean)
– 标准差(std)
– 最小值(min)
– 25%分位数
– 50%分位数
– 75%分位数
– 最大值(max)

示例二:应用于指定列

我们也可以使用describe()方法获取数据框的指定列的基础统计信息。

例如,下面我们提取iris数据框的’sepal length (cm)’和’sepal width (cm)’列,并使用describe()方法获取这两列的基础统计信息。

iris[['sepal length (cm)', 'sepal width (cm)']].describe()

输出结果为:

       sepal length (cm)  sepal width (cm)
count          150.000000         150.000000
mean             5.843333           3.054000
std              0.828066           0.433594
min              4.300000           2.000000
25%              5.100000           2.800000
50%              5.800000           3.000000
75%              6.400000           3.300000
max              7.900000           4.400000

此时输出结果只包括所请求列的统计信息。

常见问题及解决方法

问题一:没有计算某些列

在应用describe()方法之后,有时候会发现统计结果中没有某些列,可能是因为这些列不是数字类型,或者这些列中有缺失值。

我们可以使用.select_dtypes()方法过滤出特定类型的列(例如,过滤出只包括float或int类型的列):

iris.select_dtypes(include=['float', 'int']).describe()

问题二:更改分位数

默认情况下,describe()方法返回的统计信息中包括下列7个分位数[.25, .5, .75,]。如果需要返回不同的分位数,我们可以使用percentiles参数。

例如,获取包括.1、.2、.3、.4、.5、.6和.7的分位数:

iris.select_dtypes(include=['float', 'int']).describe(percentiles=[.1, .2, .3, .4, .5, .6, .7])

此时返回结果中包含指定的分位数。