Мои данные:
Код: Выделить всё
+----+------+-----------+---------+
| | Jobs | Measure | Value |
|----+------+-----------+---------|
| 0 | Job1 | Temp | 43 |
| 1 | Job1 | Humidity | 65 |
| 2 | Job2 | Temp | 48 |
| 3 | Job2 | TempS | 97.4 |
| 4 | Job2 | Humidity | nan |
| 5 | Job3 | Humidity | 55 |
| 6 | Job1 | Temp | 41 |
| 7 | Job1 | Duration | 23 |
| 8 | Job3 | Temp | 39 |
| 9 | Job1 | Temp | nan |
| 10 | Job1 | Humidity | 55 |
| 11 | Job2 | Temp | 48 |
| 12 | Job2 | TempS | 97.4 |
| 13 | Job2 | Humidity | nan |
| 14 | Job3 | Humidity | 55 |
| 15 | Job1 | Temp | nan |
| 16 | Job1 | Duration | 25 |
| 17 | Job3 | Temp | nan |
| 18 | Job2 | Humidity | 61 |
+----+------+-----------+---------+
Код: Выделить всё
from tabulate import tabulate
import pandas as pd
df = pd.read_csv('logs.csv')
#print(df)
print(tabulate(df, headers='keys', tablefmt='psql'))
grouped = df.groupby(['Jobs','Measure'], dropna=True)
average_temp = grouped.mean()
errors = df.groupby(['Jobs','Measure']).agg(lambda x: x.isna().sum())
frames = [average_temp, errors]
df_merged = pd.concat(frames, axis=1).set_axis(['Avg', 'Error'], axis='columns')
print(df_merged)
Код: Выделить всё
Table-1
Avg Error
Jobs Measure
Job1 Duration 24.0 0
Humidity 60.0 0
Temp 42.0 2
Job3 Humidity 55.0 0
Temp 39.0 1
Job2 Humidity 61.0 2
TempS 97.4 0
Temp 48.0 0
Код: Выделить всё
Table-2
Jobs Avg.Temp Err.Temp Avg.Humidity Err.Humidity Avg.Duration ...
Job1 42.0 2 60.0 0 24.0
Job2 48.0 0 61.0 0 -
Job3 39.0 1 55.0 1 -
Подробнее здесь: https://stackoverflow.com/questions/787 ... a-2d-table