分位数指的是将一组数据分成几个等份,每份所包含的数据数量相等。在数据分析中,经常需要对数据进行分析,分位数的应用也就越来越广泛。
一、分位数的基本概念
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)