Как построить данные таймсерий в кадре данных с помощью matplotlib - PullRequest
0 голосов
/ 07 мая 2020

Я загрузил некоторые данные о ценах на акции в фрейм данных. Я хочу быстро построить цену закрытия по оси Y и дату по оси X.

Вот как выглядит мой фрейм данных:

    Open    High    Low Close   Adjusted_close  Volume
Date                        
1980-12-11  22.000  22.000  22.000  22.000  0.0308  0
1980-12-12  28.750  28.876  28.750  28.750  0.0395  2093900
1980-12-15  27.250  27.376  27.250  27.250  0.0375  785200
1980-12-16  25.250  25.376  25.250  25.250  0.0350  472000
1980-12-17  25.876  26.000  25.876  25.876  0.0359  385900

Когда я набираю df.plot(), он строит график что-то похожее на гистограмму.

Когда я набираю df.plot('Close'), он рисует кучу волнистых линий.

У меня два вопроса:

  1. Как мне быстро построить график цены закрытия по сравнению с датой
  2. Предполагая, что у меня есть два других столбца («Купить» и «Продать»), которые являются логическими флагами, в фрейме данных, как я могу построить точки «Купить» и «Продать», используя произнесите зеленую стрелку вверх и красную стрелку вниз на тот же график ?

Ответы [ 2 ]

1 голос
/ 07 мая 2020

Я только что пробовал с теми же данными. Мне пришлось нарисовать 02 графика на том же рисунке и добавить цвета на основе нового столбца, как показано.


import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

# data wrangling
columns = ['date', 'open', 'high', 'low', 'close', 'adjusted_close', 'volume']
df = pd.read_csv('timeseries.csv', parse_dates=True, names=columns)
#df['date'] = pd.to_datetime(df['date'])
signals = [True, True, False, False, True]
df['signals'] = signals

# plots
plt.plot(df['date'], df['close'])
kcolors = ['green' if s else 'red' for s in df['signals']]
plt.scatter(df['date'], df['close'], c=kcolors)
#rotate label if too long
plt.xticks(rotation=60)
plt.show()

enter image description here

0 голосов
/ 07 мая 2020

То, что вы описали, отлично подходит для меня.

import pandas as pd
df = pd.read_clipboard()
df['Close'].plot()

enter image description here Вы уверены, что преобразовали индекс в pandas datetime? если нет, попробуйте

df.index = pd.to_datetime(df.index)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...