Source code for passengersim.summaries.services

from __future__ import annotations

import pandas as pd

from passengersim.summaries.generic import GenericSimulationTables


[docs] class SimTabServices(GenericSimulationTables): @property def services(self) -> pd.DataFrame: """Service-level summary data, aggregated by carrier and operating leg o-d. A 'service' is an aggregation of all legs sharing a unique combination of carrier, origin, and destination. This table aggregates data from the legs table to the service level. """ if "services" not in self._data: df = self.legs.groupby(["carrier", "orig", "dest"]).agg( frequency=("gt_sold", "count"), distance=("distance", "mean"), gt_sold=("gt_sold", "sum"), gt_capacity=("gt_capacity", "sum"), gt_sold_local=("gt_sold_local", "sum"), gt_revenue=("gt_revenue", "sum"), ) df["capacity"] = df["gt_capacity"] / self.n_total_samples df["avg_sold"] = df["gt_sold"] / self.n_total_samples df["avg_sold_local"] = df["gt_sold_local"] / self.n_total_samples df["avg_revenue"] = df["gt_revenue"] / self.n_total_samples df["avg_load_factor"] = 100.0 * df["gt_sold"] / df["gt_capacity"] df["avg_local"] = 100.0 * df["gt_sold_local"] / df["gt_sold"] self._data["services"] = df return self._data["services"]