Python 使用matplotlib的百分比直方图,轴的一个输入是两列的组合
我有一个数据框,其中有一个我试图预测的类值。我对标签1感兴趣。Python 使用matplotlib的百分比直方图,轴的一个输入是两列的组合,python,matplotlib,dataframe,Python,Matplotlib,Dataframe,我有一个数据框,其中有一个我试图预测的类值。我对标签1感兴趣。 我试图确定回合是否对给定的键值起作用。 对于给定的键值(如1)和圈数(如1),类值为1的圈数百分比是多少 例如,对于给定的数据 key=1,turn=1,8/11有一个类标签1 键=1,圈数=2,5/6有一个类标签1 如何绘制此类数据的百分比直方图? 我知道使用matplotlib的法线直方图 import matplotlib matplotlib.use('PS') import matplotlib.pyplot as plt
我试图确定回合是否对给定的键值起作用。 对于给定的键值(如1)和圈数(如1),类值为1的圈数百分比是多少 例如,对于给定的数据 key=1,turn=1,8/11有一个类标签1
键=1,圈数=2,5/6有一个类标签1 如何绘制此类数据的百分比直方图? 我知道使用matplotlib的法线直方图
import matplotlib
matplotlib.use('PS')
import matplotlib.pyplot as plt
plt.hist()
但是我将使用什么值来获得百分比直方图呢
dataframe中的示例列
钥匙=[
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
2.
2.
2.
2.
2.
2.
2.
2.
2.
2.
2.
2.
2.
2.
2.
2.
2.
2.
2.
2.
2.
2.
2.
2.
2.
2.
2.
2.
2.
]
转向=[
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
2.
2.
2.
2.
2.
2.
3.
3.
3.
3.
3.
3.
3.
3.
3.
3.
3.
3.
3.
3.
4.
4.
4.
4.
4.
4.
1.
2.
2.
2.
2.
2.
2.
3.
3.
3.
3.
3.
3.
3.
3.
3.
3.
3.
4.
4.
4.
4.
4.
4.
4.
4.
4.
4.
4]
类别=[0
1.
0
0
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
0
1.
1.
0
0
1.
1.
0
1.
0
1.
1.
0
1.
1.
0
0
1.
0
1.
0
0
0
0
0
1.
1.
1.
1.
0
1.
1.
0
0
1.
0
0
0
0
0
1.
0
1.
1.
0
0
1.
1.
1.
0
0]由于链接问题中的概念显然不是您需要的,另一种方法是生成饼图,如下所示
我可能检查了上面的链接,但是我有3个栏要考虑的是一个图,而上面的链接只有2个栏。问题是你的问题不够清楚,不能给你答案,所以你需要用2到3个列来调整这个例子,这很容易。除非问题是ED,我仍然认为这是一个重复。也许你先解释一下你的百分比直方图的意思。如果我理解正确,这就是链接问题答案中所显示的情况。如果您认为不是,请描述问题,为什么使用计算不同直方图并对其进行规范化的方法对您没有帮助。还要确保清楚地说明输出应该是什么样子。我将其重新定义为:对于每个键,都有一些圈,因此键+圈形成一个组。在这个组中,每一行都有一些类标签。对于数据帧中的每一个这样的组,我想绘制有多少行的值为1。示例key=1,turn=1,8/11有一个类标签1。键=1,圈数=2,5/6有一个类标签。显示此百分比直方图的最佳绘图是什么。链接问题只使用数据框列中的数字。我没有这样的专栏。谢谢。这将是有趣的,看看我的数据。但我有100个关键点,每个都有6个旋转,因此我在考虑某种直方图,它可以让我跨越所有关键点和旋转。有可能有一个绘图,我可以组合所有的键,然后依次显示每个类的百分比吗?一切都是可能的。然而,由于你反对相关问题解决问题的方式,也忽略了我的大部分评论,这些评论旨在帮助你澄清你的问题,我恐怕没有什么可以为你做的。作为最后的手段,你当然可以画出这样的情节,包括一个图像,而不是描述你的意思。对不起,我不是这个意思。我非常感谢您的帮助,但我只是matplotlib的新手,因此无法很好地解释它。我想要一个类似于链接问题的图,其中清楚地显示了变量对class属性的影响。如果我把每一行看作一个句子,每一个句子由多个句子组成,那么在一个回合中,有多少百分比的句子在数据集上得到一个1的类标签。
key=[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 ]
turn=[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4]
clas=[0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0]
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df=pd.DataFrame({"key":key, "turn":turn, "class":clas})
piv = pd.pivot_table(df, values="class", index="key", columns="turn")
print piv
fig, axes = plt.subplots(ncols=4, nrows=2)
for i in range(2):
axes[i,0].set_ylabel("key {}".format(i+1))
for j in range(4):
pie = axes[i,j].pie([piv.values[i,j],1.-piv.values[i,j]], autopct="%.1f%%")
axes[i,j].set_aspect("equal")
axes[0,j].set_title("turn {}".format(j+1))
plt.legend(pie[0],["class 1","class 0"], bbox_to_anchor=(1,0.5), loc="right",
bbox_transform=plt.gcf().transFigure)
plt.show()