#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), пожалуйста, подумайте о том, чтобы проголосовать и/или принять ответ.