Key Error:3 while using For to plot using matplotlib.pyplot.scatter
Key Error:3 while using For to plot using matplotlib.pyplot.scatter
我有一个包含 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。
有人可以给我建议吗?
如您在以下最小示例中所见,问题中的代码可能 运行 没问题。
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]
之类的操作将失败。然后,您需要 select 该列的索引
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()
我有一个包含 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。 有人可以给我建议吗?
如您在以下最小示例中所见,问题中的代码可能 运行 没问题。
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]
之类的操作将失败。然后,您需要 select 该列的索引
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()