KeyError:'输入'在Python中绘制带有分组x轴的散点图

时间:2017-08-22 14:45:11

标签: python pandas matplotlib

我想用x和y轴绘制散点图,x轴分组。 x轴将是三种类型(例如,h,o,c),可通过ID列识别。 y轴将具有每个ID的平均值。

此处的示例数据:

       id   sum       mean    color  type
0     109  2852    5.301115     r      h
1     110  3162    5.877323     r      h
2     111  1997    3.711896     b      o

Y轴将是"意思是"列值和X轴将被分组" id"值。当我在下面运行我的代码时,会产生错误:

 File "pandas\index.pyx", line 154, in pandas.index.IndexEngine.get_loc (pandas\index.c:4279)
 File "pandas\src\hashtable_class_helper.pxi", line 732, in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:13742)
 File "pandas\src\hashtable_class_helper.pxi", line 740, in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:13696)
 KeyError: 'type'

在这里'我的代码:

df.set_index('type', inplace=True)
...
col = df['type'].map({'h':'r', 'o':'b', 'c':'y'})
ax = df.plot.scatter(x='type', y='mean', c=col)

1 个答案:

答案 0 :(得分:3)

散点图的x轴需要一个数值。 您可以通过为值创建数字ID并将其映射回带有标签

的图表来绕过此操作
df['type'] = df['type'].astype('category')
df['type_id'] = df.type.cat.codes
plt.scatter(x=df['type_id'], y=df['mean'], color=df['color'])
plt.xticks(df['type_id'].tolist(), df['type'], rotation=90)
plt.show()

enter image description here