gpt4 book ai didi

python - 如何用python描述矩阵中的所有二因子列组合(均值、中位数、计数等)?

转载 作者:行者123 更新时间:2023-12-01 04:06:02 31 4
gpt4 key购买 nike

我有一个 pandas 数据框,看起来像这样:

enter image description here

给定行中的每个值要么是相同的数字,要么是 NaN。我想计算数据框中所有两列组合的平均值、中位数和获取计数,其中两列都不是 NaN。

例如,上述数据帧的结果将是:

AB: count: 1, mean: 7, median: 7 
AC: count: 2, mean: 9.5, median: 9.5
BC: count: 2, mean: 9, median: 9

事实上,我的数据框大约有 50k 行长,大约 40 列宽。

如果您想知道,这是与 Stack Overflow 开发者调查相关的工作。 Ami Tavory helped me get to this point.行是受访者。本例中的列是受访者告诉我们他们使用的编程语言。值(value)观就是你的年薪。我正在尝试确定哪种编程语言组合(可能是编码生态系统的代理)支付效果最好。结果将在未来几周内公布。我们真正的开发人员正在忙于构建真实的东西,所以我想我应该借此机会来戳你一下。当我们在下个月左右发布完整的数据转储时,我期待您检查我的工作。

您可以使用以下代码生成示例数据框:

df = pd.DataFrame({'A' : [12,np.nan,np.nan,7],
'B' : [np.nan,11,8,7],
'C' : [12,11,np.nan,7]})

最佳答案

我试图为您提供合理的可扩展性 - 因此使用列表而不是在 pandas 中完成这一切。我认为在 pandas 中执行此操作的唯一好方法将需要大量的行操作,这在 pandas 中非常慢。在这里添加属性相当容易 - 只需在数组中添加一列名为 outarr 的列,并在创建输出数据帧时为其命名。

import pandas as pd, numpy as np
import itertools
df = pd.DataFrame({'A' : [12,np.nan,np.nan,7],
'B' : [np.nan,11,8,7],
'C' : [12,11,np.nan,7]})

cols = df.columns.values #Columns from your dataframe
collist = list(itertools.combinations(cols,2)) #All combinations of columns from your df

#Create numpy array for each two-column combo and calculate count, mean, median
outarr = [0]*len(collist)
for ix, coltuple in enumerate(collist):
a = df[list(coltuple)].dropna().values
outarr[ix] = [a.shape[0],np.mean(a),np.median(a)]

#Create output dataframe
dfout = pd.DataFrame(outarr,index = collist,columns=['count','mean','median'])
dfout

Out[41]:
count mean median
(A, B) 1 7.0 7.0
(A, C) 2 9.5 9.5
(B, C) 2 9.0 9.0

关于python - 如何用python描述矩阵中的所有二因子列组合(均值、中位数、计数等)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35560251/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com