关键错误:3使用For进行情节绘制时使用matplotlib.pyplot.scatter

时间:2017-07-23 08:30:55

标签: python matplotlib keyerror

我有一个包含10列的数据集,其中第4列和第8列是我想要绘制的数据,第9列是确定标记类型。

mkr_dict = {'Fluoride': 'D', 'Chloride': 'P', 'Bromide': 'o', 'Iodide' : '^'}
for kind in mkr_dict:
    d = df[df.Halogen==kind]
    plt.scatter(d[3], d[7], 
                s = 20,
                c = 'red',
                marker=mkr_dict[kind])
plt.show()

执行时我一直收到Key Error:3。 有人可以给我一个建议吗?

1 个答案:

答案 0 :(得分:0)

正如您在以下最小示例中所看到的,问题中的代码可能正常运行。

d[3]

但是,如果列没有编号,而是有名称,则d.iloc[:,3] 之类的内容将失败。然后,您需要按索引

选择列
d.D

或其名称(在下面的情况下,例如d["D"]iloc)。使用import numpy as np import matplotlib.pyplot as plt import pandas as pd a = np.random.rand(50,8) df = pd.DataFrame(a, columns=list("ABCDEFGH")) df["Halogen"] = np.random.choice(['Fluoride','Chloride','Bromide','Iodide'], size=50) mkr_dict = {'Fluoride': 'D', 'Chloride': 'P', 'Bromide': 'o', 'Iodide' : '^'} for kind in mkr_dict: d = df[df.Halogen==kind] plt.scatter(d.iloc[:,3], d.iloc[:,7], s = 20, c = 'red', marker=mkr_dict[kind]) plt.show() 的版本:

Notification.requestPermission();