【问题标题】:Key Error:3 while using For to plot using matplotlib.pyplot.scatter关键错误:3 使用 For 绘图时使用 matplotlib.pyplot.scatter
【发布时间】:2017-07-23 08:30:54
【问题描述】:

我有一个包含 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。 有人可以给我一个建议吗?

【问题讨论】:

  • df[df.Halogen==kind] 将查找密钥 True 或 False
  • 我是编码新手,我使用了这里的参考:stackoverflow.com/questions/30313882/…你能解释一下我的代码和参考之间的区别吗?

标签: python matplotlib keyerror


【解决方案1】:

正如您在以下最小示例中所见,问题中的代码可能运行良好。

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

a = np.random.rand(50,8)
df = pd.DataFrame(a)
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[3], d[7], 
                s = 20,
                c = 'red',
                marker=mkr_dict[kind])
plt.show()

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

d.iloc[:,3]

或其名称(在以下情况下,例如d.Dd["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()

【讨论】:

    猜你喜欢
    • 2013-12-26
    • 2018-12-09
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多