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

发布于 2021-01-29 14:09:58

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

             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个匹配。等等。

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

关注者
0
被浏览
535
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    它只是矩阵乘法:

    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]
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看