У меня есть случайный алгоритм, который создает файлы .csv. Содержимое файлов выглядит следующим образом:
module, coverage, timestamp
examples.monkey, 32.142857142857146, 1546513589.59586
examples.monkey, 35.714285714285715, 1546513589.609822
examples.monkey, 35.714285714285715, 1546513589.617172
...
util.container, 27.586206896551722 ,1546513594.559889
util.container, 27.586206896551722 ,1546513594.579989
util.container, 27.586206896551722 ,1546513594.598491
У меня от 30 до 100 таких файлов, средняя длина которых составляет пару тысяч строк.
Моя конечная цель - построить графики для каждого измерения, а также построить дополнительный график, показывающий среднее значение всех измерений в данный момент времени.
Для этого мне нужно рассчитать среднее значение всех прогонов за метку времени.
(Конечно, если в файле нет записи для определенной временной метки, я бы просто проигнорировал ее.)
До сих пор я читал все файлы .csv и объединял их в новый фрейм данных.
allFiles = glob.glob("out/*.csv")
dfs = []
for file_ in allFiles:
df = pd.read_csv(file_, index_col=None, header=0)
dfs.append(df)
keys = ["Run " + str(i) for i in range(len(dfs))]
glued = pd.concat(dfs, axis=1, keys=keys)
В результате получается кадр данных, который выглядит следующим образом:
Run 0 ... Run 4
module coverage ... coverage timestamp
0 examples.monkey 32.142857 ... 32.142857 1.546514e+09
1 examples.monkey 35.714286 ... 32.142857 1.546514e+09
2 examples.monkey 35.714286 ... 32.142857 1.546514e+09
3 examples.monkey 35.714286 ... 35.714286 1.546514e+09
4 examples.monkey 35.714286 ... 35.714286 1.546514e+09
Теперь моя первоначальная идея состояла в том, чтобы просто группировать по всем прогонам, группируя по модулям и временным меткам на уровне = 1, по оси = 1. Как это
grouped = glued.groupby(by=["module", "timestamp"], level=1, axis=1)
Однако, это не работает, так как я получаю Keyerror, говоря, что модуль и временная метка отсутствуют. Очевидно, у меня есть некоторые неправильные представления о том, как работать с комбинированными фреймами данных, как это.
Так, как мне лучше всего получить среднее покрытие на модуль и временную метку для нескольких файлов?