Я хотел бы построить несколько временных рядов (по одному для каждого значения в столбце cat
) на одном графике, но не работал, чтобы сделать это. Мой код на данный момент:
import numpy as np
import pandas as pd
dat = pd.date_range(start='1/1/2018', end='31/12/2018', freq='H')
num = ['A' + str(x).zfill(4) for x in range(len(dat))]
cat = np.random.choice(['A', 'B', 'C', 'D'], len(dat))
df = pd.DataFrame({'date': dat, 'num': num, 'cat':cat}).set_index('date')
print(df.groupby([pd.Grouper(freq='D'), 'cat']).count().unstack().fillna(0).astype(int))
Результат:
num
cat A B C D
date
2018-01-01 7 3 5 9
2018-01-02 6 3 6 9
2018-01-03 11 3 8 2
2018-01-04 2 6 5 11
2018-01-05 4 8 4 8
2018-01-06 8 8 3 5
2018-01-07 5 8 6 5
2018-01-08 3 8 5 8
Я хотел бы построить различные комбинации категорий (cat
), например (A
и B
вместе или C
и D
вместе) на одном графике временного ряда с matplotlib
или seaborn
, но они «застряли» в многоуровневых индексах ...
Есть предложения, как выбрать разные комбинации столбцов и построить их? Может быть, есть способ лучше, чем unstack
данные.
0.24 +
, вы можете добавить.droplevel(0, axis=1)
в цепочку, чтобы избавиться от избыточных уровней индекса. - person Chris A   schedule 24.07.2019