Pandas 查找DataFrame列的分位数和十分位数排名
分位数和十分位数排名是常用的统计测量方法,用于确定数据集中某个观测值在整个数据集中的位置。在本技术博客中,我们将探讨如何使用Python找到Pandas DataFrame列的分位数和十分位数排名。
安装和语法
pip install pandas
Pandas DataFrame列的定位和分位数的语法如下所示 –
# For finding quantile rank
df['column_name'].rank(pct=True)
# For finding decile rank
df['column_name'].rank(pct=True, method='nearest', bins=10)
步骤
- 将数据加载到Pandas DataFrame中。
-
选择要找到分位数和十分位数的列。
-
使用rank()方法,将pct参数设置为True,找到列中每个观测值的分位数等级。
-
使用rank()方法,将pct参数设置为True,方法参数设置为’nearest’,并将bins参数设置为10,找到列中每个观测值的十分位数等级。
示例1
import pandas as pd
# Create a DataFrame
data = {'A': [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]}
df = pd.DataFrame(data)
# Find the quantile rank
df['A_quantile_rank'] = df['A'].rank(pct=True)
print(df)
输出
A A_quantile_rank
0 1 0.1
1 3 0.3
2 5 0.5
3 7 0.7
4 9 0.9
5 11 0.5
6 13 0.7
7 15 0.9
8 17 1.0
9 19 1.0
创建一个包含10个整数的Pandas DataFrame,并使用 rank() 方法将A列的每个观测值计算出分位数排名,并将pct参数设为True。我们创建一个新列 A_quantile_rank 来存储分位数排名,并打印出结果DataFrame。
示例2
import pandas as pd
# Create a DataFrame
data = {'A': [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]}
df = pd.DataFrame(data)
# Find the decile rank
n = 10
df['A_decile_rank'] = pd.cut(df['A'], n, labels=range(1, n+1)).astype(int)
print(df)
输出
A A_decile_rank
0 1 1
1 3 2
2 5 3
3 7 4
4 9 5
5 11 6
6 13 7
7 15 8
8 17 9
9 19 10
创建一个具有一个包含10个整数的列A的Pandas DataFrame。然后,我们使用rank()方法找到A列中每个观察值的十分位排名,其中pct参数设置为True,方法参数设置为’nearest’,bins参数设置为10。我们创建一个新列A_decile_rank来存储十分位排名,并打印结果的DataFrame。
示例3
import pandas as pd
import numpy as np
# Create a DataFrame
np.random.seed(42)
data = {'A': np.random.normal(0, 1, 1000), 'B': np.random.normal(5, 2, 1000)}
df = pd.DataFrame(data)
# Find the quantile rank of column A
df['A_quantile_rank'] = df['A'].rank(pct=True)
# Find the decile rank of column B
n = 10
df['B_decile_rank'] = pd.cut(df['B'], n, labels=range(1, n+1)).astype(int)
# Print the resulting DataFrame
print(df)
输出
A B A_quantile_rank B_decile_rank
0 0.496714 7.798711 0.693 8
1 -0.138264 6.849267 0.436 7
2 0.647689 5.119261 0.750 5
3 1.523030 3.706126 0.929 4
4 -0.234153 6.396447 0.405 6
.. ... ... ... ...
995 -0.281100 7.140300 0.384 7
996 1.797687 4.946957 0.960 5
997 0.640843 3.236251 0.746 4
998 -0.571179 4.673866 0.276 5
999 0.572583 3.510195 0.718 4
[1000 rows x 4 columns]
从包含两列A和B的Pandas DataFrame开始,每列都包含 1000 个随机生成的值。然后,我们使用 rank() 方法将A列的分位数排名,其中pct参数设置为True,并将结果排名存储在一个新列 A_quantile_rank 中。我们还使用rank()方法将B列的十分位数排名,其中pct参数设置为True,方法参数设置为 ‘nearest’ ,bins参数设置为10,并将结果排名存储在一个新列 B_decile_rank 中。最后,我们打印出结果DataFrame。
应用
- 在数据集中识别异常值
-
对数据集中的观测进行排名
-
比较数据集中的观测
结论
本技术博客介绍了如何使用rank()方法,其中pct参数设置为True,并使用方法和bins参数修改rank()函数的行为,在Python中获取Pandas DataFrame列的分位数和十分位数排名。了解Pandas DataFrame列的分位数和十分位数排名可能有助于数据分析和可视化,因为这样可以更容易地理解数据集的分布并发现异常值。