Skip to content

Weight

aircraftdetective.calculations.weight

calculate_weight_metrics

calculate_weight_metrics(df)

Calculates weight-related metrics for aircraft data.

Calculates the OEW/MTOW and OEW/Exit Limit ratios for each aircraft in the provided DataFrame, where

Variable Description
OEW Operating Empty Weight
MTOW Maximum Takeoff Weight
Exit Limit Maximum number of pax allowed as per emergency evacuation tests

Parameters:

Name Type Description Default
df DataFrame

DataFrame containing aircraft data with necessary weight columns.

required

Returns:

Type Description
DataFrame

DataFrame with additional weight metrics:

  • OEW/MTOW
  • OEW/Exit Limit

Raises:

Type Description
ValueError

If required columns are missing in the input DataFrame.

Source code in aircraftdetective/calculations/weight.py
def calculate_weight_metrics(
    df: 'pd.DataFrame'
) -> 'pd.DataFrame':
    r"""
    Calculates weight-related metrics for aircraft data.

    Calculates the OEW/MTOW and OEW/Exit Limit ratios for each aircraft in the provided DataFrame, 
    where

    | Variable     | Description                          |
    |--------------|--------------------------------------|
    | OEW          | Operating Empty Weight               |
    | MTOW         | Maximum Takeoff Weight               |
    | Exit Limit   | Maximum number of pax allowed as per [emergency evacuation tests](https://www.easa.europa.eu/en/light/topics/aircraft-emergency-evacuation) |

    Parameters
    ----------
    df : pd.DataFrame
        DataFrame containing aircraft data with necessary weight columns.

    Returns
    -------
    pd.DataFrame
        DataFrame with additional weight metrics:

        - `OEW/MTOW`
        - `OEW/Exit Limit`

    Raises
    ------
    ValueError
        If required columns are missing in the input DataFrame.
    """
    df_func = df.copy()
    required_columns = ['OEW', 'MTOW', 'Pax Exit Limit']
    for col in required_columns:
        if col not in df_func.columns.get_level_values(0):
            raise ValueError(f"Missing required column: {col}")

    df_func['OEW/MTOW'] = df_func['OEW'] / df_func['MTOW']
    df_func['OEW/Exit Limit'] = df_func['OEW'] / df_func['Pax Exit Limit']


    grouped = df_func.groupby('Type', group_keys=False)

    return df_func