Вот метод для преобразования ваших данных в фрейм данных с использованием itertools.groupby()
и pandas
:
from itertools import groupby
import pandas as pd
with open('test.txt', 'r') as f:
chunks = [list(group) for k, group in groupby(f.readlines(), lambda x: x=='\n') if not k]
chunks = [dict([tuple(i.strip().split(': ')) for i in chunk]) for chunk in chunks]
df = pd.DataFrame(chunks).astype(float)
Возвращает:
Accuracy Error Rate Not Classified Total time numIters numSurvivors popSize \
0 96.84 3.16 0.00 5.367 100 0 1000
1 96.84 3.16 0.00 4.472 100 0 1000
2 92.11 7.89 0.00 4.46 100 0 1000
probCrossover probMutation tournamentSize
0 0.9 0.1 10
1 0.9 0.1 10
2 0.9 0.1 10
Затем вы можете легко рассчитать среднеевот так:
df[['Accuracy','Error Rate','Not Classified','Total time']].mean()
Возвращает:
Accuracy 95.263333
Error Rate 4.736667
Not Classified 0.000000
Total time 4.766333
dtype: float64