通过另一个列值计算每个列组的百分位值-Pandas DataFrame

斯瓦普尼尔

我有一个如下所示的数据框-

   Year  Salary  Amount
0  2019    1200      53
1  2020    3443     455
2  2021    6777     123
3  2019    5466     313
4  2020    4656     545
5  2021    4565     775
6  2019    4654     567
7  2020    7867     657
8  2021    6766     567

使用Python脚本获取以下数据框-

import pandas as pd
import numpy as np

d = pd.DataFrame({
    'Year': [
        2019,
        2020,
        2021,
    ] * 3,
    'Salary': [
        1200,
        3443,
        6777,
        5466,
        4656,
        4565,
        4654,
        7867,
        6766
    ],
    'Amount': [
        53,
        455,
        123,
        313,
        545,
        775,
        567,
        657,
        567
    ]
})

我想为“年份”分组的所有列计算某些百分位值。所需的输出应类似于-

期望的输出

我正在python脚本下运行以执行计算以计算某些百分位值-

df_percentile = pd.DataFrame()
p_list = [0.05, 0.10, 0.25, 0.50, 0.75, 0.95, 0.99]
c_list = []
p_values = []
for cols in d.columns[1:]:
    for p in p_list:
        c_list.append(cols + '_' + str(p))
        p_values.append(np.percentile(d[cols], p))
print(len(c_list), len(p_values))
df_percentile['Name'] = pd.Series(c_list)
df_percentile['Value'] = pd.Series(p_values)
print(df_percentile)

输出-

           Name      Value
0   Salary_0.05  1208.9720
1    Salary_0.1  1217.9440
2   Salary_0.25  1244.8600
3    Salary_0.5  1289.7200
4   Salary_0.75  1334.5800
5   Salary_0.95  1370.4680
6   Salary_0.99  1377.6456
7   Amount_0.05    53.2800
8    Amount_0.1    53.5600
9   Amount_0.25    54.4000
10   Amount_0.5    55.8000
11  Amount_0.75    57.2000
12  Amount_0.95    58.3200
13  Amount_0.99    58.5440

如何获得所需格式的输出,而不必执行额外的数据操作/格式化或减少代码行?

广晃

您可以尝试pivot以下quantile

(df.pivot(columns='Year')
   .quantile([0.01,0.05,0.75, 0.95, 0.99])
   .stack('Year')
)

输出:

            Salary  Amount
     Year                 
0.01 2019  1269.08   58.20
     2020  3467.26  456.80
     2021  4609.02  131.88
0.05 2019  1545.40   79.00
     2020  3564.30  464.00
     2021  4785.10  167.40
0.75 2019  5060.00  440.00
     2020  6261.50  601.00
     2021  6771.50  671.00
0.95 2019  5384.80  541.60
     2020  7545.90  645.80
     2021  6775.90  754.20
0.99 2019  5449.76  561.92
     2020  7802.78  654.76
     2021  6776.78  770.84

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过匹配另一个DataFrame中的值来最佳填充Pandas DataFrame列

来自分类Dev

如何基于Pandas中的另一个DataFrame更改DataFrame的某些列中的值

来自分类Dev

Python Pandas根据另一个列中的总数从另一个dataFrame中选择值

来自分类Dev

python&pandas-删除行,其中列值是另一个DataFrame中的索引值

来自分类Dev

如何通过另一个Dataframe列过滤Pandas行?

来自分类Dev

切片pandas DataFrame,其中列的值存在于另一个数组中

来自分类Dev

如何获取 Pandas 中 DataFrame 的第一个和最后一个值的百分比变化

来自分类Dev

Pandas DataFrame:简单分配-两个列值与另一个列值之差的下限,循环不起作用

来自分类Dev

如何基于另一个 DataFrame 中的列在 Pandas DataFrame 中创建新列?

来自分类Dev

从另一个DataFrame替换pandas.DataFrame中的值的优雅方法

来自分类Dev

如何使用来自另一个DataFrame的单个值创建Pandas DataFrame?

来自分类Dev

基于唯一的多列索引的另一个DataFrame的新pandas DataFrame

来自分类Dev

在DataFrame列中查找每个组的不丢失值百分比

来自分类Dev

如何在Pandas Dataframe中获取最接近另一个值的值

来自分类Dev

使用来自另一个 DataFrame 的值有效地将列添加到 Pandas DataFrame

来自分类Dev

当我期望系列时,Pandas DataFrame列会显示另一个DataFrame

来自分类Dev

用另一个DataFrame替换Pandas多索引DataFrame的列

来自分类Dev

当我期望系列时,Pandas DataFrame列会显示另一个DataFrame

来自分类Dev

将 Pandas DataFrame 列与另一个 DataFrame 的范围相加

来自分类Dev

仅当一列没有值时,Pandas DataFrame才会从另一个数据框中更新

来自分类Dev

将pandas.DataFrame追加到另一个pandas.DataFrame的一列

来自分类Dev

通过匹配Pandas DataFrame中另一列中的值来区分行值

来自分类Dev

遍历Pandas DataFrame行-根据另一个系列中的值更改系列值?

来自分类Dev

搜索输入值小于下一个索引列值的pandas dataframe列

来自分类Dev

将下一条记录提取到 Pandas 列中的百分位值

来自分类Dev

Pandas DataFrame从列检索值

来自分类Dev

使用Pandas DataFrame计算百分比

来自分类Dev

Pandas DataFrame:计算行之间的百分比差异?

来自分类Dev

pandas DataFrame:根据另一列中的布尔值计算总和

Related 相关文章

  1. 1

    通过匹配另一个DataFrame中的值来最佳填充Pandas DataFrame列

  2. 2

    如何基于Pandas中的另一个DataFrame更改DataFrame的某些列中的值

  3. 3

    Python Pandas根据另一个列中的总数从另一个dataFrame中选择值

  4. 4

    python&pandas-删除行,其中列值是另一个DataFrame中的索引值

  5. 5

    如何通过另一个Dataframe列过滤Pandas行?

  6. 6

    切片pandas DataFrame,其中列的值存在于另一个数组中

  7. 7

    如何获取 Pandas 中 DataFrame 的第一个和最后一个值的百分比变化

  8. 8

    Pandas DataFrame:简单分配-两个列值与另一个列值之差的下限,循环不起作用

  9. 9

    如何基于另一个 DataFrame 中的列在 Pandas DataFrame 中创建新列?

  10. 10

    从另一个DataFrame替换pandas.DataFrame中的值的优雅方法

  11. 11

    如何使用来自另一个DataFrame的单个值创建Pandas DataFrame?

  12. 12

    基于唯一的多列索引的另一个DataFrame的新pandas DataFrame

  13. 13

    在DataFrame列中查找每个组的不丢失值百分比

  14. 14

    如何在Pandas Dataframe中获取最接近另一个值的值

  15. 15

    使用来自另一个 DataFrame 的值有效地将列添加到 Pandas DataFrame

  16. 16

    当我期望系列时,Pandas DataFrame列会显示另一个DataFrame

  17. 17

    用另一个DataFrame替换Pandas多索引DataFrame的列

  18. 18

    当我期望系列时,Pandas DataFrame列会显示另一个DataFrame

  19. 19

    将 Pandas DataFrame 列与另一个 DataFrame 的范围相加

  20. 20

    仅当一列没有值时,Pandas DataFrame才会从另一个数据框中更新

  21. 21

    将pandas.DataFrame追加到另一个pandas.DataFrame的一列

  22. 22

    通过匹配Pandas DataFrame中另一列中的值来区分行值

  23. 23

    遍历Pandas DataFrame行-根据另一个系列中的值更改系列值?

  24. 24

    搜索输入值小于下一个索引列值的pandas dataframe列

  25. 25

    将下一条记录提取到 Pandas 列中的百分位值

  26. 26

    Pandas DataFrame从列检索值

  27. 27

    使用Pandas DataFrame计算百分比

  28. 28

    Pandas DataFrame:计算行之间的百分比差异?

  29. 29

    pandas DataFrame:根据另一列中的布尔值计算总和

热门标签

归档