当前位置: 首页 > 面试题库 >

来自熊猫数据帧的成对矩阵

牟慎之
2023-03-14
问题内容

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

             Al01 BBR60 CA07 NL219
AAEAMEVAT MP NaN MP MP 
AAFEDLRLL NaN NaN NaN NaN
AAGAAVKGV NP NaN NP NP 
ADRGLLRDI NaN NP NaN NaN 
AEIMKICST PB1 NaN NaN PB1 
AFDERRAGK NaN NaN NP NP 
AFDERRAGK NP NaN NaN NaN

一千行左右,六列。大多数单元格为空(NaN)。考虑到不同的列中包含文本,我想知道每列中文本的概率是多少。例如,这里的小片段将产生如下内容:

            Al01 BBR60 CA07 NL219
Al01 4 0 2 3
BBR60 0 1 0 0
CA07 2 0 3 3
NL219 3 0 3 4

也就是说,Al01栏中有4个匹配项;在这4个匹配中,BBR60列中没有匹配,CA07列中也没有匹配,NL219列中有3个匹配。等等。

我可以遍历每一列并使用值构建字典,但这似乎很笨拙。有没有更简单的方法?


问题答案:

它只是矩阵乘法:

import pandas as pd
df = pd.read_csv('data.csv',index_col=0, delim_whitespace=True)
df2 = df.applymap(lambda x: int(not pd.isnull(x)))
print df2.T.dot(df2)

输出:

           Al01  BBR60  CA07  NL219
Al01      4      0     2      3
BBR60     0      1     0      0
CA07      2      0     3      3
NL219     3      0     3      4

[4 rows x 4 columns]


 类似资料:
  • 我有这个熊猫数据框 这就给了我: 我该怎么办 做一个新的人物, 将标题添加到图"标题这里" 以某种方式创建一个映射,这样标签不是29,30等,而是“29周”,“30周”等。 将图表的较大版本保存到我的计算机(例如10 x 10英寸) 这件事我已经琢磨了一个小时了!

  • 假设熊猫数据帧如下所示: 如何将第三行(如row3)提取为pd数据帧?换句话说,row3.shape应该是(1,5),row3.head()应该是:

  • 这似乎是非常基本的知识,但我还是卡住了,尽管我有一些数据处理的理论背景(通过其他软件)。值得一提的是,我是蟒蛇和熊猫图书馆的新手。 我的任务是将系列名称列的值作为单独的列(从长到宽转换)。我花了很长时间尝试不同的方法,但只有错误。 例如: 我犯了一个错误: ...很多短信...通过值的长度是2487175,索引暗示2 有谁能指导我完成这个过程吗?谢谢 它用于代码“mydata=mydata”。pi

  • 我有一个事件日志数据框,每行是一个事件(如查看项目),其中包含列,,以及用户分配项目的。我想创建一个表示所有用户-项目交互的数据框:表示为二维矩阵,每个(i,j)表示用户i和项目j的分数(下图截图)。如果用户尚未看到该产品,则分配NaN。 我试过用循环做这件事,但正如预期的那样,运行时间太长: 有没有更快的方法? 根据评论中的要求,我的数据帧的头部<代码>事件类型与上述分数类似。

  • 我正在使用从h5文件加载的调查数据作为通过熊猫包。在此中,所有行都是单个调查的结果,而列是单个调查中所有问题的答案。 我的目标是将此数据集缩减为更小的,仅包括在某个问题上具有某个描述答案的行,即在本列中具有相同的值。我能够确定具有此条件的所有行的索引值,但我找不到如何删除这些行或仅使用这些行创建新的df。

  • 我正在尝试连接到数据帧。它们看起来像这样 期望的最终目标是: 我一直试图使用pd.merge和。连接函数与on='外'设置不成功