Learn practical skills, build real-world projects, and advance your career
import pandas as pd
import numpy as np
def get_nominal_voltage(voltages: np.array):
    candidates_nominal_voltages = np.array([0, 127, 220, 380])
    median_voltage = np.median(voltages)
    delta_voltage = abs(candidates_nominal_voltages - median_voltage)
    result = candidates_nominal_voltages[delta_voltage == min(delta_voltage)]
    return result[0]
voltages = [220.78, 220.90, 330.30, 220.17, 210.90]
get_nominal_voltage(voltages)
220
def voltage_anomalies(data: pd.DataFrame, reference_column: list,
                      nominal_voltage: dict, allowed_variation= 0.1):
    data['anomalies'] = 0
    for column in reference_column:
        data[f'varperc_{column}'] = abs(nominal_voltage[column]- data[column]) / nominal_voltage[column]
        indexs = data[data[f'varperc_{column}'] > allowed_variation].index
        data.loc[indexs, 'anomalies'] = 1
    return data[data.anomalies == 1]