Pandas的描述、解释

477 阅读11分钟

在本教程中,我将解释如何用Pandas描述方法来计算汇总统计。

本教程将解释describe() 方法是做什么的,语法是如何工作的,并将向你展示一步步的例子。

如果你需要特定的东西,你可以点击以下任何一个链接,它将带你到教程中的相应部分。

目录

好的,让我们先简单介绍一下Pandas描述方法的作用。

Pandas描述方法的快速介绍

describe() 方法计算并显示Python数据框架的汇总统计数据。(它也对数据框架的列和Pandas系列对象进行操作)。

A simple visual example of how the Pandas describe method calculates summary statistics on a Python dataframe.

所以如果你有一个Pandas数据框架或系列对象,你可以使用describe方法,它将输出类似的统计数据。

  • 平均数
  • 中位数
  • 标准差
  • 最小值
  • 最大值
  • 百分位数

说了这么多,计算的确切统计数据取决于你如何使用语法。

考虑到这一点,让我们看一下语法。

潘达斯的语法描述

在这里,我们将看一下Pandas describe方法的语法。

我将向你展示如何在以下情况下使用describe方法。

  • 数据帧
  • Pandas系列对象
  • 数据框架的列(实际上就是系列对象)。

此外,我还会解释一些可选的参数,我们可以用它们来修改该技术的工作方式。

关于惯例的简单说明

在前面的语法解释中,我们将假设我们已经有一个Pandas数据框架或Pandas系列对象。

pandas.dataframe.describe语法

首先,让我们看看如何在Pandas数据框架上使用describe方法。

这非常简单。

你只需输入数据框架的名称,然后.describe()

An image that explains the Pandas describe syntax for dataframes.

默认情况下,如果你只输入your_dataframe.describe() ,describe方法将计算数据框架中所有数字变量的汇总统计。

还有一些可选的参数,我们可以用来修改该方法,稍后我们会讨论这些参数。

pandas.series.describe 语法

你也可以在pandas系列对象上使用Pandas describe方法,而不是数据框架。

最常见的用法是在Pandas数据框架的各个列上使用describe() (记住,数据框架的每一列在技术上都是一个Pandas系列)。

你可以像这样在数据框架的列上使用describe方法。

An image that explains the syntax of the Pandas describe method for Pandas series objects.

所以你输入你的数据框架的名字,然后是一个'点',然后是列的名字,然后是.describe()

再一次,在括号内还有一些额外的参数,你可以使用。 这些将改变该方法的行为。

既然如此,让我们来看看这些附加参数

Pandas的参数描述

你可以用来修改Pandas describe方法的几个重要参数是:

  • include
  • exclude
  • percentiles
  • datetime_is_numeric

让我们来看看其中的几个。

include(可选)

include 参数可以让你指定对哪些数据类型进行操作,并将其纳入输出的描述性统计。

这个参数可能的参数有:

  • 'all' (这将包括所有变量)
  • numpy.number (这将包括数字型变量)
  • object (这将包括字符串变量)
  • 'category' (这将包括潘达斯类别变量)

请注意,如上所示,其中一些参数需要用引号括起来!(我会向你展示一些例子)。

此外,你可以在一个Python列表中提供多个这些参数。

注意,当你对一个系列对象使用 describe 时,这个参数会被忽略

exclude(可选)

include 参数使你可以指定在描述性统计中排除哪些数据类型。(注意:这与上面解释的include 参数非常相似。)

这个参数可能的参数是:

  • numpy.number (这将排除数字型变量)
  • object (这将排除字符串变量)
  • 'category' (这将排除Pandas类别变量)

请注意,如上所示,其中一些参数需要用引号括起来!(我会给你看一些例子)。

此外,你可以在一个Python列表中提供多个这些参数。

注意,当你对一个系列对象使用 describe 时,这个参数会被忽略

percentiles(可选)

percentiles 参数可以让你指定在描述性统计中包括哪些百分位数,当describe() 方法对数字变量进行操作时。

默认情况下,describe() 将包括第25和75个百分位数。

你可以提供一个列表或类似列表的0到1之间的数字序列作为这个参数的参数。

例如,如果你设置percentiles = [.1, .9] ,describe方法将返回第10个百分位数和第90个百分位数(但不包括第25个和第75个百分位数)。

注意,无论你为percentiles 参数提供什么参数,describe方法都会返回中位数(50分位数)。

如何使用Pandas describe来计算汇总统计的例子

好的,现在我们看完了语法,让我们来看看如何用describe() 方法计算汇总统计的一些例子。

例子:

在你运行这些例子之前,你需要运行一些初步的代码:

导入软件包

首先,确保你导入了Pandas、Numpy和Seaborn

import pandas as pd
import numpy as np
import seaborn as sns

我们显然需要Pandas包用于describe 方法,但是当我们使用include 参数时,我们将使用Numpy。 我们还需要Seaborn来加载我们的数据集。

加载数据

现在,让我们加载我们要使用的数据集。

在这些例子中,我们将使用titanic 数据集,它与Seaborn软件包一起包含。

要加载titanic 数据集,你可以运行以下代码:

titanic = sns.load_dataset('titanic')

现在我们已经加载了我们的包,并且有了我们的数据集,我们可以继续我们的例子了。

例子1:描述一个数据框架

让我们从一个简单的例子开始。

在这里,我们将对整个数据框架使用Pandas describe。 默认情况下,这将返回所有数字变量的汇总统计。

让我们来运行代码。

titanic.describe()

输出

         survived      pclass         age       sibsp       parch        fare
count  891.000000  891.000000  714.000000  891.000000  891.000000  891.000000
mean     0.383838    2.308642   29.699118    0.523008    0.381594   32.204208
std      0.486592    0.836071   14.526497    1.102743    0.806057   49.693429
min      0.000000    1.000000    0.420000    0.000000    0.000000    0.000000
25%      0.000000    2.000000   20.125000    0.000000    0.000000    7.910400
50%      0.000000    3.000000   28.000000    0.000000    0.000000   14.454200
75%      1.000000    3.000000   38.000000    1.000000    0.000000   31.000000
max      1.000000    3.000000   80.000000    8.000000    6.000000  512.329200

解释

在这里,我们用所谓的 "点语法 "调用了describe() 方法。

我们输入了数据框架的名称,然后是.describe()

默认情况下,describe计算了

  • 计数
  • 平均数
  • 标准差
  • 最小值和最大值
  • 第25、第50和第75个百分位数

再次注意,在默认情况下,该方法只显示数字变量的统计数据。 我们将在例3中改变这一点。

例子2:描述一个单列

接下来,让我们对我们的数据框架的单列进行操作。

在这里,我们将使用 "点语法 "首先检索一个单一的变量,即age ,然后我们将对该列使用describe方法。

让我们看一下。

titanic.age.describe()

输出

count    714.000000
mean      29.699118
std       14.526497
min        0.420000
25%       20.125000
50%       28.000000
75%       38.000000
max       80.000000
Name: age, dtype: float64

解释

当我们输入代码titanic.age ,Python 将从数据框架中检索age 变量。

从那里,我们可以再次使用点语法来调用describe() 方法。

所以在这里,代码titanic.age.describe() 只为age 变量计算汇总统计。

实例3:计算数字变量的统计摘要

现在,让我们回到我们的数据框架。

在这里,我们要明确地指定我们要包括的变量。

具体来说,我们将指出我们只想包括数字变量。

让我们运行代码,然后我将解释。

titanic.describe(include = [np.number])

输出

         survived      pclass         age       sibsp       parch        fare
count  891.000000  891.000000  714.000000  891.000000  891.000000  891.000000
mean     0.383838    2.308642   29.699118    0.523008    0.381594   32.204208
std      0.486592    0.836071   14.526497    1.102743    0.806057   49.693429
min      0.000000    1.000000    0.420000    0.000000    0.000000    0.000000
25%      0.000000    2.000000   20.125000    0.000000    0.000000    7.910400
50%      0.000000    3.000000   28.000000    0.000000    0.000000   14.454200
75%      1.000000    3.000000   38.000000    1.000000    0.000000   31.000000
max      1.000000    3.000000   80.000000    8.000000    6.000000  512.329200

解释

在这里,注意我们以类似于例1的方式调用了describe方法。

但是注意到在括号内,我们有语法include = [np.number] 。 请记住,include 参数使我们能够指定我们想要包括哪些类型的变量。 在这里,语法np.number 表示我们要包括数字变量(即Numpy数字)。

请注意,我们将这个参数的参数以列表的形式呈现。 当你可以提供多个参数时,这在Pandas中是非常常见的。 例如,试一下几个不同数据类型的列表:titanic.describe(include = [np.number, object])

例子4:计算字符串变量的汇总统计

现在,我们将做一个与例3类似的例子,但略有不同。

在例3中,我们计算了数字变量的汇总统计量。

这里,我们将计算字符串变量的汇总统计。

titanic.describe(include = [object])

输出

         sex embarked  who  embark_town alive
count    891      889  891          889   891
unique     2        3    3            3     2
top     male        S  man  Southampton    no
freq     577      644  537          644   549

解释

那么这里发生了什么?

我们调用了describe() 方法,在括号内,我们使用了语法include = [object] 。 这里,object 指的是字符串变量,所以Pandas describe方法计算了字符串列的汇总统计。

请注意,所计算的统计数据实际上与数字变量的统计数据不同。

对于数字变量,describe() ,计算诸如最小值、最大值、平均值、百分位数等。

但是对于这些字符串变量,describe() 已经计算了计数、唯一值的数量、最频繁的值以及最频繁值的频率。

例子5:获取 "类别 "变量的汇总统计数据

现在,让我们对 "类别 "变量进行操作。

这与前面的例子非常相似。

让我们运行代码,然后我将解释。

titanic.describe(include = ['category'])

输出

        class deck
count     891  203
unique      3    7
top     Third    C
freq      491   59

解释

这与例3例4非常相似。

在这里,我们使用describe方法来计算'category'变量的汇总统计。 我们用代码include = ['category'] 来告诉Pandas describe来做这件事。

注意,输出结果与字符串变量的输出结果相似(我们在例子4中看到的)。 输出包括计数、唯一值的数量、最频繁的值(即 "顶级 "值),以及最频繁值的频率。

在这一点上,你可能想知道字符串和类别之间有什么区别。

字符串和类别变量是相似的,但是当只有几个独特的值时,我们通常使用类别。 如果有许多独特的值(例如,名字、句子、非结构化文本数据),那么字符串(即object 数据)应该更好。

也就是说,你需要注意你的数据框架中有哪些数据类型。

例子6:指定输出中包括哪些百分位数

最后,让我们使用percentiles 参数。 当我们对数字变量进行操作时,这使我们能够指定在输出中包括哪些百分位数。

让我们运行代码,然后我将解释。

titanic.describe(percentiles = [.1, .9])

输出

         survived      pclass         age       sibsp       parch        fare
count  891.000000  891.000000  714.000000  891.000000  891.000000  891.000000
mean     0.383838    2.308642   29.699118    0.523008    0.381594   32.204208
std      0.486592    0.836071   14.526497    1.102743    0.806057   49.693429
min      0.000000    1.000000    0.420000    0.000000    0.000000    0.000000
10%      0.000000    1.000000   14.000000    0.000000    0.000000    7.550000
50%      0.000000    3.000000   28.000000    0.000000    0.000000   14.454200
90%      1.000000    3.000000   50.000000    1.000000    2.000000   77.958300
max      1.000000    3.000000   80.000000    8.000000    6.000000  512.329200

解释

因此,输出结果与例1的输出结果非常相似。 记得在例1中,我们对整个数据框架进行了操作,但默认情况下,describe只包含了数字变量的统计信息。

在这里,describe方法只包含了数字变量的统计数据。

但是,请看百分位数。 该方法没有包括第25和第75个百分位数的统计信息(这是默认的),而是包括了第10个百分位数和第90个百分位数的统计信息。

为什么?

我们用percentiles 参数明确地强制了这种行为。 具体来说,我们设置了percentiles = [.1, .9] 。 这使得Pandas描述包含了第10个百分位数和第90个百分位数的统计信息,而不是第25个和第75个百分位数。

一些补充说明。

请注意,中位数(第50个百分位数)仍然被包括在内。

另外,注意当我们使用这个参数时,我们需要在Python列表中把百分位数以小数形式呈现。[.1, .9].

本教程应该已经帮助你理解了Pandas描述方法,但如果你真的想掌握Pandas的数据操作,还有很多东西需要学习。

而如果你想更广泛地学习数据科学,肯定还有更多的东西要学,比如数据可视化和机器学习。