Почему я получаю KeyError при попытке нарисовать диаграмму рассеяния? - PullRequest
2 голосов
/ 13 апреля 2019

Я пытаюсь создать простую диаграмму рассеяния и получить KeyError.

Я пытался выяснить, относится ли это к функции "группа", которая содержит четыре класса, но это не такпоэтому я не уверен, в чем здесь проблема.


from sklearn.datasets import load_iris

iris = load_iris()
iris_nparray = iris.data
iris_dataframe = pd.DataFrame(iris.data, columns=iris.feature_names)
iris_dataframe["group"] = pd.Series([iris.target_names[k] for k in iris.target], dtype = "category")

colors_palete = {0:"red", 1:"yellow", 2:"blue"}
colors = [colors_palete[c] for c in iris_dataframe["group"]]
simple_scatterplot = iris_dataframe.plot(kind = "scatter",x="petal length (cm)", y="petal width (cm)", c =colors)

Ожидается:

A nice colorful scatterplot

Фактический результат:

KeyError                                  Traceback (most recent call last)
<ipython-input-128-818f07044064> in <module>
      1 colors_palete = {0:"red", 1:"yellow", 2:"blue"}
----> 2 colors = [colors_palete[c] for c in iris_dataframe["group"]]
      3 simple_scatterplot = iris_dataframe.plot(kind = "scatter",x="petal length (cm)", y="petal width (cm)", c =colors)

<ipython-input-128-818f07044064> in <listcomp>(.0)
      1 colors_palete = {0:"red", 1:"yellow", 2:"blue"}
----> 2 colors = [colors_palete[c] for c in iris_dataframe["group"]]
      3 simple_scatterplot = iris_dataframe.plot(kind = "scatter",x="petal length (cm)", y="petal width (cm)", c =colors)

KeyError: 'setosa'```

1 Ответ

3 голосов
/ 13 апреля 2019

Ответ прост: ваше цветовое отображение неправильно определено.

iris_dataframe["group"] содержит ['setosa', 'versicolor', 'virginica'].

Соответственно, colors_palete (вы имели в виду «палитра»?) Должно быть:

colors_palete = {'setosa': "red", 'versicolor': "yellow", 'virginica': "blue"}
...