Я изучаю знаменитый набор данных 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](https://i.stack.imgur.com/Tciim.png)
Я использовал
#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](https://i.stack.imgur.com/7LYqd.png)
Теперь я хотел бы перевести кадры данных в график, аналогичный приведенному ниже
dataset1 = pd.DataFrame(Setosa_Sepal_Length)
dataset2 = pd.DataFrame(Versicolor_Sepal_Length)
dataset3 = pd.DataFrame(Virginica_Sepal_Length)
Я успешно сгенерировал графики, заменив вышеприведенные наборы данных созданием случайных чисел (например, ниже). У меня проблема с передачей 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()