Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用matplotlib的百分比直方图,轴的一个输入是两列的组合_Python_Matplotlib_Dataframe - Fatal编程技术网

Python 使用matplotlib的百分比直方图,轴的一个输入是两列的组合

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),类值为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()