【问题标题】:Joint distribution from pandas dataframe?来自熊猫数据框的联合分布?
【发布时间】:2019-11-21 12:24:01
【问题描述】:

我有一个 pandas 数据框,它有两列 AB,这两列都包含数字。我想从这些列创建一个联合分布,即。我想对两列进行分箱(A 的每个分箱包含B 的每个分箱,以此类推以进行联合分布)并将每行中的数字分配给其中一个分箱。最后,我应该得到每个 bin 中行数的分布。

是否有函数可以做到这一点,还是我必须自己写一个方法?

【问题讨论】:

    标签: pandas


    【解决方案1】:

    您可以将AB 剪切到它们自己的垃圾箱中,然后应用groupby 来计算它们:

    # Some sample input data
    np.random.seed(42)
    df = pd.DataFrame(np.random.randint(1, 1000, (1000, 2)), columns=['A', 'B'])
    
    # Assign values in columns A & B into 5 bins each
    # The bins in A are independent of the bins in B
    df['BinA'] = pd.cut(df['A'], 5, labels=[f'a{i}' for i in range(1,6)])
    df['BinB'] = pd.cut(df['B'], 5, labels=[f'b{i}' for i in range(1,6)])
    
    # The count
    df.groupby(['BinA', 'BinB']).count()
    

    结果:

                A   B
    BinA BinB        
    a1   b1    44  44
         b2    39  39
         b3    35  35
         b4    53  53
         b5    41  41
    a2   b1    40  40
         b2    36  36
         b3    34  34
         b4    33  33
         b5    31  31
    a3   b1    35  35
         b2    44  44
         b3    30  30
         b4    31  31
         b5    39  39
    a4   b1    48  48
         b2    38  38
         b3    46  46
         b4    37  37
         b5    43  43
    a5   b1    50  50
         b2    43  43
         b3    36  36
         b4    50  50
         b5    44  44
    

    【讨论】:

      猜你喜欢
      • 2019-06-16
      • 2021-02-15
      • 1970-01-01
      • 2016-06-24
      • 1970-01-01
      • 2017-07-20
      • 2019-03-29
      • 2022-01-21
      • 2016-10-03
      相关资源
      最近更新 更多