如何使用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()

如何获得非数字特征的摘要?
有时,我们也有非数字特征。请看一下示例数据集中特征的数据类型。
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')

你可以看到describe函数返回不同的特征,如唯一值、最高值,以及它对string type 数据的频率(Names列)。对于categorical data type 的特征,它返回同样的特征集。
2.包含参数的数据类型列表
另外,你也可以使用include 参数指定要包含在摘要中的数据类型。Pandas将只为那些存在于include 参数列表中的数据类型生成摘要。
# describe function with include= ['object']
df.describe(include=['object'])

如何从摘要中排除数据类型?
你可以将数据类型列入黑名单,使其不被包含在摘要中。exclude 参数获取所有此类数据类型的列表。
# describe function with exclude= ['float']
df.describe(exclude=['float'])

在我们的例子中,Subject_3_Marks 是float64 ,这就是为什么它没有包括在上述摘要中。
自定义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])

将日期时间值视为数值
默认情况下,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)

实用提示
- 在进行进一步分析之前,看一下数据集的描述性统计是一个好的做法。例如,一个标准差为0的特征可能没有用。0标准差表示该特征列的所有值都是一样的。
测试你的知识
Q1: 描述函数中缺少中位数。真的还是假的?
答案: 错。第50个百分位数与数据集的中位数是一样的。
Q2: 如何显示所有数据类型的统计汇总?
答案: 通过使用include=all 参数。它可以显示所有数据类型的总结。
Q3: 哪个参数用于定义默认百分位数以外的自定义百分位数?
答案: percentiles 参数获取所有在0到1之间缩放的百分位数的列表。