分位数指的是将一组数据分成几个等份,每份所包含的数据数量相等。在数据分析中,经常需要对数据进行分析,分位数的应用也就越来越广泛。
一、分位数的基本概念
1、什么是分位数
分位数是将一组数据分成几个等份,每份所包含的数据数量相等的一种划分方法。其中,中位数就是将数据分成两份,每份数据的数量相等的一种特殊情况。
2、分位数的分类
根据划分区间的数量不同,分位数可以分为三类:
- 四分位数:将数据分为四份,每份包含25%的数据。
- 十分位数:将数据分为十份,每份包含10%的数据。
- 百分位数:将数据分为一百份,每份包含1%的数据。
二、Python pandas中的分位数应用
1、计算分位数
在Python pandas中,可以使用quantile()方法来计算分位数。
import pandas as pd
import numpy as np
# 创建一个DataFrame
df = pd.DataFrame(np.random.randn(1000, 4), columns=list('ABCD'))
# 计算四分位数
df.quantile(q=0.25) # 返回A、B、C、D列各自的四分位数
# 计算十分位数
df.quantile(q=0.1) # 返回A、B、C、D列各自的十分位数
# 计算百分位数
df.quantile(q=0.05) # 返回A、B、C、D列各自的百分之五分位数
2、应用分位数
在实际数据分析中,分位数应用非常广泛。下面我们就从三个方面谈一下分位数的应用。
(1)异常值处理
在某些情况下,数据集中可能存在异常值,这些异常值会对整个数据的分析产生很大的影响。此时,可以使用分位数进行异常值处理。
import pandas as pd
# 创建一个DataFrame
df = pd.DataFrame({'age': [25, 30, 35, 40, 45, 50, 55, 60, 1000]})
# 计算四分位数
Q1 = df['age'].quantile(q=0.25)
Q3 = df['age'].quantile(q=0.75)
IQR = Q3 - Q1 # IQR即为四分位距
# 计算正常范围下限
lower = Q1 - 1.5*IQR
# 计算正常范围上限
upper = Q3 + 1.5*IQR
# 去掉异常值
df = df[(df['age'] >= lower) & (df['age'] <= upper)]
(2)数据分类
分位数还可以用来划分数据。在实际数据分析中,我们可以通过分位数将数据划分为若干类。
import pandas as pd
# 创建一个DataFrame
df = pd.DataFrame({'age': [18, 20, 22, 24, 26, 28, 30]})
# 计算四分位数
Q1 = df['age'].quantile(q=0.25)
Q2 = df['age'].quantile(q=0.5)
Q3 = df['age'].quantile(q=0.75)
# 计算年龄段
def age_range(age):
if age < Q1:
return '青年'
elif age < Q2:
return '中年'
elif age < Q3:
return '中老年'
else:
return '老年'
df['age_range'] = df['age'].apply(age_range)
print(df)
(3)统计分析
在数据分析中,我们经常需要对数据进行统计分析,例如计算平均数、中位数、标准差等。此时,分位数也可以发挥作用。
import pandas as pd
# 创建一个DataFrame
df = pd.DataFrame({'age': [18, 20, 22, 24, 26, 28, 30]})
# 计算平均数
mean = df['age'].mean()
# 计算中位数
median = df['age'].median()
# 计算标准差
std = df['age'].std()
# 计算上四分位数
Q3 = df['age'].quantile(q=0.75)
# 计算下四分位数
Q1 = df['age'].quantile(q=0.25)
# 计算四分位距
IQR = Q3 - Q1
print('平均数:', mean)
print('中位数:', median)
print('标准差:', std)
print('上四分位数:', Q3)
print('下四分位数:', Q1)
print('四分位距:', IQR)
