Использование нескольких панелей данных Panda для гистограммы с перекрытием - ValueError: у цвета kwarg должен быть один цвет на набор данных - PullRequest
0 голосов
/ 01 апреля 2020

Я изучаю знаменитый набор данных Iris.

Я только что занялся фильтрацией с Pandas,

Набор данных Iris имеет три разновидности, мне удалось их выделить

#Used for filtering variety column into the separate varieties of flower
Iris_setosa = IrisData.loc[IrisData['variety'] == 'Setosa']
Iris_versicolor = IrisData.loc[IrisData['variety'] == 'Versicolor']
Iris_virginica = IrisData.loc[IrisData['variety'] == 'Virginica']

enter image description here

Я использовал

#Used for filtering the separate varieties of flower and just referencing one column e.g. sepal length
Setosa_Sepal_Length = Iris_setosa.filter(items=['sepal.length'])
Versicolor_Sepal_Length = Iris_versicolor.filter(items=['sepal.length'])
Virginica_Sepal_Length = Iris_virginica.filter(items=['sepal.length'])

и мне удалось создать три кадра данных, аналогичных приведенному ниже.

dataset1

Теперь я хотел бы перевести кадры данных в график, аналогичный приведенному ниже

dataset1 = pd.DataFrame(Setosa_Sepal_Length)
dataset2 = pd.DataFrame(Versicolor_Sepal_Length)
dataset3 = pd.DataFrame(Virginica_Sepal_Length)

Overlapping Histogram

Я успешно сгенерировал графики, заменив вышеприведенные наборы данных созданием случайных чисел (например, ниже). У меня проблема с передачей 50 номеров из наборов данных Iris, которые я извлек, используя Pandas.

dataset1 = randn (50)

dataset2 = randn (50)

dataset3 = randn (50)

См. мой полный код ниже, который генерирует эту ошибку ValueError: цвет kwarg должен иметь один цвет на набор данных. Было предоставлено 50 наборов данных и 1 цвет

import numpy as np
import pandas as pd
from numpy.random import randn
from scipy import stats
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns


# Creating the dataframe 
IrisData = pd.read_csv('IRIScsv.csv')

#Used for filtering variety column into the separate varieties of flower
Iris_setosa = IrisData.loc[IrisData['variety'] == 'Setosa']
Iris_versicolor = IrisData.loc[IrisData['variety'] == 'Versicolor']
Iris_virginica = IrisData.loc[IrisData['variety'] == 'Virginica']

#Used for filtering the separate varieties of flower and just referencing one column e.g. sepal length or sepal width
Setosa_Sepal_Length = Iris_setosa.filter(items=['sepal.length'])
Versicolor_Sepal_Length = Iris_versicolor.filter(items=['sepal.length'])
Virginica_Sepal_Length = Iris_virginica.filter(items=['sepal.length'])

dataset1 = pd.DataFrame(Setosa_Sepal_Length)
dataset2 = pd.DataFrame(Versicolor_Sepal_Length)
dataset3 = pd.DataFrame(Virginica_Sepal_Length)

plt.hist(dataset1, color='indianred',alpha=0.5,bins=50)
plt.hist(dataset2, color='blue',alpha=0.5,bins=50)
plt.hist(dataset3, color='green',alpha=0.5,bins=50)
plt.show()

Буду очень признателен за помощь. Я уверен, что это ошибка ладьи ie. Заранее спасибо.

Я только что нашел исправление, хотя, возможно, есть и более pythoni c способ сделать это

dataset1 = pd.DataFrame(Setosa_Sepal_Length)
dataset2 = pd.DataFrame(Versicolor_Sepal_Length)
dataset3 = pd.DataFrame(Virginica_Sepal_Length)

#converts the dataframes to arrays
dataset1 = dataset1.to_numpy()
dataset2 = dataset2.to_numpy()
dataset3 = dataset3.to_numpy()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...