gpt4 book ai didi

python - 具有匹配列的多个数据集的相关矩阵热图

转载 作者:行者123 更新时间:2023-11-28 16:20:04 26 4
gpt4 key购买 nike

如果我们有三个数据集:

X = pd.DataFrame({"t":[1,2,3,4,5],"A":[34,12,78,84,26], "B":[54,87,35,25,82], "C":[56,78,0,14,13], "D":[0,23,72,56,14], "E":[78,12,31,0,34]})
Y = pd.DataFrame({"t":[1,2,3,4,5],"A":[45,24,65,65,65], "B":[45,87,65,52,12], "C":[98,52,32,32,12], "D":[0,23,1,365,53], "E":[24,12,65,3,65]})
Z = pd.DataFrame({"t":[1,2,3,4,5],"A":[14,96,25,2,25], "B":[47,7,5,58,34], "C":[85,45,65,53,53], "D":[3,35,12,56,236], "E":[68,10,45,46,85]})

其中“t”是一个索引。

如何输出类似于 seaborn 示例的相关矩阵热图: enter image description here

只是轴看起来像这样:

http://seaborn.pydata.org/examples/network_correlations.html

最佳答案

X = pd.DataFrame({"t":[1,2,3,4,5],"A":[34,12,78,84,26], "B":[54,87,35,25,82], "C":[56,78,0,14,13], "D":[0,23,72,56,14], "E":[78,12,31,0,34]})
Y = pd.DataFrame({"t":[1,2,3,4,5],"A":[45,24,65,65,65], "B":[45,87,65,52,12], "C":[98,52,32,32,12], "D":[0,23,1,365,53], "E":[24,12,65,3,65]})
Z = pd.DataFrame({"t":[1,2,3,4,5],"A":[14,96,25,2,25], "B":[47,7,5,58,34], "C":[85,45,65,53,53], "D":[3,35,12,56,236], "E":[68,10,45,46,85]})


catted = pd.concat([d.set_index('t') for d in [X, Y, Z]], axis=1, keys=['X', 'Y', 'Z'])
catted = catted.rename_axis(['Source', 'Column'], axis=1)

corrmat = catted.corr()

f, ax = plt.subplots()

sns.heatmap(corrmat, vmax=.8, square=True)

sources = corrmat.columns.get_level_values(0)
for i, source in enumerate(sources):
if i and source != sources[i - 1]:
ax.axhline(len(sources) - i, c="w")
ax.axvline(i, c="w")
f.tight_layout()

enter image description here


对评论的回应:
我更改了 XYZ

中的 t
X = pd.DataFrame({"t":[1,2,3,4,5],"A":[34,12,78,84,26], "B":[54,87,35,25,82], "C":[56,78,0,14,13], "D":[0,23,72,56,14], "E":[78,12,31,0,34]})
Y = pd.DataFrame({"t":[6,7,8,9,10],"A":[45,24,65,65,65], "B":[45,87,65,52,12], "C":[98,52,32,32,12], "D":[0,23,1,365,53], "E":[24,12,65,3,65]})
Z = pd.DataFrame({"t":[11,12,13,14,15],"A":[14,96,25,2,25], "B":[47,7,5,58,34], "C":[85,45,65,53,53], "D":[3,35,12,56,236], "E":[68,10,45,46,85]})


catted = pd.concat([d.set_index('t') for d in [X, Y, Z]], axis=1, keys=['X', 'Y', 'Z'])
catted = catted.rename_axis(['Source', 'Column'], axis=1)

corrmat = catted.corr()

f, ax = plt.subplots()

sns.heatmap(corrmat, vmax=.8, square=True)

sources = corrmat.columns.get_level_values(0)
for i, source in enumerate(sources):
if i and source != sources[i - 1]:
ax.axhline(len(sources) - i, c="w")
ax.axvline(i, c="w")
f.tight_layout()

enter image description here

现在又来了,不过我reset_index

X = pd.DataFrame({"t":[1,2,3,4,5],"A":[34,12,78,84,26], "B":[54,87,35,25,82], "C":[56,78,0,14,13], "D":[0,23,72,56,14], "E":[78,12,31,0,34]})
Y = pd.DataFrame({"t":[6,7,8,9,10],"A":[45,24,65,65,65], "B":[45,87,65,52,12], "C":[98,52,32,32,12], "D":[0,23,1,365,53], "E":[24,12,65,3,65]})
Z = pd.DataFrame({"t":[11,12,13,14,15],"A":[14,96,25,2,25], "B":[47,7,5,58,34], "C":[85,45,65,53,53], "D":[3,35,12,56,236], "E":[68,10,45,46,85]})


catted = pd.concat([d.reset_index(drop=True) for d in [X, Y, Z]], axis=1, keys=['X', 'Y', 'Z'])
catted = catted.rename_axis(['Source', 'Column'], axis=1)

corrmat = catted.corr()

f, ax = plt.subplots()

sns.heatmap(corrmat, vmax=.8, square=True)

sources = corrmat.columns.get_level_values(0)
for i, source in enumerate(sources):
if i and source != sources[i - 1]:
ax.axhline(len(sources) - i, c="w")
ax.axvline(i, c="w")
f.tight_layout()

enter image description here

关于python - 具有匹配列的多个数据集的相关矩阵热图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41019902/

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