【问题标题】:Value error when plotting Dataframe from index从索引绘制数据框时出现值错误
【发布时间】:2018-03-16 19:28:55
【问题描述】:

我有一个具有以下结构的数据框:

A          B
Location1  1
Location2  2
1          3
2          4

在上面的示例中,A 列是索引。我正在尝试使用索引和 B 列生成散点图。此数据框是通过重新采样和平均另一个数据框来制作的,如下所示:

df = df.groupby("A").mean()

现在显然这将索引设置为等于 A 列,我可以使用从此处改编的以下内容来绘制它。 Use index in pandas to plot data

df.reset_index().plot(x = "A",y = "B",kind="scatter", figsize=(10,10))

现在,当我运行它时,它会返回以下内容:

ValueError: scatter requires x column to be numeric

由于索引列旨在成为一列字符串,我可以为其绘制散点图,我该如何解决这个问题?

【问题讨论】:

  • 我不太明白。如果您在 col A 中有类似“Location1”的字符串,那么您希望如何绘制它们?
  • 就像标准散点图一样,A 中的值在 x 上,B 值在 Y 上。

标签: python pandas dataframe


【解决方案1】:

您可能只想选择整数行:

import pandas as pd

d = {'A': ["Location1", "Location2", 1, 2], 'B': [1, 2, 3, 4]}
df = pd.DataFrame(data=d)
df_numeric = df[pd.to_numeric(df.A, errors='coerce').notnull()]

print(df_numeric)

   A  B
2  1  3
3  2  4

按 A 分组:

df_numeric_grouped_by_A = df_numeric.groupby("A").mean()

print(df_numeric_grouped_by_A)

   B
A   
1  3
2  4

【讨论】:

  • 虽然这本身是有效的,但这不是我想要的。我需要将 Location1 和 Location2 字符串作为可以绘制的 x 值。
【解决方案2】:

您可能必须转置 DataFrame,以便将索引(A 列)作为列名,然后计算列的平均值并绘制它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多