Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.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 如何在一个条形图(子图)中进行两个分类_Python_Pandas_Matplotlib_Bar Chart - Fatal编程技术网

Python 如何在一个条形图(子图)中进行两个分类

Python 如何在一个条形图(子图)中进行两个分类,python,pandas,matplotlib,bar-chart,Python,Pandas,Matplotlib,Bar Chart,我需要关于条形图代码的帮助。我的第一个问题是尝试在活动井和非活动井之间进行代码排序。我的第二个问题是在同一条形图上创建两个子类别(活动和非活动)。这是我到目前为止写的东西。任何帮助都会很好 我想如果我理解正确的话,你是在试图计算一个给定县的活跃井和非活跃井的数量 首先,您正在呼叫的列中有一个输入错误。在您的数据中,列是“油井状态”,而不是“油井状态” 接下来,您需要根据活动/非活动状态对数据进行排序,而不是仅使用df['Well status']调用列。 要做到这一点,您可以使用以下代码行 A

我需要关于条形图代码的帮助。我的第一个问题是尝试在活动井和非活动井之间进行代码排序。我的第二个问题是在同一条形图上创建两个子类别(活动和非活动)。这是我到目前为止写的东西。任何帮助都会很好


我想如果我理解正确的话,你是在试图计算一个给定县的活跃井和非活跃井的数量

首先,您正在呼叫的列中有一个输入错误。在您的数据中,列是
“油井状态”
,而不是
“油井状态”

接下来,您需要根据活动/非活动状态对数据进行排序,而不是仅使用
df['Well status']
调用列。 要做到这一点,您可以使用以下代码行

Active = df[df['Well Status'].str.match('ACTIVE')]
Inactive = df[df['Well Status'].str.match('INACTIVE')]
这将返回整个数据帧,但仅返回列
'Well Status'
分别等于active/inactive的行

要回答您的第二个问题,我们需要将我们的两个活动和非活动按县排序。对于您提供的数据,只有一个县,因此您可以使用以下数据

terry_active = Active[Active['County'].str.match('TERRY (TX)')]
terry_inactive = Inactive[Inactive['County'].str.match('TERRY (TX)')]
如果有更多的县,则可以使用相同的方法,但只需更改变量名,然后更改排序依据的县/教区。现在这当然是硬编码的,所以对于3+个县,我会设置一个函数或for循环来对每个县进行排序,因为在我的经验中,硬编码只对快速项目有用。我通常尝试编写可重用的更通用的代码,但在紧急情况下,一些硬编码可以工作,并且通常帮助我编写更通用的代码

然后,可以使用以下代码进行绘图

counties = ['Terry (TX)']
x = np.arange(len(counties))
fig, ax = plt.subplots()
ax.bar(x - 0.5/2, len(terry_active), label='Active', width=0.5)
ax.bar(x + 0.5/2, len(terry_inactive), label='Inactive', width=0.5)
ax.set_xticks(x)
ax.set_xticklabels(counties)
ax.set_xlabel('County')
ax.set_ylabel('# of Wells')
ax.set_title('Wells by County')

plt.legend()
plt.show()

这也是硬编码的。要在提供的数据中执行多个县,您需要将其他县添加到县列表中,然后重复步骤进行排序以查找井的总数。然后只需添加更多的
ax.bar()
代码行,这样就可以制作每个条。

请不要将数据/代码作为图像发布,而是直接将其作为文本发布在此处。您的
活动的
将与
非活动的
相同-您必须使用此列的数据告诉熊猫如何区分它们。另外:使用作为开始。Pandas通常与matplotlib配合使用,您不必在matplotlib中单独绘制条形图。对此我很抱歉。前几天我发布了一个问题,有人告诉我不要将google drive链接发布到excel工作表上,而是发布它的图片。还有关于活动/非活动部分,这是我在编码时遇到的问题之一。我不知道如何区分同一列中的项目。另一个人错了;我们之所以想要文本,或者,如果需要更大的数据集,需要一个到数据文件的链接,是有原因的。例如,
str(2)
int(2)
在图像中看起来完全相同,但在函数中的行为可能不同。我有没有提到这是一个好的开始?我也不太确定你想策划什么。
Active
vs
Inactive
entries的数量?因此我需要X轴作为县名称,而Active/Inactive wells应该是Y轴。这意味着每个县都应该有两个栏,说明其拥有的活跃/非活跃油井的数量。一个例子是显示每个县男女人数的条形图。
counties = ['Terry (TX)']
x = np.arange(len(counties))
fig, ax = plt.subplots()
ax.bar(x - 0.5/2, len(terry_active), label='Active', width=0.5)
ax.bar(x + 0.5/2, len(terry_inactive), label='Inactive', width=0.5)
ax.set_xticks(x)
ax.set_xticklabels(counties)
ax.set_xlabel('County')
ax.set_ylabel('# of Wells')
ax.set_title('Wells by County')

plt.legend()
plt.show()