【问题标题】:Pandas multi labeled data to heatmap熊猫多标记数据到热图
【发布时间】:2022-01-15 10:15:42
【问题描述】:

我有以下数据结构:

每一行代表一个注释。如果用户使用标签 2 和 3 标记数据(参见第二行,即行索引 1),则数据集将为 1 1 0 0 0 0 0。

我想以此制作热图,以查看哪些标签被密切注释。我认为得到的 df 应该是 7x7。(我尝试过使用 np.corrcoef,我尝试过旋转数据,可能只是我没有问对问题。)

感谢任何帮助,谢谢!

前5行数据:

df = [{'L3': 1},
 {'L2': 1, 'L3': 1},
 {'L7': 1},
 {'L1': 1, 'L4': 1},
 {'L1': 1, 'L2': 1}]
df = pd.DataFrame(df)

【问题讨论】:

  • 您好,很难从图像中复制数据。此外,np.corr 不存在。另外,你没有说你的尝试出了什么问题。另外,你在找df.corr()吗?
  • @Neither 嗨,谢谢!我已经编辑了这个问题。 df.corr 的 np.corrcoef 返回一个用 nan 填充的 7x7 数组。

标签: python pandas numpy heatmap


【解决方案1】:

在将nan 替换为0 后使用corr,否则您将得到一个填充有nan 的矩阵:

corr = df.fillna(0).corr()
print(corr)
plt.colormesh(corr)
plt.show()

# Output
          L1        L2        L3        L4        L5        L6        L7
L1  1.000000  0.010929 -0.011707 -0.000469 -0.024428 -0.004918  0.033066
L2  0.010929  1.000000 -0.028859 -0.012876 -0.000667  0.009042 -0.017563
L3 -0.011707 -0.028859  1.000000 -0.033609  0.017446  0.036202  0.018763
L4 -0.000469 -0.012876 -0.033609  1.000000 -0.035363 -0.009639  0.038593
L5 -0.024428 -0.000667  0.017446 -0.035363  1.000000  0.007565 -0.045324
L6 -0.004918  0.009042  0.036202 -0.009639  0.007565  1.000000 -0.009466
L7  0.033066 -0.017563  0.018763  0.038593 -0.045324 -0.009466  1.000000

为了快速查看,你可以使用matplotlib,但是如果你想产生漂亮的输出,我建议你安装和使用seaborn

设置MRE

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

N = 2000

np.random.seed(2022)
df = pd.DataFrame(np.random.choice([np.NaN, 1], (N, 7), p=[.7, .3]),
                  columns=[f'L{i}' for i in range(1, 8)])

【讨论】:

  • 它能解决你的问题吗?
猜你喜欢
  • 2019-01-18
  • 2017-09-05
  • 1970-01-01
  • 1970-01-01
  • 2021-09-26
  • 1970-01-01
  • 2021-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多