Pandas Describe函数介绍

1,823 阅读5分钟

如何使用Pandas Describe函数?

pandas.describe 函数用于获取一个给定数据框架的描述性统计摘要。这包括所有特征的平均值、计数、标准差、百分比和最小-最大值。

在这篇文章中,你将了解describe函数的不同特征。我们还将深入了解该函数的参数。

pandas.describe

  • 语法: pandas.describe(percentiles=None, include=None, exclude=None, datetime_is_numeric=False)目的:生成描述性统计。描述性统计包括那些总结数据集分布的中心趋势、分散度和形状的统计,不包括NaN值。可以分析数字和对象系列,以及混合数据类型的DataFrame列集。
  • 参数:
    • percentiles: 类似于数字的列表在输出中包含的百分位数。默认为[.25, .5, .75],它返回第25、50和75个百分位数。
    • include: 'all', list-like of dtypes or None (default) 要包含在结果中的数据类型的白名单。'全部'。输入的所有列都将包括在输出中,一个类似dtypes的列表。将结果限制在所提供的数据类型上, None (默认) :结果将包括所有数字列。
    • exclude: ist-like of dtypes or None (default) 一个要从结果中省略的数据类型黑名单。一个类似于dtypes的列表。从结果中排除所提供的数据类型,无(默认)。结果将不包括任何数据。
    • datetime_is_numeric: bool, default False是否将datetime dtypes视为数字。这将影响到为该列计算的统计数据。对于DataFrame输入,这也控制了是否默认包括日期时间列。
  • 返回:系列或数据框架所提供的系列或数据框架的汇总统计数据。
# Import Packages
import pandas as pd
import warnings

warnings.filterwarnings("ignore")

Pandas Describe函数

Describe函数返回数据框架或系列的统计摘要。这包括计数、平均值、中位数(或50分位数)标准差、最小-最大值和列的百分位数值。要执行这个功能,请将.describe() 到数据框架或系列。

1.系列上的潘达斯描述函数

当pandas描述函数被应用于系列对象时,其结果也会以系列的形式返回

# Create a Series
numericSeries = pd.Series([1,4,6,53,2,2,1,1])

# Apply describe function
numericSeries.describe()
count     8.000000
mean      8.750000
std      17.966238
min       1.000000
25%       1.000000
50%       2.000000
75%       4.500000
max      53.000000
dtype: float64

2.Pandas Describe function on DataFrame

当pandas describe函数应用于一个数据框时,其结果也会以数据框的形式返回。这个数据框架将由数据框架的所有数字特征的统计摘要组成。

# Create a dataframe
df = pd.DataFrame({
                    'Subject_1_Marks': [14, 42, 21, 12, 45],
                    'Subject_2_Marks': [32, 43, 23, 50, 21],
                    'Subject_3_Marks': [45.0, 34.0, 23.0, 8.0, 21.0],
                    'Names': ['Saksham', 'Ayushi', 'Abhishek', 'Saksham', 'Saumya']
                    }
                 )

# Apply describe function
df.describe()

Pandas describe function

如何获得非数字特征的摘要?

有时,我们也有非数字特征。请看一下示例数据集中特征的数据类型。

df.dtypes
Subject_1_Marks      int64
Subject_2_Marks      int64
Subject_3_Marks    float64
Names               object
dtype: object

默认情况下,describe函数只返回数据集的数字特征的摘要。要想获得其他数据类型的摘要,可以对describe函数的include 参数进行调整。

1.Include='all' 参数

指定include='all' ,将强制pandas为数据框中所有类型的特征生成摘要。有些数据类型,如字符串类型,没有任何平均值或标准差。在这种情况下,pandas会将它们标记为NaN

# describe function with include='all'

df.describe(include='all')

Non numeric function of pandas describe

你可以看到describe函数返回不同的特征,如唯一值、最高值,以及它对string type 数据的频率(Names列)。对于categorical data type 的特征,它返回同样的特征集。

2.包含参数的数据类型列表

另外,你也可以使用include 参数指定要包含在摘要中的数据类型。Pandas将只为那些存在于include 参数列表中的数据类型生成摘要。

# describe function with include= ['object']
df.describe(include=['object'])

Non numeric function of pandas describe

如何从摘要中排除数据类型?

你可以将数据类型列入黑名单,使其不被包含在摘要中。exclude 参数获取所有此类数据类型的列表。

# describe function with exclude= ['float']
df.describe(exclude=['float'])

Exclude data types of pandas describe

在我们的例子中,Subject_3_Marksfloat64 ,这就是为什么它没有包括在上述摘要中。

自定义Pandas Describe函数的百分位数

describe函数的默认百分位数是第25、50和75个百分位数,或者是(0.25、0.5和0.75)。你可以使用percentiles 参数向pandas describe函数传递自己的百分位数。它接收的是所有百分位数的列表(0到1之间)。

注意:第50个百分位数将被包括在任何情况下,因为第50个百分位数也表示中位数。

# describe function with percentiles=[0.1, 0.3, 0.7]
df.describe(percentiles=[0.1, 0.3, 0.7])

Customize percentile

将日期时间值视为数值

默认情况下,pandas日期时间值被视为日期时间对象。这类对象的摘要包括第一个日期、最后一个日期、计数、唯一值、最高值和其频率。

# create a datetime series
series = pd.date_range(start='27/05/2021', periods=len(df))

# adding dates series to dataframe
df['dates'] = series

# describe function on dates
df.dates.describe()
count                       5
unique                      5
top       2021-05-28 00:00:00
freq                        1
first     2021-05-27 00:00:00
last      2021-05-31 00:00:00
Name: dates, dtype: object

你可以使用datetime_is_numeric ,让pandas将日期时间值识别为数字。它接受布尔值为真/假。让我们通过一个例子来理解。

# describe function with datetime_is_numeric=True
df.describe(datetime_is_numeric=True)

Default case

实用提示

  • 在进行进一步分析之前,看一下数据集的描述性统计是一个好的做法。例如,一个标准差为0的特征可能没有用。0标准差表示该特征列的所有值都是一样的。

测试你的知识

Q1: 描述函数中缺少中位数。真的还是假的?

答案: 错。第50个百分位数与数据集的中位数是一样的。

Q2: 如何显示所有数据类型的统计汇总?

答案: 通过使用include=all 参数。它可以显示所有数据类型的总结。

Q3: 哪个参数用于定义默认百分位数以外的自定义百分位数?

答案: percentiles 参数获取所有在0到1之间缩放的百分位数的列表。