【问题标题】:descriptive stats for two categorical variables (pandas)两个分类变量(熊猫)的描述性统计
【发布时间】:2017-11-03 14:42:22
【问题描述】:

我需要获得两个分类变量之间频率的平均值和中位数。例如:

标签字母编号
Foo |一个 | 1
Foo |乙| 2
Foo | C | 4
酒吧 |一个 | 2
酒吧 |克| 3
酒吧 | N | 1
酒吧 |磷 | 2
中东欧 |乙| 1
中东欧 |乙| 2
中东欧 | C | 4
中东欧 | D | 5

例如,每个标签的字母平均数和中位数是多少。这里有 11 个可能的标签(M=3.667),中位数是 4(3 foo,4 bar,4 cee)。我如何在熊猫中计算这个。是否可以使用 groupby 语句来做到这一点?我的数据集比这大得多。

【问题讨论】:

    标签: python pandas pandas-groupby


    【解决方案1】:

    一列需要value_countsgroupby + size(或count,如果需要省略NaNs):

    a = df['Label'].value_counts()
    print (a)
    Cee    4
    Bar    4
    Foo    3
    Name: Label, dtype: int64
    
    #alternative
    #a = df.groupby('Label').size()
    print (a.mean())
    3.6666666666666665
    
    print (a.median())
    4.0
    

    a = df.groupby(['Label','Letter']).size()
    print (a)
    Label  Letter
    Bar    A         1
           G         1
           N         1
           P         1
    Cee    B         2
           C         1
           D         1
    Foo    A         1
           B         1
           C         1
    dtype: int64
    
    print (a.mean())
    1.1
    
    print (a.median())
    1.0
    

    【讨论】:

    • 我有一个题外话问题。如何在数据框中导入 OP 的数据?
    • 或者更好的是sep="\s+\|\s+|\s+" - 没有必要在标题中添加|
    • @jezrael,您能否就这个相关问题提出建议。谢谢!
    猜你喜欢
    • 2022-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 2022-08-21
    • 2018-11-18
    • 1970-01-01
    相关资源
    最近更新 更多