in src/lambda.d/inference/func/inferenceApi.py [0:0]
def load_data_from_event(input_event, transactions_id_cols, transactions_cat_cols, dummied_col):
"""Load and transform event data into correct format for next step subgraph loading and model inference input.
input event keys should come from related dataset.]
Example:
>>> load_data_from_event(event = {"transaction_data":[{"TransactionID":"3163166", "V1":1, ...]}, 'card1,card2,,...', 'M2_T,M3_F,M3_T,...')
"""
TRANSACTION_ID = 'TransactionID'
transactions_id_cols = transactions_id_cols.split(',')
transactions_cat_cols = transactions_cat_cols.split(',')
transactions_no_value_cols = [TRANSACTION_ID, 'TransactionDT'] + transactions_id_cols + transactions_cat_cols
dummied_col = dummied_col.split(',')
if input_event['identity_data'] != []:
identities_cols = list(input_event['identity_data'][0].keys())
identities_cols.remove(TRANSACTION_ID)
else:
identities_cols = []
neighbor_cols = [x for x in list(input_event['transaction_data'][0].keys()) if x not in transactions_no_value_cols]
if input_event['identity_data'] != []:
input_event = {**input_event['transaction_data'][0], **input_event['identity_data'][0]}
else:
input_event = {**input_event['transaction_data'][0]}
input_event[TRANSACTION_ID] = f't-{input_event[TRANSACTION_ID]}'
input_event['TransactionAmt'] = np.log10(input_event['TransactionAmt'])
inputDF = pd.DataFrame.from_dict(input_event, orient='index').transpose()
union_id_cols = transactions_id_cols + identities_cols
target_id = inputDF[TRANSACTION_ID].iloc[0]
for dummy in dummied_col:
col_name = dummy[:2]
if inputDF[col_name].iloc[0] == dummy[3:]:
inputDF[dummy] = 1.0
else:
inputDF[dummy] = 0.0
transaction_value_cols = neighbor_cols+dummied_col
transformedDF = inputDF[transaction_value_cols].fillna(0.0).apply(lambda row: json.dumps(dict(row), default=str), axis=1).to_frame('json')
trans_dict = [{TRANSACTION_ID:target_id,
'props_values': transformedDF.iloc[0]['json']}]
logger.debug(f'transformed trans dict is {trans_dict}')
identity_dict = [inputDF[union_id_cols].iloc[0].fillna(0.0).to_dict()]
return trans_dict, identity_dict, target_id, transaction_value_cols, union_id_cols