用计数和百分比创建列联表Pandas

2024-10-02 18:24:52 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有更好的方法来创建大熊猫的列联表pd交叉表()或pd.pivot_表()生成计数百分比。在

当前解决方案

cat=['A','B','B','A','B','B','A','A','B','B']
target = [True,False,False,False,True,True,False,True,True,True]

import pandas as pd
df=pd.DataFrame({'cat' :cat,'target':target})

使用交叉表

^{pr2}$

合并

summaryTable=pd.merge(totals,percentages,on="cat")
summaryTable.columns=['cat','#False',
    '#True','All','percentTrue','percentFalse']

输出

+---+-----+--------+-------+-----+-------------+--------------+
|   | cat | #False | #True | All | percentTrue | percentFalse |
+---+-----+--------+-------+-----+-------------+--------------+
| 0 | A   |      2 |     2 |   4 | 0.500000    | 0.500000     |
| 1 | B   |      2 |     4 |   6 | 0.333333    | 0.666667     |
+---+-----+--------+-------+-----+-------------+--------------+

Tags: 方法falsetruetargetall交叉catpd
1条回答
网友
1楼 · 发布于 2024-10-02 18:24:52

您可以执行以下操作:

In [131]: s = df.groupby('cat').agg({'target': ['sum', 'count']}).reset_index(level=0)

In [132]: s.columns
Out[132]:
MultiIndex(levels=[['target', 'cat'], ['sum', 'count', '']],
           labels=[[1, 0, 0], [2, 0, 1]])

让我们对列名进行排序:

^{pr2}$

相关问题 更多 >