Updated 4 years ago
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]