查找 Pandas DataFrame 列的分位数和十分位数等级

pythonpandasserver side programmingprogramming

分位数和十分位数等级是常用的统计测量方法,用于确定数据集中某个观测值相对于数据集其余部分的位置。在此技术博客中,我们将探讨如何在 Python 中查找 Pandas DataFrame 列的分位数和十分位数等级。

安装和语法

pip install pandas

查找 Pandas DataFrame 列的分位数和十分位数等级的语法如下 -

# 查找分位数等级
df['column_name'].rank(pct=True)

# 查找十分位数等级
df['column_name'].rank(pct=True, method='nearest', bins=10)

算法

  • 将数据加载到 Pandas DataFrame。

  • 选择要查找分位数和十分位数等级的列。

  • 使用 rank() 方法并将 pct 参数设置为 True 来查找列中每个观测值的分位数等级。

  • 使用 rank() 方法并将 pct 参数设置为 True、将 method 参数设置为 'nearest' 并将 bins 参数设置为10 来查找列中每个观测值的十分位数等级。

示例 1

import pandas as pd

# 创建 DataFrame
data = {'A': [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]}
df = pd.DataFrame(data)

# 查找分位数等级
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

创建一个 Pandas DataFrame,其中 A 列包含 10 个整数,然后使用 rank() 方法(将 pct 参数设置为 True)查找 A 列中每个观测值的分位数排名。我们创建一个新列 A_quantile_rank 来存储分位数排名并打印生成的 DataFrame。

示例 2

import pandas as pd

# 创建一个 DataFrame
data = {'A': [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]}
df = pd.DataFrame(data)

# 查找十分位数排名
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

创建一个 Pandas DataFrame,其中 A 列包含 10 个整数。然后,我们使用 rank() 方法找到 A 列中每个观测值的十分位数等级,其中 pct 参数设置为 True,method 参数设置为 'nearest',bins 参数设置为 10。我们创建一个新列 A_decile_rank 来存储十分位数等级并打印生成的 DataFrame。

示例 3

import pandas as pd
import numpy as np

# 创建 DataFrame
np.random.seed(42)
data = {'A': np.random.normal(0, 1, 1000), 'B': np.random.normal(5, 2, 1000)}
df = pd.DataFrame(data)

# 找到分位数A 列的排名
df['A_quantile_rank'] = df['A'].rank(pct=True)

# 查找 B 列的十分位数排名
n = 10
df['B_decile_rank'] = pd.cut(df['B'], n, labels=range(1, n+1)).astype(int)

# 打印结果 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() 方法(其中 pct 参数设置为 True)找到 A 列的分位数排名,并将结果排名存储在新列 A_quantile_rank 中。我们还使用 rank() 方法(其中 pct 参数设置为 True、method 参数设置为 'nearest'、bins 参数设置为 10)找到 B 列的十分位数排名,并将结果排名存储在新列 B_decile_rank 中。最后,我们打印生成的 DataFrame。

应用

  • 识别数据集中的异常值

  • 对数据集中的观测值进行排名

  • 比较数据集中的观测值

结论

本技术博客研究了如何使用 rank() 方法(将 pct 参数设置为 True)以及 method 和 bins 参数来修改 rank() 函数的行为,以获取 Python 中 Pandas DataFrame 列的分位数和十分位数排名。了解 Pandas DataFrame 列的分位数和十分位数排名可能会对数据分析和可视化有所帮助,因为这样做可以更轻松地理解数据集的分布并发现异常值。


相关文章