加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 熊猫:行和总和的外积

发布时间:2020-12-20 13:40:03 所属栏目:Python 来源:网络整理
导读:在Pandas中,我正在尝试手动编码卡方检验.我在下面的数据框中比较第0行和第1行. data 2 3 5 10 300 3 0 6 5 01 33324 15833 58305 54402 38920 为此,我需要计算每个单元格的预期单元格数量:cell(i,j)= rowSum(i)* colSum(j)/ sumAll.在R中,我可以通过使用out
在Pandas中,我正在尝试手动编码卡方检验.我在下面的数据框中比较第0行和第1行.

data
       2      3      5      10     30
0      3      0      6      5      0
1  33324  15833  58305  54402  38920

为此,我需要计算每个单元格的预期单元格数量:cell(i,j)= rowSum(i)* colSum(j)/ sumAll.在R中,我可以通过使用outer()产品来做到这一点:

Exp_counts <- outer(rowSums(data),colSums(data),"*")/sum(data)    # Expected cell counts

我用numpy的外部产品函数来模仿上面R代码的结果:

import numpy as np
pd.DataFrame(np.outer(data.sum(axis=1),data.sum(axis=0))/ (data.sum().sum()),index=data.index,columns=data.columns.values)
       2      3      5      10     30
0      2      1      4      3      2
1  33324  15831  58306  54403  38917

是否有可能通过Pandas功能实现这一目标?

解决方法

仅使用Pandas内置方法的完整解决方案:

def outer_product(row):
    numerator = df.sum(1).mul(row.sum(0))
    denominator = df.sum(0).sum(0)
    return (numerator.floordiv(denominator))

df.apply(outer_product)

Image

时间:对于100万行DF.

enter image description here

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读