【发布时间】:2020-02-06 08:39:39
【问题描述】:
所以我想计算在我的图表上绘制的数据点的数量,以保持对图表数据的总跟踪。问题是,与可能具有或不具有 NaN 值的另一列相比,我的数据表将它弄乱到在不同行中有一些 NaN 值的地方。例如:
# I use num1 as my y-coordinate and num1-num2 for my x-coordinate.
num1 num2 num3
1 NaN 25
NaN 7 45
3 8 63
NaN NaN 23
5 10 42
NaN 4 44
#So in this case, there should be only 2 data point on the graph between num1 and num2. For num1 and num3, there should be 3. There should be 4 data points between num2 and num3.
我相信 Matplotlib 不会绘制包含 NaN 值的列的行,因为它的 null (如果我错了,请纠正我,我只能告诉这一点,因为 x 的 0 坐标上没有点和y 轴)。一开始,我认为我可以使用 .count() 并找到两列中较小的一个并将其用作我的跟踪器,但实际上这不会像我上面的示例所示那样工作,因为它甚至可以更少因为一个可能有 NaN 值,而另一个可能有实际值。我做的一些代码示例:
# both x and y are columns within the DataFrame and are used to "count" how many data points are # being graphed.
def findAmountOfDataPoints(colA, colB):
if colA.count() < colB.count():
print(colA.count()) # Since its a smaller value, print the number of values in colA.
else:
print(colB.count()) # Since its a smaller value, print the number of values in colB.
另外,我考虑过使用 .value_count() 但我不确定这是否是我正在寻找的确切功能来完成我想要的。有什么建议吗?
编辑 1:更改数据框名称以使示例更清晰。
【问题讨论】:
-
@TrentonMcKinney 这个问题在我的例子中得到了解释。我只能找到两列中的最低值,但是,另一列中可能有一个 NaN 值,如我的示例中所示,不会被绘制出来。我会改变我的例子来证明这一点。
-
@TrentonMcKinney 好的,我更新了我的示例来解释它是如何不起作用的。看看 num1 有 3 个不是 NaN 的值,而 num2 有 4 个不是 NaN 的值吗?现在,当将这两者绘制在一起时,只会绘制第 3 行和第 5 行(如果您希望它从 0 开始,则为第 2 行和第 4 行)。因此,图上只有 2 个数据点,使用 df.count() 无法找到。
-
@TrentonMcKinney 很抱歉,我留下它是为了表明我尝试了这个问题并且没有得到我想要的结果。那么, df.dropna() 是否完全忽略了我得到的数据框中的整行?我仍然想将该行保留在我的数据框中,因为我有一个很大的 x 列,我仍想为其他图表保留该行。
标签: python pandas matplotlib