gpt4 book ai didi

python - 对数据框进行排序并使用百分比计算值

转载 作者:太空宇宙 更新时间:2023-11-03 12:36:22 26 4
gpt4 key购买 nike

我有一个像这样的 DataFrame:

Kind   Status
1 True
2 False
3 True
2 False
2 True

我用它计算了种类 df.Kind.sort_values()得到这个:

1       1
2 3
3 1

现在我想以数字和百分比的形式查看第 2 类中有多少是正确的或错误的。像这样:

Art  True  False
2 1 2
2 0.33 0.66

有人可以帮助我吗?最好的问候

最佳答案

交叉表+div

使用 pandas.crosstab :

res = pd.crosstab(df['Kind'], df['Status'])

res[['Pct False', 'Pct True']] = res.div(res.sum(axis=1), axis=0)

print(res)

Status False True Pct False Pct True
Kind
1 0 1 0.000000 1.000000
2 2 1 0.666667 0.333333
3 0 1 0.000000 1.000000

在我看来,这是显示数据的最自然方式。不建议在单个系列中将计数与百分比结合使用。

交叉表+交叉表归一化

或者,您可以合并多个交叉表 结果,一个已规范化,另一个未规范化。

res = pd.crosstab(df['Kind'], df['Status'])\
.join(pd.crosstab(df['Kind'], df['Status'], normalize='index'), rsuffix='_pct')

print(res)

Status False True False_pct True_pct
Kind
1 0 1 0.000000 1.000000
2 2 1 0.666667 0.333333
3 0 1 0.000000 1.000000

仅交叉表规范化

如果您只查找百分比,您可以只使用normalize 参数:

res = pd.crosstab(df['Kind'], df['Status'], normalize='index')

print(res)

Status False True
Kind
1 0.000000 1.000000
2 0.666667 0.333333
3 0.000000 1.000000

关于python - 对数据框进行排序并使用百分比计算值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50681409/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com