Pandas: построение/аннотирование из DataFrame

У меня есть этот скучный фрейм данных с данными о запасах:

date         close    MA100      buy   sell
2022-02-14   324.95   320.12     0     0
2022-02-13   324.87   320.11     1     0
2022-02-12   327.20   321.50     0     0
2022-02-11   319.61   320.71     0     1

Затем я рисую цены

import pandas as pd
import matplotlib.pyplot as plt

df = ...
df['close'].plot()
df['MA100'].plot()

plt.show()

Все идет нормально... Затем я хотел бы показать маркер на графике, если в этот день была покупка (зеленый) или продажа (красный). Это просто для того, чтобы подчеркнуть, была ли транзакция в этот день. Точная внутридневная цена, по которой произошла сделка, не важна.

Таким образом, координаты x/y могут быть датой и закрытием, если в столбце покупка (продажа) стоит 1.

Я не уверен, как это реализовать. Нужен ли мне цикл для перебора всех строк, где покупка = 1 (продажа = 1), а затем каким-то образом добавить эти совпадения на график (возможно, с аннотацией?)

Я был бы очень признателен, если бы кто-то мог указать мне правильное направление!

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
27
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете запросить фрейм данных для продажи/покупки и точечной диаграммы:

fig, ax = plt.subplots()
df.plot(x='date', y=['close', 'MA100'], ax=ax)
df.query("buy==1").plot.scatter(x='date', y='close', c='g', ax=ax)
df.query("sell==1").plot.scatter(x='date', y='close', c='r', ax=ax)

Выход:

Другие вопросы по теме