Как отобразить верхний %1 в другом цвете на точечной диаграмме?

#python #plot #conditional-statements #scatter

Вопрос:

У меня есть два столбца, состоящие из числовых чисел в файле .csv. Давайте представим

колонка1 = [1, 2, 3, 7, 9, 3, 14, 7, 9]

колонка2 = [2, 5, 2, 67, 8, 3, 6, 5, 2]

столбцы 1 и 2 в основном являются временными рядами, но в файле csv нет номера индекса. Я хотел бы отобразить значения, которые находятся в верхней части %1, в разных цветах.

Итак, мой код таков

 features = ['column1' , 'column2']
df = pd.read_csv('XX.csv', usecols=features, sep=';', encoding='ISO-8859-1')
for features in df:
    new_df = df[[features]].quantile(q=.99, axis=0, numeric_only=True).iloc[0]
 

Этот код создает два пороговых числа для каждого столбца, которые представляют верхний %1 каждого столбца. И следующим шагом является построение точечной диаграммы для столбцов a и b, и если число превышает эти два порога для каждого столбца, покажите его другим цветом.
Я тут все испортил.

Ответ №1:

Добавьте столбец в свой фрейм данных, чтобы указать цвета при определенных условиях. Здесь я истолковал ваши требования так, что если либо column1 или column2 превышает соответствующий порог, то оно приобретает другой цвет. Я жестко закодировал пороговые значения, чтобы код было легче читать; вы, вероятно, использовали new_df["column1"] бы и new_df["column2"] в данных условиях.

 dftest = pd.DataFrame({
    "column1": [1, 2, 3, 7, 9, 3, 14, 7, 9],
    "column2": [2, 5, 2, 67, 8, 3, 6, 5, 2]
}) # set up test df
dftest["colour"] = "green" # put green everywhere in the new colour column
dftest.loc[(dftest["column1"] > 13.6) | (dftest["column2"] > 62),"colour"] = "red" # overwrite with red where you need to.
dftest.plot.scatter(x="column1", y="column2", c=dftest["colour"])
 

Выход:

введите описание изображения здесь

Комментарии:

1. Это прекрасно работает. Однако, что делать, если у нас больше двух столбцов. Представьте, что есть 15 таких столбцов, и мы должны показать это в матрице путаницы?

2. Думаю, мне это удалось. Большое вам спасибо 🙂

3. Я рад, что ты решил свою проблему. Поскольку вы новый пользователь, я надеюсь, вы не возражаете, если я укажу, что считается хорошим этикетом на этом сайте: если я ответил на ваш вопрос так, как было задано (и в нем упоминалось только 2 столбца, а не 15), пожалуйста, подумайте о том, чтобы проголосовать и/или принять ответ.