在python中获取excel表的交叉概率
Posted
技术标签:
【中文标题】在python中获取excel表的交叉概率【英文标题】:Get crossed probability of an exel table in python 【发布时间】:2018-02-06 15:42:30 【问题描述】:我有一个 Excel 表格 (200x780)。行是飞机上可用的选项,列是序列号。内容是1
或0
,取决于飞机是否有选项。
矩阵:
我想要一个表格,其中选项为行和列,包含两个选项一起出现的概率。像这样的东西,矩阵概率:
我使用pandas.read_excel
读取文件,并考虑将每一行与其他行相乘,但这会花费很多时间。有没有我没发现的 panda 模块可以更轻松地做到这一点?
【问题讨论】:
请提供适当的数据集(或部分)以及您想要的输出。 我不明白除了图片我还能提供关于数据集的更多信息吗? 包括至少 10rowsX10 列作为输入以及相同的所需输出。 欢迎来到 ***。请花时间阅读how to provide a great pandas example 上的这篇文章以及如何提供minimal, complete, and verifiable example 并相应地修改您的问题。 how to ask a good question 上的这些提示也可能有用。 Don't post images of code (or links to them) 【参考方案1】:您可以在 Excel 中非常轻松地做到这一点。
如果Data
表示 200 行乘 780 列的输入数据,则数组公式
=MMULT(Data,TRANSPOSE(Data))/780
为您提供一个 200 行乘 200 列的值矩阵,其中第 (i,j) 个元素(第 i 行和第 j 列)是从输入 Data
的第 i 行和第 j 行获得的.
选择要显示输出的 200*200 单元格范围,在编辑栏中输入公式并同时按下 Ctrl、Shift 和 Enter 键进行提交。您可以将公式中的Data
替换为B2:ADA201
等范围。
【讨论】:
问题是我需要使用Python,这是必需的。但我正在努力更好地重新提出问题。 如果你有一个可用的矩阵乘法库,那么你可以使用它:将你的数据矩阵乘以其转置得到一个 200*200 的矩阵,然后将每个元素除以 780。 我尝试使用 'df.as_matrix' ,然后使用 'df2 = df1.transpose' ,但是当我尝试将 df1 和 df2 相乘时,出现错误:'with block values unsupported operand type (s) for *: 'long' 和 'instancemethod' 抱歉,我对 Python 或您尝试使用的功能一无所知,无法提供进一步帮助。但是,从数学角度来看,矩阵乘法适合您尝试做的事情。矩阵乘法不同于普通乘法,因此您可能需要寻找合适的矩阵乘法方法。以上是关于在python中获取excel表的交叉概率的主要内容,如果未能解决你的问题,请参考以下文章
应用分层10折交叉验证时如何在python中获取所有混淆矩阵的聚合