我正在努力将panda中的一个 Dataframe 转换成seaborn的热图(实际上是matplotlib)的正确格式,以制作热图。
我当前的 Dataframe (称为data_yule)是:
Unnamed: 0 SymmetricDivision test MutProb value
3 3 1.0 sackin_yule 0.100 -4.180864
8 8 1.0 sackin_yule 0.050 -9.175349
13 13 1.0 sackin_yule 0.010 -11.408114
18 18 1.0 sackin_yule 0.005 -10.502450
23 23 1.0 sackin_yule 0.001 -8.027475
28 28 0.8 sackin_yule 0.100 -0.722602
33 33 0.8 sackin_yule 0.050 -6.996394
38 38 0.8 sackin_yule 0.010 -10.536340
43 43 0.8 sackin_yule 0.005 -9.544065
48 48 0.8 sackin_yule 0.001 -7.196407
53 53 0.6 sackin_yule 0.100 -0.392256
58 58 0.6 sackin_yule 0.050 -6.621639
63 63 0.6 sackin_yule 0.010 -9.551801
68 68 0.6 sackin_yule 0.005 -9.292469
73 73 0.6 sackin_yule 0.001 -6.760559
78 78 0.4 sackin_yule 0.100 -0.652147
83 83 0.4 sackin_yule 0.050 -6.885229
88 88 0.4 sackin_yule 0.010 -9.455776
93 93 0.4 sackin_yule 0.005 -8.936463
98 98 0.4 sackin_yule 0.001 -6.473629
103 103 0.2 sackin_yule 0.100 -0.964818
108 108 0.2 sackin_yule 0.050 -6.051482
113 113 0.2 sackin_yule 0.010 -9.784686
118 118 0.2 sackin_yule 0.005 -8.571063
123 123 0.2 sackin_yule 0.001 -6.146121
我使用matplotlib的尝试是:
plt.pcolor(data_yule.SymmetricDivision, data_yule.MutProb, data_yule.value)
它抛出了错误:
ValueError: not enough values to unpack (expected 2, got 1)
这次海上袭击是
sns.heatmap(data_yule.SymmetricDivision, data_yule.MutProb, data_yule.value)
其中:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
这看起来很简单,因为两个函数都需要矩形数据集,但显然我遗漏了一些东西。
4条答案
按热度按时间bq8i3lrv1#
使用
pandas.DataFrame.pivot
(不聚合values=
)或pandas.DataFrame.pivot_table
(聚合values=
)将 Dataframe 从长格式重新调整为宽格式。索引将位于y轴上,列将位于x轴上。有关概述,请参见Reshaping and pivot tables。然后,您可以将二维数组(或DataFrame)传递给
seaborn.heatmap
或plt.pcolor
:收益率
ajsxfq5m2#
使用
.grouby()
和.unstack()
的另一个选项svdrlsy43#
我必须创建一个热图来表示DecisionTreeClassifier模型的超参数调优结果,超参数为['max_depth','min_samples_split']。表示模型精度的指标为auc_roc_score。
我们将使用seaborn heatmap为sns.heatmap()创建一个数据集。
我们使用pandas.pivot_table()将DataFrame转换为pandas。在制作热图之前要做的操作之一是使用Pandas的转换功能来重塑数据以制作热图。
我在编辑中添加了plt.xlabel()& plt.ylabel()。很抱歉,现在显示在下面的图像中。顺便说一句,这个可以工作。如果你还没有尝试一次
xxb16uws4#
使用
pd.DataFrame.pivot()
透视数据后,还可以使用pd.DataFrame.style
创建热图。加载数据
透视数据
创建热图
axis=None
表示使用表中的所有值创建内嵌条形图