Как построить только рабочие часы и будни в pandas - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть почасовые данные о запасах. Мне нужно а) отформатировать его так, чтобы matplotlib игнорировал выходные и нерабочие часы и б) почасовую частоту.

Проблема: в настоящее время график выглядит забитым, и я подозреваю, что это потому, что matplotlib учитывает 24 часа вместо 8 и 7 дней в неделю вместо рабочих дней.

Как мне указать pandas учитывать только рабочие часы, M-F?

Как я отображаю данные: я циклически перебираю список фреймов данных о ценах, строю графики каждый фрейм данных:

mm = 0
for ii in df:

    Ddate = ii['Date']
    Pprice = ii['Price']
    d = Ddate.to_list()
    p = Pprice.to_list()

    dates = make_dt(d)
    prices = unstring(p)
    plt.figure()
    plt.plot(dates,prices)
    plt.title(stocks[mm])
    plt.grid(True)
    plt.xlabel('Dates')
    plt.ylabel('Prices')
    mm += 1

график: enter image description here

1 Ответ

0 голосов
/ 04 февраля 2020

Чтобы получить рабочие дни, вы можете использовать следующую функцию:

df["IsBDay"] = bool(len(pd.bdate_range(df['date'], df['date'])))

// Над строкой следует добавить новый столбец в DF как IsBday. // Вы также можете использовать лямбда-выражение для проверки и иметь новый столбец для BDay.

df['IsBDay'] = df['date'].apply(lambda x: 'True' if bool(len(pd.bdate_range(x, x))) else 'False')

Теперь создайте новый DF, который будет иметь только значение столбца True IsBday и другие столбцы.

df[df.IsBday != 'False']

Теперь ваш DF готов к заговору. Надеюсь, это поможет.

...