创建比例数据框架

2024-04-26 02:44:46 发布

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

我有这样的清单:

[[person_a,code_1],[person_a,code_2],[person_a,code_3],[person_b,code_1],[person_b,code_1],[person_b,code_1],[person_a,code_4],[person_b,code_2]...]

我希望实现以下目标:

          code_1  code_2 code_3 code_4
person a   .2500   .2500   .2500    .2500
person b   .6667   .3333   0.0    0.0

我以前在R中使用过prop.table来实现这一点,但是我想知道是否有一个Python等价物。我可以把我的列表转换成一个数据帧,我感兴趣的是一些函数,可以生成每个人的代码比例。你知道吗


Tags: 数据函数代码目标列表tablecode感兴趣
1条回答
网友
1楼 · 发布于 2024-04-26 02:44:46

使用熊猫

import pandas as pd

data = [
    ['person_a', 'code_1'],
    ['person_a', 'code_2'],
    ['person_a', 'code_3'],
    ['person_b', 'code_1'],
    ['person_b', 'code_1'],
    ['person_b', 'code_1'],
    ['person_a', 'code_4'],
    ['person_b', 'code_2']]

df = pd.DataFrame(data, columns=['person', 'code'])

df = df.assign(relative_frequency=1).groupby(['person', 'code']).count().unstack()
# >>> df
#          relative_frequency                     
# code                 code_1 code_2 code_3 code_4
# person                                          
# person_a                  1      1      1      1
# person_b                  3      1    NaN    NaN

>>> df.div(df.sum(1), axis=0)
         relative_frequency                     
code                 code_1 code_2 code_3 code_4
person                                          
person_a               0.25   0.25   0.25   0.25
person_b               0.75   0.25    NaN    NaN

相关问题 更多 >