使用 Python 的描述性统计数据解释数据
介绍
描述性统计是数据科学的基石。如果不分析关键指标的描述性统计,高级分析通常就不完整。简单来说,描述性统计可以定义为总结给定数据的度量,这些度量可以进一步细分为集中趋势度量和离散度量。
集中趋势的测量指标包括平均值、中位数和众数,而变异性的测量指标包括标准差、方差和四分位距。在本指南中,您将学习如何计算这些描述性统计指标,并使用它们来解释数据。
我们将讨论以下主题:
- 意思是
- 中位数
- 模式
- 标准差
- 方差
- 四分位距
- 偏斜度
我们将首先加载本指南中要使用的数据集。
数据
在本指南中,我们将使用包含 600 个观测值和 10 个变量的贷款申请人的虚构数据,如下所述:
- Marital_status:申请人是否已婚(“是”)或未婚(“否”)。
- 受抚养人:申请人的受抚养人人数。
- Is_graduate:申请人是否是毕业生(“是”)或不是(“否”)。
- 收入:申请人的年收入(美元)。
- Loan_amount:提交申请的贷款金额(以美元计)。
- Term_months:贷款期限(以月为单位)。
- Credit_score:申请人的信用评分是良好(“满意”)还是不佳(“不满意”)。
- 年龄:申请人的年龄。
- 性别:申请人是女性(F)还是男性(M)。
- authorization_status:贷款申请是否被批准(“是”)或未被批准(“否”)。
让我们首先加载所需的库和数据。
import pandas as pd
import numpy as np
import statistics as st
# Load the data
df = pd.read_csv("data_desc.csv")
print(df.shape)
print(df.info())
输出:
(600, 10)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 600 entries, 0 to 599
Data columns (total 10 columns):
Marital_status 600 non-null object
Dependents 600 non-null int64
Is_graduate 600 non-null object
Income 600 non-null int64
Loan_amount 600 non-null int64
Term_months 600 non-null int64
Credit_score 600 non-null object
approval_status 600 non-null object
Age 600 non-null int64
Sex 600 non-null object
dtypes: int64(5), object(5)
memory usage: 47.0+ KB
None
其中五个变量是分类变量(标记为“对象”),其余五个变量是数字变量(标记为“int”)。
集中趋势测量
集中趋势测量描述的是数据的中心,通常用平均值、中位数和众数来表示。
意思是
平均值表示数据的算术平均值。下面的代码行打印数据中数值变量的平均值。从输出中,我们可以推断出申请人的平均年龄为 49 岁,平均年收入为 705,541 美元,平均贷款期限为 183 个月。命令df.mean(axis = 0)也将给出相同的输出。
df.mean()
输出:
Dependents 0.748333
Income 705541.333333
Loan_amount 323793.666667
Term_months 183.350000
Age 49.450000
dtype: float64
还可以计算数据中特定变量的平均值,如下所示,我们计算变量“年龄”和“收入”的平均值。
print(df.loc[:,'Age'].mean())
print(df.loc[:,'Income'].mean())
输出:
49.45
705541.33
在前面的部分中,我们计算了列平均值。也可以通过指定(axis = 1)参数来计算行的平均值。下面的代码计算前五行的平均值。
df.mean(axis = 1)[0:5]
输出:
0 70096.0
1 161274.0
2 125113.4
3 119853.8
4 120653.8
dtype: float64
中位数
简单来说,中位数代表第 50 个百分位数,即数据的中间值,将分布分成两半。下面的代码行打印数据中数值变量的中位数。命令df.median(axis = 0)也将给出相同的输出。
df.median()
输出:
Dependents 0.0
Income 508350.0
Loan_amount 76000.0
Term_months 192.0
Age 51.0
dtype: float64
从输出结果中,我们可以推断出申请人的平均年龄为 51 岁,平均年收入为 508,350 美元,贷款平均期限为 192 个月。这些变量的平均值和中位数之间存在差异,这是由于数据的分布造成的。我们将在后续章节中对此进行更多了解。
还可以计算数据中特定变量的中位数,如下面的前两行代码所示。我们还可以通过指定(axis = 1)参数来计算行的中位数。下面的第三行计算前五行的中位数。
#to calculate a median of a particular column
print(df.loc[:,'Age'].median())
print(df.loc[:,'Income'].median())
df.median(axis = 1)[0:5]
输出:
51.0
508350.0
0 102.0
1 192.0
2 192.0
3 192.0
4 192.0
dtype: float64
模式
众数表示数据中变量出现频率最高的值。这是唯一可用于分类变量的集中趋势测量,不同于只能用于定量数据的平均值和中位数。
下面的代码行打印了数据中所有变量的模式。.mode ()函数返回变量的最常见值或重复次数最多的值。命令df.mode(axis = 0)也将给出相同的输出。
df.mode()
输出:
| | Marital_status | Dependents | Is_graduate | Income | Loan_amount | Term_months | Credit_score | approval_status | Age | Sex |
|--- |---------------- |------------ |------------- |-------- |------------- |------------- |-------------- |----------------- |----- |----- |
| 0 | Yes | 0 | Yes | 333300 | 70000 | 192.0 | Satisfactory | Yes | 55 | M |
众数的解释很简单。上面的输出显示,大多数申请人已婚,如“婚姻状况”值为“是”所示。其他分类变量如“性别”和“信用评分”也可以做类似的解释。对于数值变量,众数表示出现频率最高的值。例如,变量“年龄”的众数为 55,表示申请人的最高数量(或频率)为 55 岁。
离散度测量
在前面的部分中,我们讨论了各种集中趋势的度量。但是,正如我们在数据中看到的那样,这些度量的值对于许多变量是不同的。这是因为分布被拉伸或压缩的程度。在统计学中,这是通过离散度来衡量的,离散度也称为可变性、散布或扩散。最流行的离散度度量是标准差、方差和四分位数间距。
标准差
标准差是一种度量,用于量化一组数据值与其平均值之间的差异量。变量的标准差较低表示数据点趋向于接近其平均值,反之亦然。下面的代码行打印了数据中所有数值变量的标准差。
df.std()
输出:
Dependents 1.026362
Income 711421.814154
Loan_amount 724293.480782
Term_months 31.933949
Age 14.728511
dtype: float64
在解释标准差值时,重要的是要结合平均值来理解它们。例如,在上面的输出中,变量“收入”的标准差远高于变量“家属”的标准差。然而,这两个变量的单位不同,因此,仅根据标准差来比较这两个变量的离散度是不正确的。这一点需要牢记。
也可以计算特定变量的标准差,如下面的前两行代码所示。第三行计算前五行的标准差。
print(df.loc[:,'Age'].std())
print(df.loc[:,'Income'].std())
#calculate the standard deviation of the first five rows
df.std(axis = 1)[0:5]
输出:
14.728511412020659
711421.814154101
0 133651.842584
1 305660.733951
2 244137.726597
3 233466.205060
4 202769.786470
dtype: float64
方差
方差是另一种离散度度量。它是标准差的平方和随机变量与自身的协方差。下面的代码行打印数据集中所有数值变量的方差。方差的解释与标准差的解释类似。
df.var()
输出:
Dependents 1.053420e+00
Income 5.061210e+11
Loan_amount 5.246010e+11
Term_months 1.019777e+03
Age 2.169290e+02
dtype: float64
四分位距 (IQR)
四分位距 (IQR) 是统计离散度的度量,计算为上四分位数 (75 百分位数) 和下四分位数 (25 百分位数) 之间的差值。IQR 也是识别异常值的一个非常重要的度量,可以使用箱线图进行可视化。
可以使用iqr()函数计算 IQR 。下面的第一行代码从scipy.stats模块导入“iqr”函数,而第二行则打印变量“Age”的 IQR。
from scipy.stats import iqr
iqr(df['Age'])
输出:
25.0
偏斜度
另一个有用的统计数据是偏度,它是实值随机变量关于其均值的对称性(或缺乏对称性)的度量。偏度值可以是正值、负值或
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~